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ć.