コード例 #1
0
ファイル: Connect4.cs プロジェクト: paiston/Connect4Test
 /// <summary>
 /// Initialises a new game with specifed grid size.
 /// </summary>
 /// <param name="gridColumns">No. of columns in grid</param>
 /// <param name="gridRows">No. of rows in grid</param>
 public Connect4(IBoardSettings boardSettings, IMessage message)
 {
     //Initialise
     _Message = message;
     Winner = false;
     GameState = new State(boardSettings);
 }
コード例 #2
0
ファイル: State.cs プロジェクト: paiston/oldcrap
 /// <summary>
 /// New state base on old state
 /// </summary>
 /// <param name="original"></param>
 public State(State original)
 {
     Values = (int[,])original.Values.Clone();
     RowCount = (int[])original.RowCount.Clone();
     Turn = original.Turn;
     MoveCount = original.MoveCount;
 }
コード例 #3
0
ファイル: Connect4.cs プロジェクト: paiston/oldcrap
 /// <summary>
 /// Initialises a new game with specifed grid size.
 /// </summary>
 /// <param name="gridColumns">No. of columns in grid</param>
 /// <param name="gridRows">No. of rows in grid</param>
 public Connect4(IBoardSettings boardSettings, IMessage message)
 {
     //Initialise
     _Message = message;
     Winner = false;
     GameState = new State(boardSettings.Columns,boardSettings.Rows);
     GameState.Turn = 1;
 }
コード例 #4
0
ファイル: Connect4.cs プロジェクト: paiston/Connect4Test
        public bool Turn(int move)
        {
            try
            {
                State state = GameState.Move(move);

                if (state == null)
                    return false;

                GameState = state;
            }
            catch(Exception ex)
            {
                _Message.WriteLine(string.Format("Invalid move - {0}", ex.Message));
            }
            return true;
        }
コード例 #5
0
ファイル: State.cs プロジェクト: paiston/oldcrap
        /// <summary>
        /// Creates a new state after the move
        /// </summary>
        /// <param name="iMove">A number between 1-7 representing the chosen column.</param>
        /// <returns></returns>
        public State Move(int iMove)
        {
            State state = new State(this);

            if (iMove < 1 || iMove > Columns)
            {
                throw new ArgumentOutOfRangeException(string.Format("Specified column {1} is not valid.  Column index must be between 1 and {0}.", Columns, iMove));
            }

            int m = iMove - 1;

            if (state.RowCount[m] == Rows) return null;  //column full.

            state.RowCount[m]++;
            state.Values[m, (Rows - state.RowCount[m])] = state.Turn; //updates the board.
            state.Turn = (state.Turn == 1) ? 2 : 1; //switch player.
            state.MoveCount++;

            return state;
        }