un-finish AI implementation
This commit is contained in:
parent
9d64fad05f
commit
20643dfd75
|
|
@ -3,8 +3,16 @@ import backend.Move;
|
|||
import backend.Piece;
|
||||
import backend.PieceType;
|
||||
import windowInterface.MyInterface;
|
||||
|
||||
|
||||
import backend.Board;
|
||||
import backend.Move;
|
||||
import backend.Piece;
|
||||
import backend.PieceType;
|
||||
import windowInterface.MyInterface;
|
||||
import backend.Board;
|
||||
import backend.Move;
|
||||
import backend.Piece;
|
||||
import backend.PieceType;
|
||||
import windowInterface.MyInterface;
|
||||
public class Main {
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
package backend;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Random;
|
||||
|
||||
public class AutoPlayer {
|
||||
|
||||
|
||||
|
|
@ -8,10 +11,31 @@ public class AutoPlayer {
|
|||
* @param board
|
||||
* @return
|
||||
*/
|
||||
public Move computeBestMove(Board board) {
|
||||
public Move computeBestMove(Board board) {ArrayList<Move> possibleMoves = new ArrayList<>();
|
||||
boolean isWhiteTurn = board.isTurnWhite();
|
||||
|
||||
// Get all legal moves for all pieces of the current player
|
||||
for (Piece piece : board.getPieces()) {
|
||||
if (piece.isWhite() == isWhiteTurn) {
|
||||
ArrayList<int[]> legalPositions = board.getLegalMoves(piece);
|
||||
for (int[] pos : legalPositions) {
|
||||
Piece target = board.getPieceAt(pos[0], pos[1]);
|
||||
Move move = new Move(piece, piece.getX(), piece.getY(), pos[0], pos[1], target);
|
||||
possibleMoves.add(move);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If there are no moves available, return null
|
||||
if (possibleMoves.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Pick one move randomly
|
||||
Random rand = new Random();
|
||||
return possibleMoves.get(rand.nextInt(possibleMoves.size()));
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -148,7 +148,7 @@ public class Board {
|
|||
}
|
||||
|
||||
|
||||
private ArrayList<int[]> getLegalMoves(Piece piece) {
|
||||
public ArrayList<int[]> getLegalMoves(Piece piece) {
|
||||
ArrayList<int[]> moves = new ArrayList<>();
|
||||
int x = piece.getX(), y = piece.getY();
|
||||
int dir = piece.isWhite() ? 1 : -1;
|
||||
|
|
@ -266,11 +266,12 @@ public class Board {
|
|||
}
|
||||
|
||||
public Board(String[] array) {
|
||||
this.pieces = new ArrayList<>();
|
||||
//TODO
|
||||
|
||||
}
|
||||
|
||||
private Piece getPieceAt(int x, int y) {
|
||||
public Piece getPieceAt(int x, int y) {
|
||||
for (Piece piece : pieces) {
|
||||
if (piece.getX() == x && piece.getY() == y) {
|
||||
return piece;
|
||||
|
|
|
|||
Loading…
Reference in New Issue