Fix: GameTest and Game

This commit is contained in:
MatteoPellegrino05
2026-04-25 20:16:59 +02:00
parent ee87efcc48
commit 29df367e85
2 changed files with 189 additions and 80 deletions
@@ -157,8 +157,9 @@ public class Game implements Serializable {
* @throws IllegalArgumentException if {@code nPlayers < 0} or {@code nPlayers > 5}.
*/
public Game(int nPlayers) throws IllegalArgumentException{
if(nPlayers < 0||nPlayers > 5)
if(nPlayers !=0 && (nPlayers < 2 || nPlayers > 5)) {
throw new IllegalArgumentException();
}
this.nPlayers = nPlayers;
board=new Board(nPlayers);
slotMap = new LinkedHashMap<>();
@@ -406,7 +407,7 @@ public class Game implements Serializable {
{
return false;
}
if(!player.equals(currentState.getCurrentPlayer()))
{
return false;
@@ -497,8 +498,8 @@ public class Game implements Serializable {
else {
return false;
}
nextPlayerSetup();
OptionalCardQueue.removeIf(x->x.equals(player));
nextPlayerSetup();
return true;
}
@@ -588,7 +589,7 @@ public class Game implements Serializable {
{
OptionalCardQueue.add(e.getKey());
}
currentState.PlayerUpdate(OptionalCardQueue.remove(), null);
currentState.PlayerUpdate(OptionalCardQueue.poll(), null);
if(currentState.getCurrentPlayer()==null)
{
currentState.GameStageUpdate(GameStages.RESOLVING_EVENT);
@@ -605,14 +606,27 @@ public class Game implements Serializable {
return;
}
return;
}
}
if(GameStages.OPTIONAL_CARD_EFFECT==currentState.getGameStage()) {
currentState.PlayerUpdate(OptionalCardQueue.remove(), null);
if(currentState.getCurrentPlayer()==null)
{
currentState.GameStageUpdate(GameStages.RESOLVING_EVENT);
if (GameStages.OPTIONAL_CARD_EFFECT == currentState.getGameStage()) {
Player optionalPlayer = OptionalCardQueue.poll();
if (optionalPlayer != null) {
currentState.PlayerUpdate(optionalPlayer, null);
return;
}
currentState.GameStageUpdate(GameStages.RESOLVING_EVENT);
if (currentState.getRound() < 10) {
nextRound();
} else {
EventResolution();
currentState.GameStageUpdate(GameStages.ENDING);
endGame();
}
}
}
@@ -657,9 +671,13 @@ public class Game implements Serializable {
{
currentState.GameStageUpdate(GameStages.ENDING);
endGame();
return;
}
if(currentState.getEra()!= board.nextRound())
if(currentState.getEra()!= board.nextRound()) {
currentState.EraUpdate();
}
currentState.RoundUpdate();
}
@@ -683,11 +701,28 @@ public class Game implements Serializable {
* @param nPlayers the new configured number of players.
* @return {@code true} if the number of players is updated, {@code false} otherwise.
*/
public boolean setNPlayer(int nPlayers)
{
if(this.nPlayers!=0)
public boolean setNPlayer(int nPlayers) {
if (this.nPlayers != 0) {
return false;
this.nPlayers=nPlayers;
}
if (nPlayers < 2 || nPlayers > 5) {
return false;
}
this.nPlayers = nPlayers;
board = new Board(nPlayers);
slotMap = new LinkedHashMap<>();
for (Slot s : board.getSlotList()) {
slotMap.put(s, null);
}
currentState = new CurrentState();
playersList = new ArrayList<>();
OptionalCardQueue = new LinkedList<>();
return true;
}