Gra w statki - architektura

0

Hej,
mam do napisania grę w statki w javaFX. Nie znam się za bardzo na architekturzę programów desktopowych, więc wymyśliłem dwa podejścia.

Pierwsze to coś w stylu restowego serwera. Obiekt gry udostępniałby metody w stylu makeMove, getGameState itp. (zwracające albo informację o braku tury gracza albo nowy stan gry) i odpowiednio gracze by wykonywali swoje ruchy.

Ale chwilę później wymyśliłem też sytuację odwrotną. Zrobić interface PlayerBehavior który zawierałby takie metody jak prepareBoard, makeMove, updateBoard itp. i gracze "zgłszaliby" się do gry po przez ten interface (np. jeden byłby kontrolerem FXowym, a drugi napisanym botem). Sam obiekt gry "zarządzałby" turami graczy odpowiednio wołając kolejne metody interface.

Które rozwiązanie wydaje wam się lepsze i dlaczego?

0

Ja bym zaczął projektować "z góry", czyli zidentyfikował bym "aktorów" i ich działania - tutaj nie ma znaczenia, czy jest to desktop, czy web, czy mobile
Np mam statek - z czego się składa? liczba pól, ich rozmieszczenie, liczba punktów za trafienie itp. A a jakie ma akcje?
Mam dwie plansze - jakie one mają pola? Jakie mają akcje?
I tak dalej

To jest programowanie, obiektowe, pomyśl, jakie obiekty (aktorzy) występują w twoim programie.

Jeśli chodzi o implementację, to ogólna zasada programowania gier mówi o pętli głównej:

 while(true){
     przesuwaj obiekty();
     sprawdzKolizje();
     rysuj()
}

W twoim wypadku, ponieważ jest to gra turowa, to jest jeszcze prościej, bo nie ma pętli while, tylko reagujesz na kliknięcia graczy, sprawdzasz, czy gracz trafił i odrysowujesz.

Mam nadzieję, ze chociaż trochę pomogłem.

0

@Black007
Zrobiłem na zasadzie serwera i rodzieliłem projekt na dwa "moduły": grę i wyświetlanie w fx
Mam interface

public interface Game {

    MoveResult makeMove(String playerName, Move move);
    GameStatus getGameStatusFor(String playerName);
    String getActivePlayer();

}

moduł gry implementuje ten interface zgodnie z zasadami gry, okienka w fx wyświetlają guzki itp, bot w osobnym wątku to sekundę sprawdza czy może zrobić ruch (w wymaganiach było użycie wątków)
Wydaję mi się, że takie podejscie jest okej?

0

Wygląda ok, a co robią poszczególne metody?

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