szd.allapotter
Class Game

java.lang.Object
  extended by szd.allapotter.AbstractGame
      extended by szd.allapotter.Game

public class Game
extends AbstractGame

A játékot állapottérreprezentációját megvalósító osztály.

Author:
Hucker Dávid

Field Summary
private  java.util.logging.Logger logger
           
private  int recursionCounter
           
 byte winner
           
 
Fields inherited from class szd.allapotter.AbstractGame
BEGINNERDIFFICULT, currentPlayer, FIRSTPLAYER, gameDifficult, gameField, HARDDIFFICULT, NORMALDIFFICULT, onePlayerGame, operatorok, PROFESSIONALDIFFICULT, SECONDPLAYER, TableSize, twoPlayerGame
 
Constructor Summary
Game()
          Publikus konstruktor amely inicializálja a gameField attribútumot.
Game(Game g)
          Publikus konstruktor amely a paraméterként kapott játék játékmezőjének az értékeit átmásolja az újonnan példányosított játék játékmezőjébe.
 
Method Summary
 boolean equals(java.lang.Object obj)
           
 Game executeOperator(AbstractOperator op)
          Az aktuális játékállapoton végrehajtunk egy operátort.
private  boolean findMyWay(Node start, java.util.Set<Node> playerEndNodes, java.util.Set<Node> availableNodes, int playerID, javax.swing.tree.DefaultMutableTreeNode root, java.util.Set<java.awt.geom.Line2D> opponentLines)
          A célállapot vizsgálásához szükséges metódus.
 double heurisztika()
          Az aktuális játékállapothoz tartozó heurisztikafüggvény.
 boolean isGameEndState()
          A játék végét ellenörző metódus.
 boolean isOperatorUsable(AbstractOperator op)
          Megvizsgálja hogy az aktuális játékállapoton végrehajtható-e egy operátor.
private  void nodeSelected(int x, int y)
          Egy csomópont kiválasztása után fut le akár mi akár az ellenfelünk lépett, feljegyzi a lépést, értesíti a játékosokat hogy most az ellenfelük következik és kirajzoltatja az újonnan kialakult állést.
 void processGameEnd()
          Elvégzi a megfelelő változtatásokat a felhasználói felületen ha vége a játéknak.
private  void processNode(Node n)
          A nodeSelected használja, elvégez minden szükséges változtatást a csomópontunkon.
private  void showTree(javax.swing.tree.DefaultMutableTreeNode root)
          Egy játékfa kirajzolására és megjelenítésére szolgáló metódus.
 void swapPlayer()
          A nodeSelected használja, felcseréli a currentPlayer értékét a következő játékos értékére (magyarul ha az első játékos lépett akkor utána a második játékos következik és ugyan így fordítva).
 java.lang.String toString()
           
 
Methods inherited from class szd.allapotter.AbstractGame
getCurrentPlayer, getGameField, getOperatorok, setGameField
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

recursionCounter

private int recursionCounter

winner

public byte winner

logger

private java.util.logging.Logger logger
Constructor Detail

Game

public Game()
Publikus konstruktor amely inicializálja a gameField attribútumot.


Game

public Game(Game g)
Publikus konstruktor amely a paraméterként kapott játék játékmezőjének az értékeit átmásolja az újonnan példányosított játék játékmezőjébe.

Parameters:
g - A másolandó játék
Method Detail

executeOperator

public Game executeOperator(AbstractOperator op)
Az aktuális játékállapoton végrehajtunk egy operátort.

Specified by:
executeOperator in class AbstractGame
Parameters:
op - A végrehajtandó operátor
Returns:
Az operátor végrehajtása után kapott új játékállapot

isGameEndState

public boolean isGameEndState()
A játék végét ellenörző metódus. A játéknak akkor van vége, ha az egyik játékos sikeresen létrehozott egy összefüggő vonalat a két alapvonala között vagy ha elfogytak a kiválasztható pontok.

Specified by:
isGameEndState in class AbstractGame
Returns:
true ha az aktuális játékállapot egy kívánatos végállapot, false különben

showTree

private void showTree(javax.swing.tree.DefaultMutableTreeNode root)
Egy játékfa kirajzolására és megjelenítésére szolgáló metódus.

Parameters:
root - A kirajzolandó játékfa gyökere

processGameEnd

public void processGameEnd()
Elvégzi a megfelelő változtatásokat a felhasználói felületen ha vége a játéknak.


findMyWay

private boolean findMyWay(Node start,
                          java.util.Set<Node> playerEndNodes,
                          java.util.Set<Node> availableNodes,
                          int playerID,
                          javax.swing.tree.DefaultMutableTreeNode root,
                          java.util.Set<java.awt.geom.Line2D> opponentLines)
A célállapot vizsgálásához szükséges metódus. Valamelyik játékos egyik alapvonaláról kiválasztott csomópontból kiindulva és azt gyökérelemnek tekintve hozzáadja a csomóponttól lólépésnyi távolságra lévő többi csomópontot, majd az újonnan felvett csomópontokra végrehajtja ugyan ezt aktuálisan azokat gyökérelemnek tekintve mindaddig amíg el nem fogynak az adott játékoshoz tartozó csomópontok. Így létrejön egy fa, és ha a fa elemei között megtalálható egy, a játékos másik alapvonalán lévő csomópont, akkor azt azt jelenti hogy van összefüggő vonal a játékos két alapvonala között

Parameters:
start - Az aktuálisan vizsgált csomópont, ezt tekintjük gyökérelemnek
playerEndNodes - Célcsomópontok
availableNodes - Még be nem járt csomópontok amiket felfűzhetünk a fára
playerID - Melyik játékos csomópontjait vizsgáljuk
root - Az egész fa gyökéreleme
Returns:
true Ha a fában szerepel egy olyan elem, amelyik a gyökérelemmel ellentétes alapvonalon fekszik false egyébként.

isOperatorUsable

public boolean isOperatorUsable(AbstractOperator op)
Megvizsgálja hogy az aktuális játékállapoton végrehajtható-e egy operátor.

Specified by:
isOperatorUsable in class AbstractGame
Parameters:
op - Az elvégezni kívánt operátor
Returns:
true ha az operátor elvégezhető, false ha nem

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

equals

public boolean equals(java.lang.Object obj)
Overrides:
equals in class java.lang.Object

nodeSelected

private void nodeSelected(int x,
                          int y)
Egy csomópont kiválasztása után fut le akár mi akár az ellenfelünk lépett, feljegyzi a lépést, értesíti a játékosokat hogy most az ellenfelük következik és kirajzoltatja az újonnan kialakult állést.

Parameters:
x - A kiválasztott csomópont sor indexe
y - A kiválasztott csomópont oszlop indexe

swapPlayer

public void swapPlayer()
A nodeSelected használja, felcseréli a currentPlayer értékét a következő játékos értékére (magyarul ha az első játékos lépett akkor utána a második játékos következik és ugyan így fordítva).


processNode

private void processNode(Node n)
A nodeSelected használja, elvégez minden szükséges változtatást a csomópontunkon.

Parameters:
n - A csomópont

heurisztika

public double heurisztika()
Az aktuális játékállapothoz tartozó heurisztikafüggvény.

Specified by:
heurisztika in class AbstractGame
Returns:
Az aktuális játékállapot heurisztikája