示例#1
0
        private Player CheckCurrentStatus(Game ticTacToe)
        {
            Player winner = Player.None;

            for (int i = 0; i < ticTacToe.Dimensions; i++)
            {
                winner = TicTacToeHelper.CheckRow(ticTacToe, i);
                if (winner == Player.None)
                {
                    winner = TicTacToeHelper.CheckColumn(ticTacToe, i);
                    if (winner != Player.None)
                    {
                        return(winner);
                    }
                }
                else
                {
                    break;
                }
            }

            if (winner == Player.None)
            {
                winner = TicTacToeHelper.CheckDiagonal(ticTacToe);
            }

            return(winner);
        }
示例#2
0
        public void CheckDiagonalTest()
        {
            CreateInstance(Constants.FILE_INPUT_PATH_CHECKDIAGONAL);

            var expectedWinner = Player.X;
            var actualWinner   = TicTacToeHelper.CheckDiagonal(_game);

            Assert.AreEqual(expectedWinner, actualWinner);
        }
示例#3
0
        public void CheckColumnTest()
        {
            CreateInstance(Constants.FILE_INPUT_PATH_CHECKCOLUMN);

            var expectedWinner = Player.O;
            var actualWinner   = TicTacToeHelper.CheckColumn(_game, 0);

            Assert.AreEqual(expectedWinner, actualWinner);
        }
示例#4
0
        public void CheckRowTest()
        {
            CreateInstance(Constants.FILE_INPUT_PATH_CHECKROW);

            var expectedWinner = Player.X;
            var actualWinner   = TicTacToeHelper.CheckRow(_game, 0);

            Assert.AreEqual(expectedWinner, actualWinner);
        }
示例#5
0
        public string GameOn(int coordinate, char symbol)
        {
            bool loop = true;

            do                                                //max 2 gånger: 1 varv - granska allt efter spelare; 2 varv - granskar allt efter datorn; då datorn hade sista drag loop = false
            {
                BoxList.Add(new BoxInfo(coordinate, symbol)); //upptagna boxes, varje gång efter drag

                bool continueGame = WinningMove(symbol);

                if (continueGame == false) //nån vann
                {
                    ActiveGameStatus.Text = $"Congratulation (( {symbol} )). You win!!!";
                    return(ActiveGameStatus.Status = "Winner");
                }

                if (BoxList.Count == 9) //alla boxes upptagna
                {
                    BordFull = true;
                    ActiveGameStatus.Text = "Game over. No winner.";
                    return(ActiveGameStatus.Status = "No winner");
                }

                if (symbol == 'x')//sista drag gjorts av spelare, dator måste spela
                {
                    var compMove = TicTacToeHelper.CompMove(BoxList);
                    coordinate = compMove.BoxCoordinate;
                    symbol     = compMove.Value;
                }
                else if (symbol == 'o')//sista drag gjorts av datorn, loop = false
                {
                    loop = false;
                }
            } while (loop);

            ActiveGameStatus.Text = "Next move, please...";//ingen vinnare, spelet sker
            return(ActiveGameStatus.Status = "Active");
        }
示例#6
0
 private Player CheckNextMove(Game game)
 {
     return(TicTacToeHelper.NextMove(game));
 }
示例#7
0
 public GameService(IGameRepository gameRepository,
                    TicTacToeHelper ticTacToeHelper)
 {
     _gameRepository  = gameRepository;
     _ticTacToeHelper = ticTacToeHelper;
 }