[C++/Allegro 4] Powtarzanie funkcji


(Aninik9) #1

Mam taką oto funkcję. Ma ona zwracać wartość full(fullscreen), w zależności od tego co wybierzemy w menu. Pewnie można było to zrobić inaczej, ale ja się dopiero uczę.

Problem tkwi w tym, że naciskam klawisz D wybiera mi fullscreen: off i dalej wciskam S. Do tego momentu wszystko jest ok. Gdy nacisnę enter to funkcja się powtarza, czyli fullscreen mam ustawiony na ON a podświetlenie wyboru menu jest u góry. Próbowałem czyścić bufor ale to nic nie daje.

Menu wygląda tak http://imageshack.us/photo/my-images/855/problem1z.png/(tak wiem nie jest ono zbyt ambitne :D)

int opcje(BITMAP * op_on, BITMAP * op_on_wr, BITMAP * op_off, BITMAP * op_off_wr)

{

    int pozycja = 1;

    bool enter = 0;

    bool full = 1;

    clear_keybuf();

    blit(op_on, screen, 0, 0, 0, 0, op_on->w, op_on->h);

    do

    {

    rest(100);

    readkey();

    if(key[KEY_D] && pozycja == 1 && full == 1)

    {

        full = 0;

        blit(op_off, screen, 0, 0, 0, 0, op_off->w, op_off->h);

    }

    if(key[KEY_A] && pozycja == 1 && full == 0)

    {

        full = 1;

        blit(op_on, screen, 0, 0, 0, 0, op_on->w, op_on->h);

    }

    if(key[KEY_W])

    {

        pozycja = 1;

        if(pozycja == 1 && full == 1)

        {

        blit(op_on, screen, 0, 0, 0, 0, op_on->w, op_on->h);

        }

        if(pozycja == 1 && full == 0)

        {

        blit(op_off, screen, 0, 0, 0, 0, op_off->w, op_off->h);

        }

    }

    if(key[KEY_S])

    {

        pozycja = 2;

        if(pozycja == 2 && full == 1)

        {

        blit(op_on_wr, screen, 0, 0, 0, 0, op_on_wr->w, op_on_wr->h);

        }

        if(pozycja == 2 && full == 0)

        {

        blit(op_off_wr, screen, 0, 0, 0, 0, op_off_wr->w, op_off_wr->h);

        }

    }

    }while(!key[KEY_ENTER]);

    return full;

}

Przepraszam, za jakieś literówki ale jest późno a mi się chcę spać.


([alex]) #2

Ten problem który opisujesz leży poziom wyżej czyli tam skąd ta funkcja jest wywołana.