public void ReturnFalseIfTheCurrentMoveHasNotAlreadyBeenPlayed() { var board = new List <string> { "x", " ", " ", " ", " ", " ", " ", " ", " " }; var validator = new PlayerMoveValidator(); bool actualValidatorResult = validator.IsValidMove(board, 0); Assert.False(actualValidatorResult); }
private void MovePlayer(ConsoleKey moveKey) { int currentPlayerPosition = Player.Position; int nextPlayerPosition = currentPlayerPosition; switch (moveKey) { case ConsoleKey.LeftArrow: { nextPlayerPosition = currentPlayerPosition - 1; break; } case ConsoleKey.UpArrow: { nextPlayerPosition = currentPlayerPosition - 10; break; } case ConsoleKey.RightArrow: { nextPlayerPosition = currentPlayerPosition + 1; break; } case ConsoleKey.DownArrow: { nextPlayerPosition = currentPlayerPosition + 10; break; } } if (PlayerMoveValidator.CanPlayerMove(currentPlayerPosition, nextPlayerPosition)) { Player.Move(nextPlayerPosition); } }
static void Main() { var isNewGame = true; while (isNewGame) { var game = new GameSetup(); var checker = new WinChecker(); var computerPlayer = new ComputerPlayer("x"); var humanPlayer = new HumanPlayer("o"); var moveValidator = new PlayerMoveValidator(); //var solver = new Solver(); var renderer = new Renderer(); var board = game.NewBoard(); while (!game.IsFinished(board)) { if (checker.CheckWinCondition(board) || game.IsFinished(board)) { Console.WriteLine(renderer.Render(board)); break; } //var solve = solver.Solve(board); var computerMove = computerPlayer.Move(board); Console.WriteLine("Computer (x) moves at " + computerMove); if (checker.CheckWinCondition(board) || game.IsFinished(board)) { Console.WriteLine(renderer.Render(board)); break; } Console.WriteLine(renderer.Render(board)); Console.WriteLine("To make a move, please enter a number from 0-8"); var userInput = Console.ReadLine(); var validInput = game.IsValidInput(userInput); ValidInputPrompt(game, ref userInput, ref validInput, board, renderer); var userMove = Convert.ToInt32(userInput); while (!moveValidator.IsValidMove(board, userMove)) { Console.WriteLine("Sorry invalid move, please choose an empty space"); Console.WriteLine(renderer.Render(board)); userInput = Console.ReadLine(); validInput = game.IsValidInput(userInput); ValidInputPrompt(game, ref userInput, ref validInput, board, renderer); userMove = Convert.ToInt32(userInput); } userMove = Convert.ToInt32(userInput); humanPlayer.Move(board); Console.WriteLine("player (o) at " + userInput); } if (game.IsFinished(board)) { Console.WriteLine("Draw!"); } if (checker.CheckWinCondition(board)) { Console.WriteLine("Winner!"); } Console.WriteLine("Play again? y/n"); var gamePlayIntent = Console.ReadLine(); isNewGame = gamePlayIntent == "y"; } }