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

Błędne wczytywanie znaków (strzałki)

Ostatnio zmodyfikowano 2015-04-05 11:05
Autor Wiadomość
Malina94
Temat założony przez niniejszego użytkownika
Błędne wczytywanie znaków (strzałki)
» 2015-04-03 16:57:36
Próbuję napisać kod do poruszania pewnym obiektem. Niestety nie mogę poprawnie pobrać strzałek. Debuggowałam ten kod i wynika z niego, że gdy klikam na jakąś strzałkę, to do znaku jest wczytywane -32 i jest to jakieś 'r' z kreseczką u góry... Zmienna znak jest typu char oczywiście. Nie wiem czy to ma jakiś wpływ, ale w main.cpp również mogę wczytywać znaki (poniższy kod znajduje się w innym pliku).

Wczytywanie wygląda tak, że pobieram sobie (main) literkę 't', za pomocą której wywołuję ciąg funkcji, a następnie, jeśli spełniam warunki, to mogę wczytać znak strzałki i pobrane dane odpowiednio przetworzyć.

C/C++
if( nadajRuch == true ) {
    gotoxy( 1, 23 );
    znak = _getch();
    if( znak == 0 ) {
        znak = _getch();
        if( znak == 0x48 )
             kierunekRuchu = 4; //gora
        else if( znak == 0x50 )
             kierunekRuchu = 3; //dol
        else if( znak == 0x4b )
             kierunekRuchu = 2; //lewo
        else if( znak == 0x4d )
             kierunekRuchu = 1; //prawo
       
    }
    nadajRuch = false;
    ruszajSie = true;
}

main.cpp
C/C++
char zn;

textbackground( BLACK );

Swiat * srodowisko = new Swiat();

do {
    //clrscr(); //czyszczenie ekranu
   
    gotoxy( X, Y );
    srodowisko->wyswietl();
   
    zn = _getch();
    if( zn == 't' ) {
        srodowisko->wykonajTure();
    }
   
   
} while( zn != 'q' );

return 0;
P-130008
C-Objective
» 2015-04-03 19:35:55
Hmm... Spróbuj narazie sterować literami wasd a potem zabierz się za strzałki :)
P-130019
Brunon3
» 2015-04-03 21:26:03
@up: A co to ma do rzeczy jakie klawisze będzie sprawdzał..?

--

Co do tematu;

Tabela znaków ASCII (Wikipedia).

-BD.
P-130030
Fireho
» 2015-04-04 00:05:44
Gdy zostanie kliknięta strzałka, funkcja
_getch
 najpierw zwraca 224, a potem w zależności od kierunku 72, 75, 77 lub 80(góra, lewo, prawo, dół). Musisz najpierw użyć
_getch
, sprawdzić czy zwróciło 224(jak nie to od nowa), jeśli tak to znowu użyć
_getch
 i dopiero na podstawie drugiej zwróconej wartości sprawdzić którą strzałkę kliknięto.
P-130057
Malina94
Temat założony przez niniejszego użytkownika
» 2015-04-04 18:26:06
Trochę inaczej to napisałam, wszystko mam w mainie i tak:
- dla W A S D działa jak chcę.
- dla strzałek, nawet jeśli zrobiłam warunek z 224 i normalnymi kodami ASCII, to i tak nie działa, bo łapie to nadal takie coś: http://screenshooter.net/5472572/jjyktfm
Nie wiem co jest nie tak, z takiego kodu jak ten, co podałam wyżej już korzystałam w innym projekcie. Tam wszystko działa normalnie...
P-130129
Fireho
» 2015-04-04 18:44:44
znak
 musi być typu
int
, tak jak wartość zwracana przez
_getch
. Jak chcesz mieć typ
char
, to musisz zamienić 224 na -32.
P-130132
Malina94
Temat założony przez niniejszego użytkownika
» 2015-04-05 11:05:50
Faktycznie, teraz działa z -32. Dziękuję za pomoc. :))
P-130169
« 1 »
  Strona 1 z 1