Powrócenie do gry po jej zatrzymaniu

Powrócenie do gry po jej zatrzymaniu
KK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 25
0

Cześć, mam pewien problem. Piszę sobie malutą grę i mam problem z zatrzymaniem/pauza gry.
Mam metodę

Kopiuj
public void keyPressed(int k)
    {
        if (k == KeyEvent.VK_ESCAPE) gsm.setPaused(true);
}

która po naciśnięciu klawisza Escape powinna zatrzymywać grę i przeskakiwać do innej klasy w której jest tylko obraz ze grę zatrzymaną. I tak się dzieje. Problem gdy jeszcze raz chcę nacisnąć escape żeby wrócić do gry. W klasie PauseState też mam metodę

Kopiuj
public void keyPressed(int k)
    {
        if (k == KeyEvent.VK_ESCAPE) gsm.setPaused(false);

    }

która powinna przerywać tą pauze ale jednak nie działa. Nie wiem jak sobie poradzić.
Dodam że gdy do pierwszej metody dodam przycisk np P który bedzie miał gsm.setPaused(false); wszystko pięknie działa ale nie chcę mieć 2 różnych przycisków do pauzowania i odpauzowania gry.

Nie wiem czy o to chodziło

Kopiuj
private PauseState pauseState;
private boolean paused;

//z konstruktora 
 pauseState = new PauseState(this);
 paused = false;

//metoda setPause
public void setPaused(boolean b)
{
   paused = b;
}

a jak zrobie coś takiego

Kopiuj
 if (k == KeyEvent.VK_ESCAPE) gsm.setPaused(true);
        if (k == KeyEvent.VK_P) gsm.setPaused(false);

to wszystko działa

spartanPAGE
  • Rejestracja: dni
  • Ostatnio: dni
fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883
1

zapewne jest wywlowana keypress z false na samym koncu dlatego nic Ci sie nie pokazuje. Co musisz zrobic to zamiast wywolywac to z true false to zrobic cos takiego

Kopiuj
boolean menu = false;
if (k == KeyEvent.VK_ESCAPE)
{
    menu = !menu; //nie wiem czy zadziala w javie, ale chodzi o to zeby zmienic status na przeciwny.
    gsm.setPaused(menu);
}

Edit, ale jak slusznie @spartanPAGE zauwazyl. najlepiej uzyc tutaj StatePattern

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.