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