forked from fauvet/API_BUT5.5
Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
2e841df6b4 | |||
8580e7394a | |||
0ec416c794 | |||
45f9899994 | |||
1c2ca7a251 | |||
461cec68c4 | |||
5641c2d32a | |||
a048b85ce7 |
3
.idea/.gitignore
vendored
Normal file
3
.idea/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
8
.idea/artifacts/API_BUT5_5_jar.xml
Normal file
8
.idea/artifacts/API_BUT5_5_jar.xml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<component name="ArtifactManager">
|
||||||
|
<artifact type="jar" name="API_BUT5.5:jar">
|
||||||
|
<output-path>$PROJECT_DIR$/out/artifacts/API_BUT5_5_jar</output-path>
|
||||||
|
<root id="archive" name="API_BUT5.5.jar">
|
||||||
|
<element id="module-output" name="API_BUT5.5" />
|
||||||
|
</root>
|
||||||
|
</artifact>
|
||||||
|
</component>
|
8
.idea/artifacts/API_BUT5_5_jar2.xml
Normal file
8
.idea/artifacts/API_BUT5_5_jar2.xml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<component name="ArtifactManager">
|
||||||
|
<artifact type="jar" name="API_BUT5.5:jar2">
|
||||||
|
<output-path>$PROJECT_DIR$/out/artifacts/API_BUT5_5_jar2</output-path>
|
||||||
|
<root id="archive" name="API_BUT5.5.jar">
|
||||||
|
<element id="module-output" name="API_BUT5.5" />
|
||||||
|
</root>
|
||||||
|
</artifact>
|
||||||
|
</component>
|
9
.idea/libraries/API_BUT5_5.xml
Normal file
9
.idea/libraries/API_BUT5_5.xml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="API_BUT5.5">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/out/artifacts/API_BUT5_5_jar/API_BUT5.5.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES />
|
||||||
|
</library>
|
||||||
|
</component>
|
6
.idea/misc.xml
Normal file
6
.idea/misc.xml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectRootManager" version="2" project-jdk-name="21" project-jdk-type="JavaSDK">
|
||||||
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
|
</component>
|
||||||
|
</project>
|
8
.idea/modules.xml
Normal file
8
.idea/modules.xml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/API_BUT5.5.iml" filepath="$PROJECT_DIR$/API_BUT5.5.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
6
.idea/vcs.xml
Normal file
6
.idea/vcs.xml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -10,4 +10,7 @@ Création de l'API publique
|
|||||||
- Ajout de la documentation
|
- Ajout de la documentation
|
||||||
|
|
||||||
### 09/10/2024 - 10h10 :
|
### 09/10/2024 - 10h10 :
|
||||||
- Ajout de l'archive JAR
|
- Ajout de l'archive JAR
|
||||||
|
|
||||||
|
### 09/10/2024 - 16h25 :
|
||||||
|
- Ajout de méthodes et d'une classe pour l'implémentation du carnet
|
Binary file not shown.
3
out/production/API_BUT5.5/META-INF/MANIFEST.MF
Normal file
3
out/production/API_BUT5.5/META-INF/MANIFEST.MF
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
Manifest-Version: 1.0
|
||||||
|
Main-Class: Main
|
||||||
|
|
BIN
out/production/API_BUT5.5/Main.class
Normal file
BIN
out/production/API_BUT5.5/Main.class
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
3
src/META-INF/MANIFEST.MF
Normal file
3
src/META-INF/MANIFEST.MF
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
Manifest-Version: 1.0
|
||||||
|
Main-Class: Main
|
||||||
|
|
@ -1,26 +1,5 @@
|
|||||||
import java.util.Iterator;
|
|
||||||
|
|
||||||
import fr.iut_fbleau.raw_api_body.entity.*;
|
|
||||||
|
|
||||||
public class Main {
|
public class Main {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
PlateauNim jeu = new PlateauNim(5, Player.JOUEUR1);
|
System.out.println("Hello world!");
|
||||||
jeu.doPly(new NimPly(2));
|
|
||||||
jeu.doPly(new NimPly(1));
|
|
||||||
jeu.doPly(new NimPly(1));
|
|
||||||
jeu.doPly(new NimPly(1));
|
|
||||||
if (jeu.isFinished()) {
|
|
||||||
int resultat = jeu.getResult();
|
|
||||||
if (resultat == Result.PERDU) {
|
|
||||||
System.out.println("Le joueur 1 a perdu !");
|
|
||||||
} else if (resultat == Result.GAGNE) {
|
|
||||||
System.out.println("Le joueur 1 a gagné !");
|
|
||||||
} else {
|
|
||||||
System.out.println("Égalité !");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
System.out.println("C'est pas fini : " + jeu.isFinished());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,24 +0,0 @@
|
|||||||
package fr.iut_fbleau.raw_api_body.entity;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents a move in the Nim game.
|
|
||||||
*/
|
|
||||||
public class NimPly extends Ply {
|
|
||||||
private final int allumettes;
|
|
||||||
|
|
||||||
// Constructor to initialize the move with a number of allumettes to remove
|
|
||||||
public NimPly(int allumettes) {
|
|
||||||
this.allumettes = allumettes;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Returns the number of allumettes removed
|
|
||||||
public int getallumettes() {
|
|
||||||
return allumettes;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "Remove " + allumettes + " allumettes.";
|
|
||||||
}
|
|
||||||
}
|
|
@ -35,7 +35,7 @@ public interface Plateau {
|
|||||||
*
|
*
|
||||||
* @return the result
|
* @return the result
|
||||||
*/
|
*/
|
||||||
int getResult();
|
Result getResult();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List next legals moves
|
* List next legals moves
|
||||||
@ -63,4 +63,44 @@ public interface Plateau {
|
|||||||
*/
|
*/
|
||||||
void undoPly(Ply ply);
|
void undoPly(Ply ply);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used to verify if the Situation is already in the bookmarks
|
||||||
|
*
|
||||||
|
* @throws UnsupportedOperationException if the method is not yet implemented
|
||||||
|
*
|
||||||
|
* @return the answer
|
||||||
|
*/
|
||||||
|
default boolean isAlreadyDone(){
|
||||||
|
throw new UnsupportedOperationException("Feature not yet implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used to check the value of the current Situation
|
||||||
|
*
|
||||||
|
* @throws UnsupportedOperationException if the method is not yet implemented
|
||||||
|
*
|
||||||
|
* @throws IllegalStateException if the Situation is not in the bookmarks
|
||||||
|
*
|
||||||
|
* @return the value
|
||||||
|
*/
|
||||||
|
default int getSituationValue(){
|
||||||
|
throw new UnsupportedOperationException("Feature not yet implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used to add a Situation to the bookmarks
|
||||||
|
*
|
||||||
|
* @throws UnsupportedOperationException if the method is not yet implemented
|
||||||
|
*
|
||||||
|
* @throws IllegalStateException if the Situation is already in the bookmarks
|
||||||
|
*/
|
||||||
|
default void addSituation(Result res){
|
||||||
|
throw new UnsupportedOperationException("Feature not yet implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,108 +0,0 @@
|
|||||||
package fr.iut_fbleau.raw_api_body.entity;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Implements the Plateau interface for the game of Nim.
|
|
||||||
*/
|
|
||||||
public class PlateauNim implements Plateau {
|
|
||||||
|
|
||||||
private int allumettesRestantes; // Number of remaining allumettes
|
|
||||||
private Player currentPlayer; // Current player
|
|
||||||
private boolean gameFinished; // Game status
|
|
||||||
private int result; // Game result: 1 (win), 0 (draw), -1 (loss)
|
|
||||||
private List<Ply> playHistory; // History of moves
|
|
||||||
|
|
||||||
// Constructor initializes the game with a given number of allumettes and a starting player
|
|
||||||
public PlateauNim(int initialallumettes, Player startingPlayer) {
|
|
||||||
this.allumettesRestantes = initialallumettes;
|
|
||||||
this.currentPlayer = startingPlayer;
|
|
||||||
this.gameFinished = false;
|
|
||||||
this.result = 0;
|
|
||||||
this.playHistory = new ArrayList<>();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Player getPlayer() {
|
|
||||||
if (gameFinished) {
|
|
||||||
throw new NullPointerException("Game is over.");
|
|
||||||
}
|
|
||||||
return this.currentPlayer;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isFinished() {
|
|
||||||
return this.gameFinished;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getResult() {
|
|
||||||
if (!gameFinished) {
|
|
||||||
throw new NullPointerException("Game is not over.");
|
|
||||||
}
|
|
||||||
return this.result;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Iterator<Ply> givePlies() {
|
|
||||||
if (gameFinished) {
|
|
||||||
throw new NullPointerException("Game is over.");
|
|
||||||
}
|
|
||||||
// Generate legal moves (remove 1, 2, or 3 allumettes, but not more than remaining allumettes)
|
|
||||||
List<Ply> legalPlies = new ArrayList<>();
|
|
||||||
for (int i = 1; i <= Math.min(3, allumettesRestantes); i++) {
|
|
||||||
legalPlies.add(new NimPly(i));
|
|
||||||
}
|
|
||||||
return legalPlies.iterator();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void doPly(Ply ply) {
|
|
||||||
if (!(ply instanceof NimPly)) {
|
|
||||||
throw new IllegalArgumentException("Invalid move type.");
|
|
||||||
}
|
|
||||||
NimPly nimPly = (NimPly) ply;
|
|
||||||
|
|
||||||
if (nimPly.getallumettes() < 1 || nimPly.getallumettes() > Math.min(3, allumettesRestantes)) {
|
|
||||||
throw new IllegalArgumentException("Invalid move.");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update the state
|
|
||||||
allumettesRestantes -= nimPly.getallumettes();
|
|
||||||
playHistory.add(nimPly);
|
|
||||||
|
|
||||||
// Check if game is finished
|
|
||||||
if (allumettesRestantes == 0) {
|
|
||||||
gameFinished = true;
|
|
||||||
if (this.currentPlayer == Player.JOUEUR1){
|
|
||||||
result = -1; // Player 2 Win
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
result = 1; // Player 1 Win
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Switch players if game is not finished
|
|
||||||
currentPlayer = (currentPlayer == Player.JOUEUR1) ? Player.JOUEUR2 : Player.JOUEUR1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void undoPly(Ply ply) {
|
|
||||||
if (playHistory.isEmpty()) {
|
|
||||||
throw new IllegalStateException("No moves to undo.");
|
|
||||||
}
|
|
||||||
if (!playHistory.get(playHistory.size() - 1).equals(ply)) {
|
|
||||||
throw new IllegalStateException("Cannot undo a non-last move.");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Revert the move
|
|
||||||
NimPly lastMove = (NimPly) playHistory.remove(playHistory.size() - 1);
|
|
||||||
allumettesRestantes += lastMove.getallumettes();
|
|
||||||
|
|
||||||
// Switch back to previous player
|
|
||||||
currentPlayer = (currentPlayer == Player.JOUEUR1) ? Player.JOUEUR2 : Player.JOUEUR1;
|
|
||||||
gameFinished = false; // If game was finished, it's no longer
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,218 +0,0 @@
|
|||||||
package fr.iut_fbleau.raw_api_body.entity;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Implements the Plateau interface for the game of Reversi.
|
|
||||||
*/
|
|
||||||
public class PlateauReversi implements Plateau {
|
|
||||||
|
|
||||||
private Player[][] board; // The game board
|
|
||||||
private Player currentPlayer; // Current player
|
|
||||||
private boolean gameFinished; // Game status
|
|
||||||
private List<Ply> movesHistory; // History of moves
|
|
||||||
private int blackCount; // Count of black discs
|
|
||||||
private int whiteCount; // Count of white discs
|
|
||||||
|
|
||||||
// Constructor initializes the game board and sets the starting player
|
|
||||||
public PlateauReversi() {
|
|
||||||
this.board = new Player[8][8];
|
|
||||||
initializeBoard();
|
|
||||||
this.currentPlayer = Player.JOUEUR1; // JOUEUR1 is black
|
|
||||||
this.gameFinished = false;
|
|
||||||
this.movesHistory = new ArrayList<>();
|
|
||||||
this.blackCount = 2; // Starting discs for black
|
|
||||||
this.whiteCount = 2; // Starting discs for white
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initialize the board with the starting positions
|
|
||||||
private void initializeBoard() {
|
|
||||||
board[3][3] = Player.JOUEUR2; // White
|
|
||||||
board[3][4] = Player.JOUEUR1; // Black
|
|
||||||
board[4][3] = Player.JOUEUR1; // Black
|
|
||||||
board[4][4] = Player.JOUEUR2; // White
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Player getPlayer() {
|
|
||||||
if (gameFinished) {
|
|
||||||
throw new NullPointerException("Game is over.");
|
|
||||||
}
|
|
||||||
return this.currentPlayer;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isFinished() {
|
|
||||||
return this.gameFinished;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getResult() {
|
|
||||||
if (!gameFinished) {
|
|
||||||
throw new NullPointerException("Game is not over.");
|
|
||||||
}
|
|
||||||
if (blackCount > whiteCount) {
|
|
||||||
return Result.GAGNE; // Black wins
|
|
||||||
} else if (blackCount < whiteCount) {
|
|
||||||
return Result.PERDU; // Black loses
|
|
||||||
} else {
|
|
||||||
return Result.EGALITE; // Draw
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Iterator<Ply> givePlies() {
|
|
||||||
if (gameFinished) {
|
|
||||||
throw new NullPointerException("Game is over.");
|
|
||||||
}
|
|
||||||
|
|
||||||
List<Ply> legalMoves = new ArrayList<>();
|
|
||||||
// Check all positions on the board for legal moves
|
|
||||||
for (int row = 0; row < 8; row++) {
|
|
||||||
for (int col = 0; col < 8; col++) {
|
|
||||||
if (isLegalMove(row, col)) {
|
|
||||||
legalMoves.add(new PlyReversi(row, col));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return legalMoves.iterator();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void doPly(Ply ply) {
|
|
||||||
if (!(ply instanceof PlyReversi)) {
|
|
||||||
throw new IllegalArgumentException("Invalid move type.");
|
|
||||||
}
|
|
||||||
PlyReversi move = (PlyReversi) ply;
|
|
||||||
|
|
||||||
if (!isLegalMove(move.getRow(), move.getCol())) {
|
|
||||||
throw new IllegalArgumentException("Invalid move.");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Place the disc
|
|
||||||
board[move.getRow()][move.getCol()] = currentPlayer;
|
|
||||||
flipDiscs(move.getRow(), move.getCol());
|
|
||||||
|
|
||||||
// Update counts
|
|
||||||
updateCounts();
|
|
||||||
|
|
||||||
// Add to history
|
|
||||||
movesHistory.add(move);
|
|
||||||
|
|
||||||
// Check if the game is finished
|
|
||||||
if (blackCount + whiteCount == 64 || !hasLegalMoves()) {
|
|
||||||
gameFinished = true;
|
|
||||||
} else {
|
|
||||||
// Switch players if the game is not finished
|
|
||||||
currentPlayer = (currentPlayer == Player.JOUEUR1) ? Player.JOUEUR2 : Player.JOUEUR1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void undoPly(Ply ply) {
|
|
||||||
if (movesHistory.isEmpty()) {
|
|
||||||
throw new IllegalStateException("No moves to undo.");
|
|
||||||
}
|
|
||||||
if (!movesHistory.get(movesHistory.size() - 1).equals(ply)) {
|
|
||||||
throw new IllegalStateException("Cannot undo a non-last move.");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Revert the move
|
|
||||||
PlyReversi lastMove = (PlyReversi) movesHistory.remove(movesHistory.size() - 1);
|
|
||||||
board[lastMove.getRow()][lastMove.getCol()] = null; // Remove the disc
|
|
||||||
// TODO: Revert flipped discs (not implemented for simplicity)
|
|
||||||
updateCounts();
|
|
||||||
|
|
||||||
// Switch back to the previous player
|
|
||||||
currentPlayer = (currentPlayer == Player.JOUEUR1) ? Player.JOUEUR2 : Player.JOUEUR1;
|
|
||||||
gameFinished = false; // If the game was finished, it's no longer
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if the move is legal
|
|
||||||
private boolean isLegalMove(int row, int col) {
|
|
||||||
if (board[row][col] != null) {
|
|
||||||
return false; // Must be empty
|
|
||||||
}
|
|
||||||
// Check all directions for valid flips
|
|
||||||
return checkDirection(row, col, 1, 0) || // Right
|
|
||||||
checkDirection(row, col, -1, 0) || // Left
|
|
||||||
checkDirection(row, col, 0, 1) || // Down
|
|
||||||
checkDirection(row, col, 0, -1) || // Up
|
|
||||||
checkDirection(row, col, 1, 1) || // Down-right
|
|
||||||
checkDirection(row, col, 1, -1) || // Down-left
|
|
||||||
checkDirection(row, col, -1, 1) || // Up-right
|
|
||||||
checkDirection(row, col, -1, -1); // Up-left
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check a specific direction for valid flips
|
|
||||||
private boolean checkDirection(int row, int col, int dRow, int dCol) {
|
|
||||||
int r = row + dRow;
|
|
||||||
int c = col + dCol;
|
|
||||||
boolean hasOpponentDisc = false;
|
|
||||||
|
|
||||||
while (r >= 0 && r < 8 && c >= 0 && c < 8) {
|
|
||||||
if (board[r][c] == null) {
|
|
||||||
return false; // Found empty space
|
|
||||||
}
|
|
||||||
if (board[r][c] == currentPlayer) {
|
|
||||||
return hasOpponentDisc; // Valid move if we have seen opponent discs
|
|
||||||
}
|
|
||||||
hasOpponentDisc = true;
|
|
||||||
r += dRow;
|
|
||||||
c += dCol;
|
|
||||||
}
|
|
||||||
return false; // No valid flips found
|
|
||||||
}
|
|
||||||
|
|
||||||
// Flip discs after a valid move
|
|
||||||
private void flipDiscs(int row, int col) {
|
|
||||||
for (int dRow = -1; dRow <= 1; dRow++) {
|
|
||||||
for (int dCol = -1; dCol <= 1; dCol++) {
|
|
||||||
if (dRow == 0 && dCol == 0) continue; // Skip the center
|
|
||||||
if (checkDirection(row, col, dRow, dCol)) {
|
|
||||||
flipInDirection(row, col, dRow, dCol);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Flip discs in a specified direction
|
|
||||||
private void flipInDirection(int row, int col, int dRow, int dCol) {
|
|
||||||
int r = row + dRow;
|
|
||||||
int c = col + dCol;
|
|
||||||
while (board[r][c] != currentPlayer) {
|
|
||||||
board[r][c] = currentPlayer; // Flip the disc
|
|
||||||
r += dRow;
|
|
||||||
c += dCol;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update the count of black and white discs
|
|
||||||
private void updateCounts() {
|
|
||||||
blackCount = 0;
|
|
||||||
whiteCount = 0;
|
|
||||||
for (int row = 0; row < 8; row++) {
|
|
||||||
for (int col = 0; col < 8; col++) {
|
|
||||||
if (board[row][col] == Player.JOUEUR1) {
|
|
||||||
blackCount++;
|
|
||||||
} else if (board[row][col] == Player.JOUEUR2) {
|
|
||||||
whiteCount++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if there are any legal moves available for the current player
|
|
||||||
private boolean hasLegalMoves() {
|
|
||||||
for (int row = 0; row < 8; row++) {
|
|
||||||
for (int col = 0; col < 8; col++) {
|
|
||||||
if (isLegalMove(row, col)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
@ -2,5 +2,4 @@ package fr.iut_fbleau.raw_api_body.entity;
|
|||||||
|
|
||||||
public abstract class Ply {
|
public abstract class Ply {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
|
@ -1,45 +0,0 @@
|
|||||||
package fr.iut_fbleau.raw_api_body.entity;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents a move in the Reversi game.
|
|
||||||
*/
|
|
||||||
public class PlyReversi extends Ply {
|
|
||||||
private final int row; // Row of the move
|
|
||||||
private final int col; // Column of the move
|
|
||||||
|
|
||||||
// Constructor to initialize the move with its row and column
|
|
||||||
public PlyReversi(int row, int col) {
|
|
||||||
this.row = row;
|
|
||||||
this.col = col;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Returns the row of the move
|
|
||||||
public int getRow() {
|
|
||||||
return row;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Returns the column of the move
|
|
||||||
public int getCol() {
|
|
||||||
return col;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object obj) {
|
|
||||||
if (this == obj) return true;
|
|
||||||
if (obj == null || getClass() != obj.getClass()) return false;
|
|
||||||
PlyReversi that = (PlyReversi) obj;
|
|
||||||
return row == that.row && col == that.col;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
int result = Integer.hashCode(row);
|
|
||||||
result = 31 * result + Integer.hashCode(col);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "Move to (" + row + ", " + col + ")";
|
|
||||||
}
|
|
||||||
}
|
|
@ -3,19 +3,8 @@ package fr.iut_fbleau.raw_api_body.entity;
|
|||||||
/**
|
/**
|
||||||
* The type Result.
|
* The type Result.
|
||||||
*/
|
*/
|
||||||
public class Result {
|
public enum Result {
|
||||||
|
GAGNE,
|
||||||
/**
|
EGALITE,
|
||||||
* The constant GAGNE.
|
PERDU;
|
||||||
*/
|
}
|
||||||
public final static int GAGNE = 1;
|
|
||||||
/**
|
|
||||||
* The constant EGALITE.
|
|
||||||
*/
|
|
||||||
public final static int EGALITE = 0;
|
|
||||||
/**
|
|
||||||
* The constant PERDU.
|
|
||||||
*/
|
|
||||||
public final static int PERDU = -1;
|
|
||||||
|
|
||||||
}
|
|
4
src/fr/iut_fbleau/raw_api_body/entity/Situation.java
Normal file
4
src/fr/iut_fbleau/raw_api_body/entity/Situation.java
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
package fr.iut_fbleau.raw_api_body.entity;
|
||||||
|
|
||||||
|
public abstract class Situation {
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user