package chess.controller.commands; import chess.controller.Command; import chess.controller.event.GameListener; import chess.model.ChessBoard; import chess.model.Color; import chess.model.Coordinate; import chess.model.Game; import chess.model.pieces.Bishop; import chess.model.pieces.King; import chess.model.pieces.Knight; import chess.model.pieces.Pawn; import chess.model.pieces.Queen; import chess.model.pieces.Rook; /** * Command to create a new game. */ public class NewGameCommand extends Command { public CommandResult execute(Game game, GameListener outputSystem) { final ChessBoard board = game.getBoard(); board.clearBoard(); for (int i = 0; i < 8; i++) { board.pieceComes(new Pawn(Color.Black), new Coordinate(i, 1)); board.pieceComes(new Pawn(Color.White), new Coordinate(i, Coordinate.VALUE_MAX - 2)); } board.pieceComes(new Rook(Color.Black), new Coordinate(0, 0)); board.pieceComes(new Rook(Color.Black), new Coordinate(Coordinate.VALUE_MAX - 1, 0)); board.pieceComes(new Rook(Color.White), new Coordinate(0, Coordinate.VALUE_MAX - 1)); board.pieceComes(new Rook(Color.White), new Coordinate(Coordinate.VALUE_MAX - 1, Coordinate.VALUE_MAX - 1)); board.pieceComes(new Knight(Color.Black), new Coordinate(1, 0)); board.pieceComes(new Knight(Color.Black), new Coordinate(Coordinate.VALUE_MAX - 2, 0)); board.pieceComes(new Knight(Color.White), new Coordinate(1, Coordinate.VALUE_MAX - 1)); board.pieceComes(new Knight(Color.White), new Coordinate(Coordinate.VALUE_MAX - 2, Coordinate.VALUE_MAX - 1)); board.pieceComes(new Bishop(Color.Black), new Coordinate(2, 0)); board.pieceComes(new Bishop(Color.Black), new Coordinate(Coordinate.VALUE_MAX - 3, 0)); board.pieceComes(new Bishop(Color.White), new Coordinate(2, Coordinate.VALUE_MAX - 1)); board.pieceComes(new Bishop(Color.White), new Coordinate(Coordinate.VALUE_MAX - 3, Coordinate.VALUE_MAX - 1)); board.pieceComes(new Queen(Color.Black), new Coordinate(3, 0)); board.pieceComes(new King(Color.Black), new Coordinate(4, 0)); board.pieceComes(new Queen(Color.White), new Coordinate(3, Coordinate.VALUE_MAX - 1)); board.pieceComes(new King(Color.White), new Coordinate(4, Coordinate.VALUE_MAX - 1)); game.reset(); outputSystem.onGameStart(); outputSystem.onPlayerTurn(game.getPlayerTurn(), false); return CommandResult.NotMoved; } }