Warcaby [Java]

0

Witam,

Jestem początkujący w Javie i mam do napisania grę Warcaby.Mam problem jak to zrobić od strony graficznej. Mam taki pomysł, główna klasa to Pole, która będzie przechowywała, współrzędne, granice pola, wymiary, jakiś tam status pola(gracz 1, gracz2, damka1, damka2, dozwolone, wolne itp.) no i metody do zmiany tych pól. Wszystkie obiekty typu Pole będą przechowywane w tablicy [8][8](tak jak plansza od warcabów np. [0][0] to będzie lewy górny róg, a [0][1] to kolejne pole licząc w prawo itp.). Podczas inicjalizacji każdego obiektu będą nadawane mu własność zgodnie z miejscem jakie zajmuje na planszy. I teraz pytanie jak na podstawie danych z obiektu pole narysować to pole tzn. mam funkcje public void paint(Graphics g) i w tej funkcje na podstawie różnych informacji z obiektu Pole będzie rysowało dany fragment pola z pionkiem lub bez, puste(białe) lub niedostępne(czarne) z damką lub bez. Tak przykładowo mam jakieś pojedyncze pole wywołuje jakaś funkcje i sprawdzam w instrukcji if czy zmienna dozwolone jeśli tak to rysuję białe pole setColor(Color.whit); g2d.fillRect(wx,wy,40,40) , a jeśli nie czarne g2d.setColor(Color.black); g2d.fillRect(wx,wy,40,40) . Wiem że metody paint nie mogę wywoływać to jak mam to zrobić jeśli będę chciał zmienić jakieś pole(np. na skutek ruchu pionka) ? Pozdrawiam i proszę o nakierowanie.

0

Wywołaj repaint().

0

Ok, dzięki za odpowiedz, mam jeszcze jeden problem, mam klasę dziedziczącą po JFrame i tam jest zaimplementowane okno główne, jak podzielić te okno na część w której będzie rysowana plansza i na mniejszą część w do kontroli(przyciski np. nowa gra, pole testowe np. pole informujące który gracz ma ruch). Kombinowałem z panelami ale mi to za bardzo nie działa, szachownica jest rysowana na całym oknie, i jak umieszczę w nim panel z przyciskami to znajduje się on tam, ale jest przez nią przesłonięty.

0

Wstawić tam 2 JPanele?

0

No dobra, ale jak ustawić metodę paint() tak aby malowała w wybranym panelu ?

0

Zrób klasę rozszerzającą JPanel i w niej rysuj a potem dodaj ją do okna głównego.

0

Jeżeli nie zmieniałeś menadżera rozkładu, to JFrame ma BorderLayout.
Szachownicę dodaj tak:

add(szachownica,BorderLayout.CENTER);

a panel z przyciskami tak:

add(przyciski,BorderLayout.SOUTH);

lub NORTH jeżeli chcesz mieć przyciski u góry.
Dla szachownicy ustaw layout: new GridLayout(8,8,2,2), stwórz tablicę
Pole[] pola=new Pole[8][8], pola dodawaj tak:

for(int w=0;w<8;w++)
{
   for(int k=0;k<8;k++)
   {
       Pole pole=new Pole();
       szachownica.add(pole);
       Pola[w][k]=pole;
   }
}
0

Dziękuje za pomoc chłopaki, jako tako to wygląda. Jadę dalej, później jeszcze popracuje nad interfejsem, jak będę miał pytania to się odezwę. Dzięki.

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