converted board from int to AbstractPlayer
This commit is contained in:
parent
042a5dc9ea
commit
ac9ddcab27
2
.gitignore
vendored
2
.gitignore
vendored
@ -3,3 +3,5 @@
|
|||||||
.classpath
|
.classpath
|
||||||
.metadata/
|
.metadata/
|
||||||
.settings
|
.settings
|
||||||
|
.idea
|
||||||
|
*.iml
|
||||||
|
@ -2,24 +2,30 @@ package othello;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import othello.players.AbstractPlayer;
|
||||||
|
import othello.players.RandomPlayer;
|
||||||
|
|
||||||
public class Main {
|
public class Main {
|
||||||
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
int p1 = 1, p2 = 2;
|
AbstractPlayer p1 = new RandomPlayer();
|
||||||
int[][] board = initialize(p1, p2);
|
AbstractPlayer p2 = new RandomPlayer();
|
||||||
|
AbstractPlayer[][] board = initialize(p1, p2);
|
||||||
State game = new State(board, p1, p2);
|
State game = new State(board, p1, p2);
|
||||||
board[1][5]=game.getCurrentPlayer();
|
// board[1][5]=game.getCurrentPlayer();
|
||||||
/*while(!game.isOver()) {
|
while(!game.isOver()) {
|
||||||
int player = game.getCurrentPlayer();
|
AbstractPlayer player = game.getCurrentPlayer();
|
||||||
ArrayList<Pair<Point, Point>> moves = game.getMove(player);
|
ArrayList<Pair<Point, Point>> moves = game.getMove(player);
|
||||||
} */
|
game.toString();
|
||||||
ArrayList<Pair<Point, Point>> moves = game.getMove(game.getCurrentPlayer());
|
player.play(moves);
|
||||||
System.out.println(moves.toString());
|
}
|
||||||
|
// ArrayList<Pair<Point, Point>> moves = game.getMove(game.getCurrentPlayer());
|
||||||
|
// System.out.println(moves.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int[][] initialize(int p1, int p2){
|
public static AbstractPlayer[][] initialize(AbstractPlayer p1, AbstractPlayer p2){
|
||||||
int[][] board = new int[7][7];
|
AbstractPlayer[][] board = new AbstractPlayer[7][7];
|
||||||
board[0][0] = p2;
|
board[0][0] = p2;
|
||||||
board[0][6] = p1;
|
board[0][6] = p1;
|
||||||
board[6][0] = p1;
|
board[6][0] = p1;
|
||||||
|
@ -2,16 +2,18 @@ package othello;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import othello.players.AbstractPlayer;
|
||||||
|
|
||||||
public class State {
|
public class State {
|
||||||
|
|
||||||
private int[][] board;
|
private AbstractPlayer[][] board;
|
||||||
private int player1;
|
private AbstractPlayer player1;
|
||||||
private int player2;
|
private AbstractPlayer player2;
|
||||||
private int currentPlayer;
|
private AbstractPlayer currentPlayer;
|
||||||
private int n1;
|
private int n1;
|
||||||
private int n2;
|
private int n2;
|
||||||
|
|
||||||
public State(int[][] board, int p1, int p2, int n1, int n2) {
|
public State(AbstractPlayer[][] board, AbstractPlayer p1, AbstractPlayer p2, int n1, int n2) {
|
||||||
this.board = board;
|
this.board = board;
|
||||||
this.player1 = p1;
|
this.player1 = p1;
|
||||||
this.player2 = p2;
|
this.player2 = p2;
|
||||||
@ -20,7 +22,7 @@ public class State {
|
|||||||
this.n2 = n2;
|
this.n2 = n2;
|
||||||
}
|
}
|
||||||
|
|
||||||
public State(int[][] board, int p1, int p2) {
|
public State(AbstractPlayer[][] board, AbstractPlayer p1, AbstractPlayer p2) {
|
||||||
this(board, p1, p2, 2, 2);
|
this(board, p1, p2, 2, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -30,7 +32,7 @@ public class State {
|
|||||||
return getMove(player1).isEmpty() && getMove(player2).isEmpty();
|
return getMove(player1).isEmpty() && getMove(player2).isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList<Pair<Point, Point>> getMove(int player) {
|
public ArrayList<Pair<Point, Point>> getMove(AbstractPlayer player) {
|
||||||
// Pair<Depart, Arrivee>
|
// Pair<Depart, Arrivee>
|
||||||
ArrayList<Pair<Point, Point>> moves = new ArrayList<>();
|
ArrayList<Pair<Point, Point>> moves = new ArrayList<>();
|
||||||
// Parcours du plateau de jeu
|
// Parcours du plateau de jeu
|
||||||
@ -44,11 +46,10 @@ public class State {
|
|||||||
if (deltaY != 0 && deltaX != 0) {
|
if (deltaY != 0 && deltaX != 0) {
|
||||||
// Si une place libre est trouv<EFBFBD>e elle est ajout<EFBFBD>e à la liste des coups
|
// Si une place libre est trouv<EFBFBD>e elle est ajout<EFBFBD>e à la liste des coups
|
||||||
try {
|
try {
|
||||||
if (this.board[y+deltaY][x+deltaX]==0) {
|
if (this.board[y+deltaY][x+deltaX] == null) {
|
||||||
moves.add(new Pair<Point, Point>(new Point(y, x), new Point(y+deltaY, x+deltaX)));
|
moves.add(new Pair<Point, Point>(new Point(y, x), new Point(y+deltaY, x+deltaX)));
|
||||||
}
|
} else {
|
||||||
if(this.board[y+deltaY][x+deltaX]!=0){
|
if(this.board[y+2*deltaY][x+2*deltaX] == null)
|
||||||
if(this.board[y+2*deltaY][x+2*deltaX] == 0)
|
|
||||||
moves.add(new Pair<Point, Point>(new Point(y, x), new Point(y+2*deltaY, x+2*deltaX)));
|
moves.add(new Pair<Point, Point>(new Point(y, x), new Point(y+2*deltaY, x+2*deltaX)));
|
||||||
}
|
}
|
||||||
} catch(ArrayIndexOutOfBoundsException ignored) {}
|
} catch(ArrayIndexOutOfBoundsException ignored) {}
|
||||||
@ -61,7 +62,7 @@ public class State {
|
|||||||
return moves;
|
return moves;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getScore(int player) {
|
public int getScore(AbstractPlayer player) {
|
||||||
return currentPlayer == player1 ? n1/(n1+n2) : n2/(n2+n1);
|
return currentPlayer == player1 ? n1/(n1+n2) : n2/(n2+n1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,11 +88,11 @@ public class State {
|
|||||||
copy.switchPlayer();
|
copy.switchPlayer();
|
||||||
return copy;
|
return copy;
|
||||||
}
|
}
|
||||||
public int getCurrentPlayer() {
|
public AbstractPlayer getCurrentPlayer() {
|
||||||
return currentPlayer;
|
return currentPlayer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCurrentPlayer(int currentPlayer) {
|
public void setCurrentPlayer(AbstractPlayer currentPlayer) {
|
||||||
this.currentPlayer = currentPlayer;
|
this.currentPlayer = currentPlayer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,4 +110,12 @@ public class State {
|
|||||||
setCurrentPlayer(getCurrentPlayer() == this.player1 ? player2 : player1);
|
setCurrentPlayer(getCurrentPlayer() == this.player1 ? player2 : player1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO: display the current state of the board
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user