Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions .idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 7 additions & 1 deletion src/cs3500/threetrios/ThreeTrios.java
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,12 @@ public static void main(String[] args) {
redPlayerType,
redStrategyType
);
Player bluePlayer = choosePlayer(
model,
ThreeTriosPlayer.BLUE,
bluePlayerType,
blueStrategyType
);

// -- Creating views, which display information
// (and potentially handel inputs for human players)--
Expand All @@ -104,7 +110,7 @@ public static void main(String[] args) {
PlayerController redController = new PlayerControllerImpl(model,
redView, redPlayer, ThreeTriosPlayer.RED);
ProviderController blueController = new ProviderController(adaptedModel,
ThreeTriosPlayer.BLUE, blueView);
blueView, bluePlayer, ThreeTriosPlayer.BLUE);

// -- Starting the game. --
model.startGame();
Expand Down
43 changes: 31 additions & 12 deletions src/cs3500/threetrios/controller/ProviderController.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package cs3500.threetrios.controller;

import java.util.Objects;

import cs3500.threetrios.model.ThreeTriosPlayer;
import cs3500.threetrios.provider.controller.Features;
import cs3500.threetrios.provider.model.IThreeTriosModel;
Expand All @@ -12,26 +14,39 @@
*/
public class ProviderController implements Features, PlayerController {
private final IThreeTriosModel model;
private final ThreeTriosPlayer player;
private final IPlayerView view;
private final Player player;
private final ThreeTriosPlayer playerColor;
private Integer selectedCardIdx;
private boolean isMyTurn;


/**
* Creates a new ProviderController that controls a view and model for a specific player.
* @param model The model to use.
* @param player The player to control for.
* @param playerColor The player to control for.
* @param view The view to use.
*/
public ProviderController(IThreeTriosModel model, ThreeTriosPlayer player, IPlayerView view) {
this.model = model;
public ProviderController(
IThreeTriosModel model,
IPlayerView view,
Player player,
ThreeTriosPlayer playerColor
) {
this.model = Objects.requireNonNull(model);
this.model.addFeaturesListener(this);

this.playerColor = Objects.requireNonNull(playerColor);

this.view = Objects.requireNonNull(view);
this.player = player;
this.view = view;
isMyTurn = false;
if (this.player != null) {
this.player.addControllerListener(this);
} else {
view.addFeaturesListener(this);
}

this.view.addFeaturesListener(this);
this.model.addFeaturesListener(this);
isMyTurn = false;
}

// Methods from Features //
Expand Down Expand Up @@ -99,6 +114,10 @@ public void setTurn(boolean turn) {
isMyTurn = turn;
view.blurScreen(!turn);
view.refresh();

if (isMyTurn && player!=null) {
player.itsYourTurn();
}
}

/**
Expand All @@ -119,7 +138,7 @@ public void gameOver() {
*/
@Override
public void handleCardSelection(Integer index, ThreeTriosPlayer player) {
if (player == this.player) {
if (player == this.playerColor) {
this.selectCard(index);
}
}
Expand All @@ -142,8 +161,8 @@ public void handleGridCellSelection(int row, int col) {
@Override
public void update() {
System.out.println("Provider updated with turn = " + model.getTurn());
System.out.println("Provider is " + player.getName());
this.setTurn(model.getTurn().equals(player.getName()));
System.out.println("Provider is " + playerColor.getName());
this.setTurn(model.getTurn().equals(playerColor.getName()));
if (model.isGameOver()) {
gameOver();
}
Expand All @@ -165,6 +184,6 @@ public void isYourTurn() {
*/
@Override
public ThreeTriosPlayer getPlayer() {
return player;
return playerColor;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public ThreeTriosMove findBestMove(
throws IllegalStateException {
if (tiedMoves == null || tiedMoves.isEmpty()) {
throw new IllegalStateException(
"The provided list of moved is empty! No move could be found!"
"The provided list of moves is empty! No move could be found!"
);
}

Expand Down
1 change: 1 addition & 0 deletions src/cs3500/threetrios/model/ThreeTriosGameModel.java
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@ private void update() {
}

if (!isGameOver() && !playerControllers.isEmpty()) {
System.out.println(playerControllers.get(currentPlayer) == null);
playerControllers.get(currentPlayer).isYourTurn();
}
}
Expand Down