Nieblokujące pętle. Prosta gierka typu wężyk, pong, itp.

0

Hej, mam takie pytanie.
Podam na przykładzie prostej gierki typu "Pong". Mała kuleczka odbija się od krawędzi ekranu.
W klasie **Piłeczka **jest funkcja Przesun_Pileczke (), która z każdym wywołaniem przesuwa piłeczkę o np. 1 pixel w górę.

Chciałbym teraz wywoływać tą funkcję w kółko, żeby sprawić wrażenie ruchu. Pomijam dla uproszczenia funkcje rysujące itp.

W jaki sposób najlepiej jest w takiej sytuacji cyklicznie wywoływać daną funkcję? Najpierw myślałem, żeby zrobić coś takiego w klasie Piłeczka:

class NasluchMyszy extends MouseAdapter
{
   public void mouseClicked(MouseEvent zdarzenie) 
   {
      while (true) Przesun_Pileczke();
   }
}

Żeby kliknięcie myszy startowało grę. Okazuje się, że wtedy blokuje się funkcja nasłuchująca.

Jeśli natomiast w konstruktorze obiektu **Plansza **(Pileczka to klasa wewnętrzna klasy Plansza) wywołam coś takiego :

Plansza() 
{
   while (true)
   Przesun_Pileczke();
}

To wtedy zablokuję inne funkcje. M.in funkcję nasłuchującą okno Planszy.

W jaki sposób rozwiązuje się w Javie "nieblokujące" zapętlenia. Stworzyć dodatkową nadklasę z funkcją main(), utworzyć w niej obiekt Plansza i tam jakoś zapętlać ?

0

Może Timer.

0

Lekcja na dziś: wątki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1