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

[Allegro] Zmiana wartości po naciśnięciu klawisza

Ostatnio zmodyfikowano 2011-10-23 21:10
Autor Wiadomość
Kamil9132
Temat założony przez niniejszego użytkownika
[Allegro] Zmiana wartości po naciśnięciu klawisza
» 2011-10-22 15:39:55
Witam
Mam taki kod:
C/C++
#include <allegro.h>
int main()
{
    allegro_init();
    install_keyboard();
    set_color_depth( 16 );
    set_gfx_mode( GFX_AUTODETECT, 640, 480, 0, 0 );
    clear_to_color( screen, makecol( 10, 10, 10 ) );
   
    //char klawisz;
    int klawisz = 0;
    int menug = 0;
    int wyjdz = 0;
    int konie = 0;
    int nkonie = 0;
    int kmenug = 0;
   
    while( wyjdz == 0 )
    {
       
       
       
        if( menug == 0 or menug == 1 ) {
           
            if( key[ KEY_DOWN ] ) { menug = 1; }
            if( key[ KEY_UP ] ) { menug = 0; }
           
        }
       
        if( menug == 2 ) {
           
            if( key[ KEY_RIGHT ] ) { konie = 0; }
            if( key[ KEY_LEFT ] ) { konie = 1; }
           
        }
       
       
       
       
       
       
       
        if( menug == 0 ) {
            textprintf( screen, font, 200, 100, makecol( 255, 255, 255 ), "Start" );
           
           
            textprintf( screen, font, 200, 120, makecol( 255, 255, 128 ), "Wyjdz z gry" );
           
            if( key[ KEY_ENTER ] ) {
                //       menug = 3;   
            } }
       
       
       
       
       
        //      klawisz = readkey();
        //      clear_to_color( screen, makecol( 10, 10, 10 ) );
       
       
       
       
       
       
       
       
       
        textprintf_ex( screen, font, 200, 400, makecol( 255, 255, 128 ), - 1, "Liczba: %d", menug );
       
        textprintf_ex( screen, font, 200, 420, makecol( 255, 255, 128 ), - 1, "Liczba: %d", kmenug );
       
        textprintf_ex( screen, font, 200, 440, makecol( 255, 255, 128 ), - 1, "Liczba: %d", konie );
        //   textprintf( screen, font, 200, 500, makecol( 255, 255, 128 ), konie); 
       
       
       
       
       
       
        if( menug == 1 ) {
           
            textprintf( screen, font, 200, 100, makecol( 255, 255, 128 ), "Start" );
            textprintf( screen, font, 200, 120, makecol( 255, 255, 255 ), "Wyjdz z gry" );
           
            if( key[ KEY_ENTER ] ) {
               
                menug = 2;
               
            } }
       
       
       
       
       
       
        if( menug == 2 ) {
           
            textprintf( screen, font, 200, 200, makecol( 255, 255, 128 ), "Czy na pewno chcesz wyjść?" );
           
           
           
           
           
            if( konie == 0 ) {
               
                textprintf( screen, font, 220, 220, makecol( 255, 255, 225 ), "Nie" );
               
                textprintf( screen, font, 180, 220, makecol( 255, 255, 128 ), "Tak" );
               
                if( key[ KEY_ENTER ] ) {
                   
                    menug = 0;
                } }
           
           
           
           
           
            if( konie == 1 ) {
               
                textprintf( screen, font, 220, 220, makecol( 255, 255, 128 ), "Nie" );
               
                textprintf( screen, font, 180, 220, makecol( 255, 255, 225 ), "Tak" );
               
                if( key[ KEY_ENTER ] ) {
                   
                    wyjdz = 1;
                   
                } }
           
        }
        //  textprintf( screen, font, 10, 20, makecol( 255, 255, 128 ), "Klawisz to : %d", klawisz );
       
       
    }
   
   
   
    return 0;
}
END_OF_MAIN();

Mój problem polega na tym że po naciśnięciu strzałki w dół i entera (naciśnięciu na wyjście) to napis "Start" i "wyjdz" powinien zniknąć, a nie znika. Drugi problem polega na tym że po naciśnięciu strzałki w dół i entera (naciśnięciu na wyjście), a później strzałki w lewo to powinien wyświetlać się napis TAK na biało, a nie wyświetla się.
Wydaje mi się że dzieje  się tak dlatego że menug nie zmienia wartości na 2, a powinien, to jest kod za to odpowiedzialny:
C/C++
if( menug == 1 ) {
   
    textprintf( screen, font, 200, 100, makecol( 255, 255, 128 ), "Start" );
    textprintf( screen, font, 200, 120, makecol( 255, 255, 255 ), "Wyjdz z gry" );
   
    if( key[ KEY_ENTER ] ) {
       
        menug = 2;
       
    } }
Bardzo proszę o szybką pomoc.
P-42439
Gabes
» 2011-10-22 16:17:46
Powinny być spełnione dwa warunki
if( key[ KEY_UP ] && key[ KEY_ENTER ] )
.

chociaż już nie jestem pewien czy chodziło o to raczej to
if( key[ KEY_UP ] && menug == 2 )
P-42443
Kamil9132
Temat założony przez niniejszego użytkownika
» 2011-10-22 17:06:49
A czy jest jakaś różnica pomiędzy if'em w if'ie ,a if'em z dwoma warunkami?
P-42448
Drraven
» 2011-10-22 17:47:10
if( key[ KEY_UP ] && key[ KEY_ENTER ] )
operator && to po prostu AND czyli oba muszą być spełnione. A if w ifie to IMHO przekombinowanie. To tyle.
P-42449
Kamil9132
Temat założony przez niniejszego użytkownika
» 2011-10-22 19:05:57
Ale czy to coś zmieni?
P-42453
Gabes
» 2011-10-22 19:10:45
while(!wyjdz ==0 )
P-42454
Kamil9132
Temat założony przez niniejszego użytkownika
» 2011-10-22 20:18:42
Nie chodzi mi o zakończenie programu tylko pokazanie informacji Czy chcesz wyjść i zniknięcie Star i Wyjdz.
P-42473
Gabes
» 2011-10-22 21:10:47
Dobrze ale by wyjść to 
while( !( wyjdz == 1 && key[ KEY_ENTER ] ) )
to na pewno dwa warunki muszą być spełnione. Zaraz zobaczę to co napisałeś.
P-42492
« 1 » 2
  Strona 1 z 2 Następna strona