Witam,
mam problem w stworzeniu tablicy do gry hex nie potrafie wymyslic algorytmu ktory by sprawdzal ktory gracz wygrywa w zalaczeniu przesylam kod ktory stworzylam dotychczas.
package game;
// klasa obs³ugujaca planszê do gry, sprawdznie czy ktoœ ju¿ wygra³
import java.awt.Color;
import java.awt.GridBagLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.LineBorder;
import org.omg.CORBA.FREE_MEM;
import players.Player;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class Board extends JPanel {
// deklaracja zmiennych oraz inicjalizacja niektórych z nich
private int size = 13;
private GameGui game;
private JPanel[][] fields;
/**
* Create the panel.
*/
private Color color = Color.black;
private Integer current_player = 0;
public Boolean waitMove(Player player) { // funkcja pobiera obiekt aktualnego gracza
if (checkWin())// je¿eli prawda to poprzedni gracz wygra³ i zwracamy true
return true;
current_player = player.getId(); // jezeli gra nie zakonczona ustawiami id obecnago gracza
color = player.getColor(); // oraz kolor
return false;
}
public void setGame(GameGui game) {
this.game = game; // ustawianie obiektu odpowiadaj¹cego za komunikacjê gracza z plansza (obs³uguj¹cego grê)
}
public void fillField(Integer column) { // wypelnia kolorem obecnego gracza kafelek we wskazanej przez niego kolumnie
for (int i = 6; i >= 0; i--) {
if (fields[i][column].getBackground() == Color.pink) { // jezeli istnieje kafelek nie pomalowany
fields[i][column].setBackground(color); // to go malujê
game.nextPlayer(current_player); // i przekazujê do obiektu obs³uguj¹cego grê informacjê o zmianie gracza
break;
}
}
}
public Boolean checkDiagonal ??
public Boolean checkVertical() ?? {
}
public Boolean checkHorizontal() ??{
}
public Boolean checkWin() { // strawdzanie czy spelnione s¹ warunki wygranej
return checkHorizontal() || checkVertical() || checkDiagonal() ;
}
public Board(Player start_player) { // konstruktor planszy , ustalwnie gracza rozpoczynaj¹cego
current_player = start_player.getId(); // ustawienie id gracza rozpoczynaj¹cego
color = start_player.getColor(); // ustawienie koloru gracza rozpoczynaj¹cego
setLayout(new GridLayout(13, 13, 0, 0)); // ustawienie layoutu dla planszy ( siatka 13x13)
fields = new JPanel[size][size]; //stworzenie planszy paneli o wielkoœci 13x13
for (int i = 0; i < size; i++) // pêtle przechodzace
for (int j = 0; j < size; j++) { // po kazdym panelu planszy
fields[i][j] = new JPanel(); // inicjalizacja panelu
fields[i][j].setName("" + j); // nadanie nazwy, o numerze kolumny w której siê znajdujê
fields[i][j].setBackground(Color.pink);// nadanie poczatkowego koloru
fields[i][j].setSize(50, 50); // nadanie wielkoœci
fields[i][j].setBorder(new LineBorder(Color.black)); // ustalenie koloru brzegów
fields[i][j].addMouseListener(new MouseListener() { // dodanie funkcji obslugujacej akcje mysza na panelu
@Override
public void mouseClicked(MouseEvent e) { // nie obs³u¿one
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {// nie obs³u¿one
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {// nie obs³u¿one
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) { // po naciœnieciu klawisza myszy
fillField(Integer.parseInt(e.getComponent().getName())); // pobieramy numer kolumny na podstawie nazwy
// panelu parsujemy do inta i wywo³ujemy funkcjê fiilField, która koloruje wolny kafelek(jezeli taki istnieje w kolumnie)
//
//
}
@Override
public void mouseReleased(MouseEvent e) {// nie obsluzone
// TODO Auto-generated method stub
}
});
this.add(fields[i][j]); //dodanie panelu do widoku
}
}
}