📄 connectfourgame.java
字号:
package edu.rit.cs.mlr5773.connectfour;import java.util.*;/** * Simulates a game of Connect Four. Keeps track of who moves when, * and who won. Calls move() on the player objects at the appropriate * times. * * @author Mark Roth */public class ConnectFourGame extends Observable { /** The current game board */ private Board currentBoard; /** The current strategy for player 2 */ private Player player2; /** The current strategy for player 1 */ private Player player1; /** Whose turn is it? */ private int currentPlayer; /* Who is the current winner of the game? * -1 = Nobody Wins * 0 = Tie Game * 1 = Red Wins * 2 = Black Wins */ private int winner; /** The name of the players */ public static final String[] name = { "Tie", "Red", "Black" }; /** The current message to be displayed (e.g. Black's Turn) */ private String currentMessage; /** The supplemental message (e.g. Black Score = 500) */ private String supplementalMessage; /** * Initialize a new game of Connect Four */ public ConnectFourGame(){ currentBoard = new Board(); currentMessage = ""; supplementalMessage = ""; } /** * Returns the current game board */ public Board getCurrentBoard(){ return currentBoard; } /** * Returns player 1 */ public Player getPlayer1(){ return player1; } /** * Returns player 2 */ public Player getPlayer2(){ return player2; } /** * Returns the current winner of the game * * @see winner */ public int getWinner() { return winner; } /** * Returns true if the given move is valid, or false otherwise. */ public boolean isValidMove( int place ) { return getCurrentBoard().isValidMove( place ); } /** * Process a request by a player to move in the given location. The move * is assumed to be valid. */ public void move( int place ) { Board board = getCurrentBoard(); int winner; board.move( place, currentPlayer ); winner = board.getWinner(); if( winner == -1 ) { if( currentPlayer == 1 ) { currentPlayer = 2; currentMessage = name[ currentPlayer ] + "'s Turn..."; writeMessage( supplementalMessage ); getPlayer2().move(); } else { currentPlayer = 1; currentMessage = name[ currentPlayer ] + "'s Turn..."; writeMessage( supplementalMessage ); getPlayer1().move(); } } else { this.winner = winner; currentMessage = "Winner: " + name[ winner ]; writeMessage( supplementalMessage ); } } /** * Sets the current board for this game to operate on. * Useful for loading games or swapping boards. */ public void setCurrentBoard( Board board ) { currentBoard = board; } /** * Sets the strategy for player 1 */ public void setPlayer1(Player player1){ this.player1 = player1; } /** * Sets the strategy for player 2 */ public void setPlayer2(Player player2){ this.player2 = player2; } /** * Starts the game by asking player1 for his move. */ public void start() { currentPlayer = 1; currentMessage = name[ currentPlayer ] + "'s Turn..."; writeMessage( supplementalMessage ); getPlayer1().move(); } /** * Process a request by a player to write the given supplemental message. */ public void writeMessage( String message ) { setChanged(); supplementalMessage = message; notifyObservers( currentMessage + " " + supplementalMessage ); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -