webForumDet fria alternativet

Få tecknet att blinka

C/C++

5 svar · 422 visningar · startad av orvar

Medlem sedan feb. 2001105 inlägg
Frågan#1

Tjena!

Jag har följande kod:

while(!kbhit()){
     cout << "_";
     Sleep(250);
     cout << rita[j][i];
     Sleep(250);
}

rita[j] *är en char som innehåller det valda tecknet (X). Som det är nu blir det så här när man kommer in i while loopen "_X_X_X_X_X(osv.)" Understrecket och X:et kommer alltså ritas alltså efter varandra. Jag vill ha att de ritas på samma position, alltså att det "blinkar" mellan understrecket och X:et. Har försökt med att flytta tillbaka den horisontella positionen efter varje utritat tecken men det blev samma sak ändå. Har någon en lösning?

Tack!*

Medlem sedan juni 200010 432 inlägg
#2

Prova med

cout << "\b" << rita[j][i];
Medlem sedan feb. 2001105 inlägg
#3

lite bättre :)

den tickar fortarande framåt men nu försvinner de föregående, efter 5 blink ser det alltså ut så här "[mellanrum]X" istället för så här "_X_X_X_X_X".

Men jag vill att blinkningen ska ske på samma ställe hela tiden, alltså först "_" sen efter 250ms "X" och inte " X".

Medlem sedan juni 200010 432 inlägg
#4

OK... det magiska är ju "\b" som backar utskriften ett steg så om du lägger \b även efter rita[j] borde det funka:

cout << "\b" << rita[j][i] << "\b";

:)

Medlem sedan juni 200010 432 inlägg
#5

Eller:

cout << "_";
while(!kbhit()){
     cout << "\b_";
     Sleep(250);
     cout << "\b" <<  rita[j][i];
     Sleep(250);
}

Testa... ;)

Medlem sedan feb. 2001105 inlägg
#6

tackar tackar! :)

632 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
502 ms — ändringar (db)