game-client

Play TicTacToe and Reversi
Log | Files | Refs

Game.java (1352B)


      1 package nl.isygameclient.models;
      2 
      3 
      4 import nl.isygameclient.models.board.Board;
      5 import nl.isygameclient.models.board.HistoryBoard;
      6 import nl.isygameclient.util.Vector2D;
      7 
      8 import java.util.List;
      9 
     10 public abstract class Game {
     11 
     12     protected PlayerManager playerManager;
     13     protected HistoryBoard<Player> board;
     14 
     15     public Game(PlayerManager playerManager, HistoryBoard<Player> board) {
     16         this.playerManager = playerManager;
     17         this.board = board;
     18 
     19         for (Player player : playerManager.getPlayers()) {
     20             player.setGame(this);
     21         }
     22     }
     23 
     24     public abstract void restart();
     25 
     26     public abstract boolean move(Player player, Vector2D<Integer, Integer> pos);
     27 
     28     public abstract boolean isMoveValid(Player player, Vector2D<Integer, Integer> pos);
     29 
     30     public abstract boolean isDraw();
     31 
     32     public abstract boolean isGameOver();
     33 
     34     public abstract boolean isWinner(Player player);
     35 
     36     public void undo() {
     37         board.undo();
     38         playerManager.previousPlayer();
     39     }
     40 
     41     public abstract List<Vector2D<Integer, Integer>> getValidMoves(Player player);
     42 
     43     public abstract List<Player> getWinners();
     44 
     45     public abstract int getPlayerScore(Player player);
     46 
     47     public PlayerManager getPlayerManager() {
     48         return playerManager;
     49     }
     50 
     51     public HistoryBoard<Player> getBoard() {
     52         return board;
     53     }
     54 }