Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Ruchoma kropka

Ostatnio zmodyfikowano 2014-12-07 18:17
Autor Wiadomość
fornakter
Temat założony przez niniejszego użytkownika
Ruchoma kropka
» 2014-12-06 21:08:44
Witam.
Napisałem taki kawałek kodu
C/C++
while( x < 20 )
{
    key = 0;
    Sleep( 500 );
    system( "cls" );
    gotoxy( x, y );
    if( _kbhit() )
    {
        key = _getch();
        if( key ==( char ) 75 ) cout << "Lewo";
       
    }
    cout << '*';
    x++;
}
problem mam w tym, że po naciśnięciu strzałki w lewo, napis się pojawia po jednym cyklu, a nie za kazdym razem.
Mówiąc inaczej: wciskając kilka razy w jednej chwili strzałkę w lewo, napis pojawia się co drugi raz, zamiast za każdym razem.
Nie wiem czemu tak się dzieje, możecie mi pomóc?
P-122402
pekfos
» 2014-12-06 21:19:33
Bo strzałka w lewo daje 2 znaki, a nie jeden. Najpierw leci kod klawisza specjalnego (224).
P-122403
fornakter
Temat założony przez niniejszego użytkownika
» 2014-12-06 21:35:35
rozumiem, ale dalej nie wiem jak to naprawic
chodzi mi o to, żeby program się nie zatrzymywał, nie czekał na klawisz, ale brał pod uwagę gdy go wcisniemy.
P-122407
pekfos
» 2014-12-06 21:42:15
C/C++
if(( unsigned char ) key == 224 && _kbhit() )
     key = _getch();
Tak jakby to nie wynikało dokładnie z tego, co wcześniej napisałem..
P-122410
fornakter
Temat założony przez niniejszego użytkownika
» 2014-12-07 08:23:16
Nie jestem aż tak dobry w programowaniu, żeby po takim zdaniu znaleźć rozwiązanie.
Po wpisaniu tego kodu nie wyświetla żadnych błędów, ale też program nie reaguje na żaden z klawiszy.
P-122435
pekfos
» 2014-12-07 10:27:17
Podaj kod.
P-122436
fornakter
Temat założony przez niniejszego użytkownika
» 2014-12-07 10:42:05
C/C++
{
   
    int key;
    while( x < 20 )
    {
        key = 0;
        Sleep( 500 );
        system( "cls" );
        gotoxy( x, y );
        if(( unsigned char ) key == 224 && _kbhit() )
        {
            key = _getch();
            if( key ==( char ) 75 ) cout << "Lewo";
           
        }
        cout << '*';
        x++;
    }
    _getch();
}
To jest, że tak powiem aktualny kod.
Kombinowałem ale nie załapał program w żadnym z moich przestawień/zmian[/code]
P-122439
pekfos
» 2014-12-07 11:19:15
C/C++
if(( unsigned char ) key == 224 && _kbhit() )
{
    key = _getch();
    if( key ==( char ) 75 ) cout << "Lewo";
   
}
Prędzej tak:
C/C++
key = _getch();
if(( unsigned char ) key == 224 && _kbhit() )
     key = _getch();

if( key ==( char ) 75 ) cout << "Lewo";
Gdzie podany wcześniej przeze mnie kod jest tylko wstawiony do pierwszego programu z tematu.

C/C++
key = 0;
//..
if(( unsigned char ) key == 224 /* .. */ )
To nie miało za wiele sensu.
P-122444
« 1 » 2
  Strona 1 z 2 Następna strona