Tworzenie tablicy do gry hex

0

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 
			}

	}

}
0

Zrób to przez rekurencje ;).Musisz pamiętać że masz możliwość tylko na 6 pól dookoła.
A tablice możesz zrobić zwykłą z założeniami że pole tab[x][y] nigdy nie styka się z polem tab[x-1][y-1] i polem tab[x+1][y+1] .

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