mirror of
https://github.com/2OOP/pism.git
synced 2026-02-04 19:04:49 +00:00
added visual score to reversi
This commit is contained in:
@@ -10,6 +10,7 @@ import org.toop.app.widget.WidgetContainer;
|
|||||||
import org.toop.app.widget.view.GameView;
|
import org.toop.app.widget.view.GameView;
|
||||||
import org.toop.framework.eventbus.EventFlow;
|
import org.toop.framework.eventbus.EventFlow;
|
||||||
import org.toop.framework.eventbus.GlobalEventBus;
|
import org.toop.framework.eventbus.GlobalEventBus;
|
||||||
|
import org.toop.framework.game.games.reversi.BitboardReversi;
|
||||||
import org.toop.framework.gameFramework.controller.GameController;
|
import org.toop.framework.gameFramework.controller.GameController;
|
||||||
import org.toop.framework.gameFramework.model.game.threadBehaviour.SupportsOnlinePlay;
|
import org.toop.framework.gameFramework.model.game.threadBehaviour.SupportsOnlinePlay;
|
||||||
import org.toop.framework.gameFramework.model.game.TurnBasedGame;
|
import org.toop.framework.gameFramework.model.game.TurnBasedGame;
|
||||||
@@ -158,8 +159,14 @@ public class GenericGameController implements GameController {
|
|||||||
canvas.redraw(gameCopy);
|
canvas.redraw(gameCopy);
|
||||||
String gameType = game.getClass().getSimpleName().replace("Bitboard","");
|
String gameType = game.getClass().getSimpleName().replace("Bitboard","");
|
||||||
gameView.nextPlayer(true, getCurrentPlayer().getName(), game.getPlayer(1-getCurrentPlayerIndex()).getName(),gameType);
|
gameView.nextPlayer(true, getCurrentPlayer().getName(), game.getPlayer(1-getCurrentPlayerIndex()).getName(),gameType);
|
||||||
if (getCurrentPlayer() instanceof LocalPlayer && gameType.equals("Reversi")){
|
if (gameType.equals("Reversi")) {
|
||||||
((ReversiBitCanvas)canvas).drawLegalDots(gameCopy);
|
BitboardReversi reversiGame = (BitboardReversi) game;
|
||||||
|
BitboardReversi.Score reversiScore = reversiGame.getScore();
|
||||||
|
gameView.setPlayer1Score(reversiScore.black());
|
||||||
|
gameView.setPlayer2Score(reversiScore.white());
|
||||||
|
if (getCurrentPlayer() instanceof LocalPlayer) {
|
||||||
|
((ReversiBitCanvas)canvas).drawLegalDots(gameCopy);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,13 +11,19 @@ import org.toop.framework.game.players.OnlinePlayer;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
public class ReversiBitController extends GenericGameController {
|
public class ReversiBitController extends GenericGameController {
|
||||||
|
|
||||||
|
private BitboardReversi game;
|
||||||
|
|
||||||
public ReversiBitController(Player[] players) {
|
public ReversiBitController(Player[] players) {
|
||||||
BitboardReversi game = new BitboardReversi();
|
BitboardReversi game = new BitboardReversi();
|
||||||
game.init(players);
|
game.init(players);
|
||||||
|
|
||||||
ThreadBehaviour thread = Arrays.stream(players).anyMatch(e -> e instanceof OnlinePlayer) ?
|
ThreadBehaviour thread = Arrays.stream(players).anyMatch(e -> e instanceof OnlinePlayer) ?
|
||||||
new OnlineThreadBehaviour(game) : new LocalThreadBehaviour(game);
|
new OnlineThreadBehaviour(game) : new LocalThreadBehaviour(game);
|
||||||
|
|
||||||
super(new ReversiBitCanvas(), game, thread, "Reversi");
|
super(new ReversiBitCanvas(), game, thread, "Reversi");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BitboardReversi.Score getScore() {
|
||||||
|
return game.getScore();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import org.toop.app.widget.complex.ConfirmWidget;
|
|||||||
import org.toop.app.widget.complex.PopupWidget;
|
import org.toop.app.widget.complex.PopupWidget;
|
||||||
|
|
||||||
import javafx.geometry.Pos;
|
import javafx.geometry.Pos;
|
||||||
|
import org.toop.framework.game.games.reversi.BitboardReversi;
|
||||||
|
|
||||||
public final class GameOverPopup extends PopupWidget {
|
public final class GameOverPopup extends PopupWidget {
|
||||||
public GameOverPopup(boolean winOrTie, String winner) {
|
public GameOverPopup(boolean winOrTie, String winner) {
|
||||||
@@ -15,7 +16,6 @@ public final class GameOverPopup extends PopupWidget {
|
|||||||
else{
|
else{
|
||||||
confirmWidget.setMessage("It was a tie!");
|
confirmWidget.setMessage("It was a tie!");
|
||||||
}
|
}
|
||||||
|
|
||||||
confirmWidget.addButton("ok", this::hide);
|
confirmWidget.addButton("ok", this::hide);
|
||||||
|
|
||||||
add(Pos.CENTER, confirmWidget);
|
add(Pos.CENTER, confirmWidget);
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ public final class GameView extends ViewWidget {
|
|||||||
private final Text player2Header;
|
private final Text player2Header;
|
||||||
private Circle player1Icon;
|
private Circle player1Icon;
|
||||||
private Circle player2Icon;
|
private Circle player2Icon;
|
||||||
|
private final Text player1Score;
|
||||||
|
private final Text player2Score;
|
||||||
private final Button forfeitButton;
|
private final Button forfeitButton;
|
||||||
private final Button exitButton;
|
private final Button exitButton;
|
||||||
private final TextField chatInput;
|
private final TextField chatInput;
|
||||||
@@ -40,6 +42,8 @@ public final class GameView extends ViewWidget {
|
|||||||
player2Header = Primitive.header("");
|
player2Header = Primitive.header("");
|
||||||
player1Icon = new Circle();
|
player1Icon = new Circle();
|
||||||
player2Icon = new Circle();
|
player2Icon = new Circle();
|
||||||
|
player1Score = Primitive.header("");
|
||||||
|
player2Score = Primitive.header("");
|
||||||
|
|
||||||
if (onForfeit != null) {
|
if (onForfeit != null) {
|
||||||
forfeitButton = Primitive.button("forfeit", () -> onForfeit.run(), false);
|
forfeitButton = Primitive.button("forfeit", () -> onForfeit.run(), false);
|
||||||
@@ -153,14 +157,16 @@ public final class GameView extends ViewWidget {
|
|||||||
private void setPlayerInfoReversi() {
|
private void setPlayerInfoReversi() {
|
||||||
var player1box = Primitive.hbox(
|
var player1box = Primitive.hbox(
|
||||||
player1Icon,
|
player1Icon,
|
||||||
player1Header
|
player1Header,
|
||||||
|
player1Score
|
||||||
);
|
);
|
||||||
|
|
||||||
player1box.getStyleClass().add("hboxspacing");
|
player1box.getStyleClass().add("hboxspacing");
|
||||||
|
|
||||||
var player2box = Primitive.hbox(
|
var player2box = Primitive.hbox(
|
||||||
player2Icon,
|
player2Icon,
|
||||||
player2Header
|
player2Header,
|
||||||
|
player2Score
|
||||||
);
|
);
|
||||||
|
|
||||||
player2box.getStyleClass().add("hboxspacing");
|
player2box.getStyleClass().add("hboxspacing");
|
||||||
@@ -178,4 +184,12 @@ public final class GameView extends ViewWidget {
|
|||||||
player2Icon.setFill(Color.BLACK);
|
player2Icon.setFill(Color.BLACK);
|
||||||
add(Pos.TOP_RIGHT, playerInfo);
|
add(Pos.TOP_RIGHT, playerInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setPlayer1Score(int score) {
|
||||||
|
player1Score.setText("(" + Integer.toString(score) + ")");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPlayer2Score(int score) {
|
||||||
|
player2Score.setText("(" + Integer.toString(score) + ")");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user