sikora9300 Temat założony przez niniejszego użytkownika |
[Allegro] Zmiana klawisza dla gracza » 2011-12-11 00:37:32 hej, napotkałem na pewnie problem z który nie mogę Sobie poradzić a mianowicie robię grę na zaliczenie dla 3 graczy i każdemu przypisany jest inny klawisz pierwszemu enter drugiemu spacja trzeciemu enter_pad i tu jest problem, chciłbym aby podczas gry było można zminić ustawienia klawiszy, np: z entera na "CTRL" ps: chiałbym że było to na zasadzie że kody klawiszy mam w tablicy i pętlą sprawdzam czy któryś z przypisanych klawiszy został wciśnięty int tablica[ 3 ] = { kody klawiszy }; bool blok_klawiszy = false; int gracz;
for( int i = 0; i < 3; i++ ) { if( key[ kody_klawiszy[ i ] ] && blok_klawiszy == false ) { } } |
|
malan |
» 2011-12-11 00:53:30 |
|
sikora9300 Temat założony przez niniejszego użytkownika |
» 2011-12-11 04:36:44 chyba mnie nie zrozumiałeś, chodzi mi o to że chciłbym zmienić ustawienia klawiszy podczas gry, nie chodzi mi o zapis zmiennych do plik!
kiedy chciłem sprawdzić jakie kody mają dane klawisze tak aby wpisać je tablicę to przy klawiszach funkcyjnych nic nie wyskoczyło.. |
|
malan |
» 2011-12-11 10:15:18 |
|
RazzorFlame |
» 2011-12-11 10:15:42 Chlopie ;D Robisz sobie taki cus: #include <allegro.h>
int main() { int klawisz1 = 1; int klawisz2 = 2; int klawisz3 = 3; int zaznaczony_gracz = 1; allegro_init(); while( !key[ KEY_ESC ] ) { if( klawisz1 == 1 ) { } if( key[ KEY_Z ] && zaznaczony_gracz == 1 ) klawisz1 += 1; if( key[ KEY_Z ] && zaznaczony_gracz == 2 ) klawisz2 += 1; if( key[ KEY_Z ] && zaznaczony_gracz == 3 ) klawisz3 += 1; } allegro_exit(); } END_OF_MAIN();
Pisalem to na szybko wiec moga byc male bledy ;D Jak cos to jeszcze napisz. O wlasnie mozesz sobie tez dla zapamietania tych numerkow klawiszy, defina walnac: #define KLAWISZ_JAKISTAM 1 |
|
sikora9300 Temat założony przez niniejszego użytkownika |
» 2011-12-11 15:06:32 @RazzorFlame
właśnie coś takiego mam, ale teraz nie zmianisz ustawień klawisz !!!!!!
chyba że nasz jakiś sposób??? |
|
kamillo121 |
» 2011-12-11 15:22:01 Jeżeli chcesz w miarę elastycznie to zrób tak. Wiesz, że masz trzech graczy i każdy ma kilka "klawiszy" którymi gra, tak ? struct gracz { int sterowanie[ 3 ]; };
Teraz tworzysz sobie trzy obiekty graczy i przypisujesz im jakieś klawisze na początek a w menu zmiany sterowania w grze po prostu zmieniasz np. gracz player[ 3 ]; player[ 0 ].sterowanie[ 0 ] = KEY_Z;
while( ) { if( key[ player[ 0 ].sterowanie[ 0 ] ] ) { } }
To napisałem tak z ręki tylko dla poglądu. |
|
RazzorFlame |
» 2011-12-13 14:51:23 Gdybys dobrze to zrozumial i chwile pokombinowal to bys to zrobil. Popatrz: #include <allegro.h>
enum KLAWISZE { KEY_ESC, }
int main() { KLAWISZE kl1, kl2, kl3; allegro_init(); install_keyboard(); set_color_depth( 32 ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 ); set_palette( default_palette ); clear_to_color( screen, makecol( 255, 0, 0 ) ); while( !key[ KEY_ESC ] ) { if( kl1 == < klawisz > ) { if( < klawisz ktory ma byc wcisniety > ) } else if( kl1 == < klawisz2 > ) { if( < klawisz ktory ma byc wcisniety > ) } if( key[ KEY_Z ] && kl1 == < nr_klawisza > ) } allegro_exit(); } END_OF_MAIN();
Zeby robic programy trzeba uzywac wyobrazni!!! Np kierunek potwora ja bym zrobil tak chociaz sa pewnie inne metody: enum KIER { LEFT, RIGHT, UP, DOWN }
EDIT: Kurcze, to co napisal kamilo jest jako tako dobre. Nie wiem czy to tu zadziala ale zobacz: char klawisz;
klawisz = readkey();
int kod = static_cast < int >( klawisz );
textprintf_ex(...);
Tutaj powinienes otrzymac nr'y klawiszy. A jezeli to są takie numery jak w konsoli to moge ci podpowiedziec: 80 = strzalka_w_dol 75 = w gore 72 = lewa 77 = prawa |
|
« 1 » |