1,277
edits
Changes
moving from general pg
==Modules==
Members: Paul, -bb; Andrew, -fe; Jordan, -er <!-- borokhov, vo, berk -->
===Gameboard & chips ADT===
/* Paul */
// Gameboard abstract data type – Gameboard class
// '''fields''': public static final int SDEPTH = 10, given to no-depth constructor
// '''methods''':
// inserts a chip of the given color in the specified place as determined by an x, y coord pair
// returns true if the insertion succeeds; false otherwise
boolean insertChip(int color, int x, int y)
// move a given chip to a specified place as determined by an x, y coord pair
// returns true if the move succeeds; false otherwise
boolean moveChip(Chip c, int x, int y)
// performs a move and returns true/false depending on whether it succeeded
boolean performMove(int color, Move m)
// returns the Chip at a given location as determined by an x, y coord pair
Chip retrieveChip(int x, int y)
// returns true if the given move is valid; false otherwise
/* Verified conditions:
# No chip may be placed in any of the four corners.
# No chip may be placed in a goal of the opposite color.
# No chip may be placed in a square that is already occupied.
# A player may not have more than two chips in a connected group, whether connected orthogonally or diagonally. */
boolean validMove(int color, Move m)
// Chip abstract data type – Chip class
// color field stores the chip's color as a static final int; x and y fields store the chip's x and y coords, respectively
// '''fields''': public static final int WHITE/BLACK = 1/0 (this is how we refer to colors, though I don't think anyone would need to)
// public final static int DIMENSION = 8 for the dimensions of the board
// '''methods''':
// returns the chip's color
int getColor()
// returns the x coord of the chip
int getX()
// returns the y coord of the chip
int getY()
// returns the '''checked''' state of the chip (used for network detection)
boolean Checked()
// sets the '''checked''' state of the chip to '''newval'''
void setChecked(boolean newval)
===Additional methods in Gameboard class===
This is the real meat of the project.
/* Andrew */
// generates a 2-d array of moves and resulting gameboards for a given color
// @return[0] is an array of Gameboards (Gameboard[x])
// @return[1] is an array of Moves corresponding to each board in return[0] (Move[x])
// thus the board after performing g.performMove(color, return[1][i]) is return[0][i]
Object[][] generateMoves(Gameboard g, int color)
----
/* Paul */
// evaluates all possible moves to be generated from the '''this''' board using the minimax algorithm and alpha-beta pruning.
// continues searching until it reaches '''depth''' or a win, whichever comes first
Move evalTree(int color, int depth)
----
/* Jordan */
// evaluates the given network for a winning color
// returns a probability of winning if there is no win
// returns 999 if WHITE wins, -999 if BLACK wins
int winner(Gameboard g)
===Changes to MachinePlayer class===
====New fields====
int color
int opponent
int depth
Gameboard board
====Methods====
As I mentioned to Jordan over e-mail, all of the methods and constructors in MachinePlayer class become pretty trivial after we write all of the methods in the Gameboard class. I (Paul) have already done all of them, so assuming everything else works as planned, we should be ok.
Members: Paul, -bb; Andrew, -fe; Jordan, -er <!-- borokhov, vo, berk -->
===Gameboard & chips ADT===
/* Paul */
// Gameboard abstract data type – Gameboard class
// '''fields''': public static final int SDEPTH = 10, given to no-depth constructor
// '''methods''':
// inserts a chip of the given color in the specified place as determined by an x, y coord pair
// returns true if the insertion succeeds; false otherwise
boolean insertChip(int color, int x, int y)
// move a given chip to a specified place as determined by an x, y coord pair
// returns true if the move succeeds; false otherwise
boolean moveChip(Chip c, int x, int y)
// performs a move and returns true/false depending on whether it succeeded
boolean performMove(int color, Move m)
// returns the Chip at a given location as determined by an x, y coord pair
Chip retrieveChip(int x, int y)
// returns true if the given move is valid; false otherwise
/* Verified conditions:
# No chip may be placed in any of the four corners.
# No chip may be placed in a goal of the opposite color.
# No chip may be placed in a square that is already occupied.
# A player may not have more than two chips in a connected group, whether connected orthogonally or diagonally. */
boolean validMove(int color, Move m)
// Chip abstract data type – Chip class
// color field stores the chip's color as a static final int; x and y fields store the chip's x and y coords, respectively
// '''fields''': public static final int WHITE/BLACK = 1/0 (this is how we refer to colors, though I don't think anyone would need to)
// public final static int DIMENSION = 8 for the dimensions of the board
// '''methods''':
// returns the chip's color
int getColor()
// returns the x coord of the chip
int getX()
// returns the y coord of the chip
int getY()
// returns the '''checked''' state of the chip (used for network detection)
boolean Checked()
// sets the '''checked''' state of the chip to '''newval'''
void setChecked(boolean newval)
===Additional methods in Gameboard class===
This is the real meat of the project.
/* Andrew */
// generates a 2-d array of moves and resulting gameboards for a given color
// @return[0] is an array of Gameboards (Gameboard[x])
// @return[1] is an array of Moves corresponding to each board in return[0] (Move[x])
// thus the board after performing g.performMove(color, return[1][i]) is return[0][i]
Object[][] generateMoves(Gameboard g, int color)
----
/* Paul */
// evaluates all possible moves to be generated from the '''this''' board using the minimax algorithm and alpha-beta pruning.
// continues searching until it reaches '''depth''' or a win, whichever comes first
Move evalTree(int color, int depth)
----
/* Jordan */
// evaluates the given network for a winning color
// returns a probability of winning if there is no win
// returns 999 if WHITE wins, -999 if BLACK wins
int winner(Gameboard g)
===Changes to MachinePlayer class===
====New fields====
int color
int opponent
int depth
Gameboard board
====Methods====
As I mentioned to Jordan over e-mail, all of the methods and constructors in MachinePlayer class become pretty trivial after we write all of the methods in the Gameboard class. I (Paul) have already done all of them, so assuming everything else works as planned, we should be ok.