it.prazzoli.tictactoe
Class board

java.lang.Object
  extended by it.prazzoli.tictactoe.board

public class board
extends java.lang.Object

La classe board descrive la tavola del gioco, questa è composta da nove celle. Ciascuna cella può contenere X O oppure E ( qui si suppone di giocare con i simboli { X , O , E } il simbolo E rappresenta il valore vuoto ). Sebbene sia possibile utilizzare qualunque combinazione di caratteri si decide questo in quanto standard, in particolare si utilizza E per rendere più chiara la rappresentazione. La classe consente di gestire board in due modi: come matrice 3X3. dove vi sono tre righe e tre colonne, le dimensioni di questa matricesono state parametrizzate, sarebbe pertanto possibile utilizzare matrici di dimensioni differenti modificando un parametro della classe. come numero intero. Risulta conveniente riuscire a rappresentare e gestire la configurazione attuale della board utilizzando un numero intero; il funzionamento questa caratteristica si basa sul fatto che ogni casella può contenere O, X, E. Conveniamo di utilizzare un numero a 32 bit per rappresentare la board, la gestione di valori interi risulta comoda e talvolta atomica. Se consideriamo la seguente mappatura tra valori e posizioni: 0 1 2 3 4 5 6 7 8 X = 01b O = 10b E = 11b Possiamo ora, in modo agevole, eseguire tale conversione concateno i valori e formando un numero binario dove le cifre meno significative LSB sono a destra : AA BB CC DD EE FF GG HH II Cella_0 Cella_1 Cella_2 Cella_3 Cella_4 Cella_5 Cella_6 Cella_7 Cella_8 Il numero binario che rappresenta la board risulterà dalla concatenazione dei valori: AABBCCDDEEFFGGHHII A questo punto il numero binario così ottenuto viene convertito in intero. E’ possibile applicare l’operazione inversa trasformando l’intero in binario, andando poi a popolare i valori nella matrice. L'utilizzo di un modo piuttosto che l'altro è indifferente ai fini del funzionamento. Esempio nella memorizzazione di board dal database è convenite utilizzare notazione intero. Per rappresentare le board su schermo è convenite utilizzare notazioni matriciali. La notazione intero risulta migliore ai fini di prestazioni di esecuzione, ma non risulta interpretabile direttamente.

Author:
Maurizio Prazzoli, maurizio@prazzoli.it

Constructor Summary
board()
           
board(java.lang.String sBOARD_ID, java.lang.String sFATHER_ID, java.lang.String sBOARD, java.lang.String sPLAYER, java.lang.String sSCORE, java.lang.String sMINMAX)
           
 
Method Summary
 int boardToInt()
          CONVEETO LA BOARD da MATRIX A INT questa rappresenta la base del gioco ogni casella può contenere O, X, oppure vuoto. conveniamo di utilizzare un numero a 32 bit per rappresentare la board.
 java.lang.Object boardToMatrix()
           
 java.lang.Object boardToMatrix(boolean removeE)
           
 int evaluateBoard(player cPlayer, player oPlayer)
           
 java.util.Collection<cell> findEmptyCells()
           
 board generateChildBoard()
           
 long getBoardID()
           
 java.lang.String getBoardScore()
           
 long getFatherID()
           
 java.lang.String getMinMax()
           
 java.lang.String getPlayerName()
           
 java.lang.String getValueInBoard(int cellNumber)
          Restituisco il valore alla numero di cella
 java.lang.String getValueInBoard(int row, int column)
          Restituisco il valore alla riga row e alla colonna column
 boolean intToBoard(int iBoard)
           
 boolean intToBoard(java.lang.String sBoard)
          CONVERTO LA BOARD DA RAPRRESENTAZIONE INTERO A MATRICE
 boolean isBoardNet()
           
 boolean isBoardPlayable()
           
 boolean isBoardVincente()
           
 boolean printBoardToScreen()
          Stampo la BOARD corrente sullo schermo
 java.lang.String printBoardToString()
           
 java.lang.String printDebug()
          Ritono informazioni sulla board nel dettaglio BOARD_ID + FATHER_ID + R
 void setBoardID(long ID)
          consente di specificareun valore ID da associare alla board corrente
 void setBoardID(java.lang.String ID)
          Overload
 void setBoardScore(int BoardScore)
           
 void setBoardScore(java.lang.String sBoardScore)
           
 void setFatherID(long ID)
          Imposta il valore nella board corrente il riferimento al valore ID relativo alla board padre, questo è utile in fase di DEBUG per ricostruire l'albero delle BOARD.
 void setFatherID(java.lang.String ID)
          Overload
 void setMinMax(java.lang.String sMINMAX)
           
 void setPlayerName(java.lang.String sPlayerName)
           
 boolean setValueInBoard(int cellNumber, char value)
          Imposta alla riga row e alla colonna column il valore value esegue validazione relativa a riga colonne valore
 boolean setValueInBoard(int row, int column, char value)
           
 void testBoardInsert()
           
 int winPositionNotBlocked(char PLAYERMARK)
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

board

public board()

board

public board(java.lang.String sBOARD_ID,
             java.lang.String sFATHER_ID,
             java.lang.String sBOARD,
             java.lang.String sPLAYER,
             java.lang.String sSCORE,
             java.lang.String sMINMAX)
Method Detail

setFatherID

public void setFatherID(long ID)
Imposta il valore nella board corrente il riferimento al valore ID relativo alla board padre, questo è utile in fase di DEBUG per ricostruire l'albero delle BOARD. Nel caso in cui questo sia stato generato da moduli di AI.

Parameters:
ID - contiene il valore ID della bord padre

setFatherID

public void setFatherID(java.lang.String ID)
Overload

Parameters:
ID - ontiene il valore ID della bord padre
See Also:
setFatherID(long)

setBoardID

public void setBoardID(long ID)
consente di specificareun valore ID da associare alla board corrente

Parameters:
ID - contiene il valore ID della bord

setBoardID

public void setBoardID(java.lang.String ID)
Overload

Parameters:
ID - contiene il valore ID della bord
See Also:
setFatherID(long)

setPlayerName

public void setPlayerName(java.lang.String sPlayerName)

setBoardScore

public void setBoardScore(int BoardScore)

setBoardScore

public void setBoardScore(java.lang.String sBoardScore)

setMinMax

public void setMinMax(java.lang.String sMINMAX)

getFatherID

public long getFatherID()

getBoardID

public long getBoardID()

getPlayerName

public java.lang.String getPlayerName()

getBoardScore

public java.lang.String getBoardScore()

getMinMax

public java.lang.String getMinMax()

generateChildBoard

public board generateChildBoard()

boardToInt

public int boardToInt()
CONVEETO LA BOARD da MATRIX A INT questa rappresenta la base del gioco ogni casella può contenere O, X, oppure vuoto. conveniamo di utilizzare un numero a 32 bit per rappresentare la board. Definiamo: X = 01b O = 10b VUOTO = 11b


intToBoard

public boolean intToBoard(java.lang.String sBoard)
CONVERTO LA BOARD DA RAPRRESENTAZIONE INTERO A MATRICE


intToBoard

public boolean intToBoard(int iBoard)

boardToMatrix

public java.lang.Object boardToMatrix()

boardToMatrix

public java.lang.Object boardToMatrix(boolean removeE)

printDebug

public java.lang.String printDebug()
Ritono informazioni sulla board nel dettaglio BOARD_ID + FATHER_ID + R


setValueInBoard

public boolean setValueInBoard(int cellNumber,
                               char value)
Imposta alla riga row e alla colonna column il valore value esegue validazione relativa a riga colonne valore


setValueInBoard

public boolean setValueInBoard(int row,
                               int column,
                               char value)

getValueInBoard

public java.lang.String getValueInBoard(int cellNumber)
Restituisco il valore alla numero di cella


getValueInBoard

public java.lang.String getValueInBoard(int row,
                                        int column)
Restituisco il valore alla riga row e alla colonna column


printBoardToScreen

public boolean printBoardToScreen()
Stampo la BOARD corrente sullo schermo


printBoardToString

public java.lang.String printBoardToString()

findEmptyCells

public java.util.Collection<cell> findEmptyCells()

isBoardVincente

public boolean isBoardVincente()

isBoardNet

public boolean isBoardNet()

isBoardPlayable

public boolean isBoardPlayable()

evaluateBoard

public int evaluateBoard(player cPlayer,
                         player oPlayer)

winPositionNotBlocked

public int winPositionNotBlocked(char PLAYERMARK)

testBoardInsert

public void testBoardInsert()