Compare commits
2 Commits
02e83697f5
...
ad8ddd6418
| Author | SHA1 | Date |
|---|---|---|
|
|
ad8ddd6418 | |
|
|
bdf56dc250 |
|
|
@ -1,17 +1,39 @@
|
|||
package backend;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Random;
|
||||
|
||||
public class AutoPlayer {
|
||||
private Random rand = new Random();
|
||||
|
||||
|
||||
/**
|
||||
* returns the best Move to try on provided board for active player
|
||||
* @param board
|
||||
* @return
|
||||
*/
|
||||
public Move computeBestMove(Board board) {
|
||||
ArrayList<Move> possibleMoves = new ArrayList<>();
|
||||
boolean whiteTurn = board.isTurnWhite();
|
||||
|
||||
return null;
|
||||
for (Piece p : board.getPieces()) {
|
||||
if (p.isWhite() == whiteTurn) {
|
||||
ArrayList<int[]> moves = Move.getPossibleMoves(board, p);
|
||||
for (int[] pos : moves) {
|
||||
int toX = pos[0];
|
||||
int toY = pos[1];
|
||||
Piece captured = board.getPieceAt(toX, toY);
|
||||
Move move = new Move(p, p.getX(), p.getY(), toX, toY, captured);
|
||||
possibleMoves.add(move);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Si aucune possibilité => null
|
||||
if (possibleMoves.isEmpty()) return null;
|
||||
|
||||
// Cherche un coup qui capture une pièce
|
||||
for (Move m : possibleMoves) {
|
||||
if (m.getCapturedPiece() != null) {
|
||||
return m;
|
||||
}
|
||||
}
|
||||
|
||||
// Sinon, retourne un coup aléatoire
|
||||
return possibleMoves.get(rand.nextInt(possibleMoves.size()));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -257,6 +257,39 @@ public class Board {
|
|||
public void playMove(Move move) {
|
||||
if (move == null) return;
|
||||
|
||||
<<<<<<< HEAD
|
||||
Piece pieceToMove = getPieceAt(move.getFromX(), move.getFromY());
|
||||
if (pieceToMove == null) return;
|
||||
|
||||
// Supprimer la pièce d'origine
|
||||
pieces.remove(pieceToMove);
|
||||
|
||||
// Supprimer la pièce capturée (si elle existe)
|
||||
Piece captured = getPieceAt(move.getToX(), move.getToY());
|
||||
if (captured != null) {
|
||||
pieces.remove(captured);
|
||||
}
|
||||
|
||||
// Ajouter la nouvelle position
|
||||
Piece newPiece = new Piece(
|
||||
pieceToMove.getType(),
|
||||
pieceToMove.isWhite(),
|
||||
move.getToX(),
|
||||
move.getToY()
|
||||
);
|
||||
pieces.add(newPiece);
|
||||
|
||||
// Enregistrer dans l'historique pour undo
|
||||
moveHistory.add(move);
|
||||
|
||||
// Fin de tour
|
||||
turnNumber++;
|
||||
|
||||
// Désélection et surlignage off
|
||||
selectedX = -1;
|
||||
selectedY = -1;
|
||||
highlightedSquares.clear();
|
||||
=======
|
||||
// Remove the moved piece from its old position
|
||||
Piece from = move.getMovedPiece();
|
||||
pieces.removeIf(p -> p.getX() == from.getX() && p.getY() == from.getY());
|
||||
|
|
@ -272,8 +305,13 @@ public class Board {
|
|||
|
||||
moveHistory.add(move);
|
||||
turnNumber++;
|
||||
>>>>>>> branch 'master' of https://gitarero.ecam.fr/g.vancompernolle/OOP_2B3_Project.git
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
>>>>>>> branch 'master' of https://gitarero.ecam.fr/g.vancompernolle/OOP_2B3_Project.git
|
||||
public Piece getPieceAt(int x, int y) {
|
||||
for (Piece p : pieces) {
|
||||
if (p.getX() == x && p.getY() == y) {
|
||||
|
|
|
|||
|
|
@ -49,7 +49,8 @@ public class Game extends Thread {
|
|||
|
||||
private void aiPlayerTurn() {
|
||||
if(isAITurn()) {
|
||||
board.playMove(aiPlayer.computeBestMove(new Board(board)));
|
||||
Move m = aiPlayer.computeBestMove(board);
|
||||
board.playMove(m);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue