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ć. if( nadajRuch == true ) { gotoxy( 1, 23 ); znak = _getch(); if( znak == 0 ) { znak = _getch(); if( znak == 0x48 ) kierunekRuchu = 4; else if( znak == 0x50 ) kierunekRuchu = 3; else if( znak == 0x4b ) kierunekRuchu = 2; else if( znak == 0x4d ) kierunekRuchu = 1; } nadajRuch = false; ruszajSie = true; }
main.cpp char zn;
textbackground( BLACK );
Swiat * srodowisko = new Swiat();
do { gotoxy( X, Y ); srodowisko->wyswietl(); zn = _getch(); if( zn == 't' ) { srodowisko->wykonajTure(); } } while( zn != 'q' );
return 0;
|
|
C-Objective |
» 2015-04-03 19:35:55 Hmm... Spróbuj narazie sterować literami wasd a potem zabierz się za strzałki :) |
|
Brunon3 |
» 2015-04-03 21:26:03 |
|
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. |
|
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... |
|
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. |
|
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. :)) |
|
« 1 » |