Jak zrobić menu do gry?

0

Chce mieć oddzielną klasę Menu, która będzie miała dostęp do klasy PlayGame, no i mam dylemat.

Mam JFrame, no i mogę teraz zrobić dwie rzeczy:
albo wszystko w pisać w JFrame,
albo dodawać i usuwać JPanel-e do JFrame.
Wymyśliłem dodawanie i usuwanie paneli, czyli:

dodaj panel menu
if (playGameChosed)
remove panel
dodaj panel playGame

, ale chciałem się zapytać czy to jest dobry sposób? Znacie coś lepszego?

0

Specialistą nie jestem ba, nawet dobry nie jestem ale, mogę ci zasugerować pewną analogię:
private JLabel lab = new JLable("Jakis tam text");
private String s = "inny text";

JFrame
i jakies tam elementy panele tlo menu i inne bajery
funkcja(wybór_z_menu);

funkcja(){
lab.getText(s);
}

Ideą jest to że zamiast ciągłego usuwania i dodawania nowych JPanel możesz modyfikować zawartość jednego wykorzystując jakieś tam szablony klasy/funkcje czy inne cuda.
Nie wiem czy moje myślenie jest dobre ale wydaje mi się że idąc tą drogą nie zajmujesz niepotrzebnie pamięci i czas procka na tworzenie i usuwanie nowych paneli tylko operujesz na jednym poprzez zmianę jego zawartości. Jeśli się mylę to mam nadzieję że ktoś bardziej obeznany mnie poprawi. Pozdrawiam!

0
marcos3131 napisał(a)

Chce mieć oddzielną klasę Menu, która będzie miała dostęp do klasy PlayGame, no i mam dylemat.

Czym jest Menu, a czym PlayGame i co rozumiesz przez "mieć dostęp"?
Menu to nic innego jak lista poleceń. Czy przemyślałeś w ogóle co ma taka lista do gry jako takiej?
Wydaje mi się, że w ogóle nie przemyślałeś co jest czym i co się z tym ma dziać.

marcos3131 napisał(a)

ale chciałem się zapytać czy to jest dobry sposób? Znacie coś lepszego?

Nie jest dobry. Poszukaj jakiegoś podręcznika który opisuje jak się projektuje nawet proste gry. Najpierw oglądnij kod przykładowy kilku gier logicznych (pełno w tutorialach internetowych), aby wyrobić sobie wyobrażenie jak takie gry działają od wewnątrz.

0

Nie wiem czemu, ale jak ognia próbuje unikać dodawania/usuwania paneli do JFrame.
Najprostszy sposób: tworzysz JFrame dodajesz do niego jakiś główny JPanel, który będzie "spinał" i przekazywał info pomiędzy menu<->gra (nie wiem, np: tworzysz postać w menu (podajesz jego imię) i chcesz ją przesłać do głównej części gry).
A potem do głównej klasy dziedziczącej po JPanle dodajesz dwa nowe panele: jeden z menu, a drugi z grą. I tylko decydujesz, który ma być wyświetlany. Na początek powinno ci starczyć.

0
Olamagato napisał(a)

Trudno znaleźć kod o takiej budowie menu, jaki ja chce mieć, no ale szukam.

Z tym dostępem chodziło mi o to, że klasę PlayGame będzie wywoływać tylko klasa menu, myślałem, że to jasne.
No i wiem, co to jest menu, to kilka przycików, gdzie sobie moge wybrać jeden, np. jak chce przejść do gry wciskam przycisk "Przejdź do gry", tutaj mam tylko jeden przycik w menu dla uproszczenia oczywiście:

Struktura mojego programu jest taka:

klasa Menu:

ładujMenu();
if (naciśniętoGrajWGręButton) {
   zwolnijMenu();
   uruchomGrę() {        // Metoda lokalna :)
      załadujGrę();          // Czyli wywołanie konstruktora klasy PlayGame
      grajWGrę();           // metoda klasy PlayGame, przykładowa nazwa np. go(); no i gram, albo jakieś nowe
                                  // menu klasy PlayGame wyskakuje,
   }                          // i sobie mogę wybrać "graj"
                             // gra jest już załadowana
}
// no i tereraz np. przegrałem, mogę np. wstawić jakieś menu lub komunikat typu "twoje score to: tyle, chcesz grać jeszcze raz?"
// no i teraz wracam do menu, bo nie chce grać dalej
ładujMenu();
// Ogólnie tak, oczywiście jak chcesz wyjść po prostu zamykasz krzyżykiem.
0

http://fivedots.coe.psu.ac.th/~ad/jg/ - it's good for you.

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