//Begin the game private static void beginGame(ref Player currentPlayer, ref GameBoard Game, ref Move move) { while (!Game.gameOver()) { do { move.getBeginMove(); }while (!checkCOORD(currentPlayer, Game, move)); do { move.getEndMove(); }while (!checkMove(currentPlayer, Game, move)); Game.movePiece(move); Game.printGameBoard(); if (currentPlayer.getIdentity() == (char)identity.X) { currentPlayer.setPlayer(identity.O); } else { currentPlayer.setPlayer(identity.X); } } }
//Begin the game private static void beginGame(identity firstID, ref Player xPlayer, ref Player oPlayer, ref GameBoard Game, ref Move move) { Player currentPlayer; if (firstID == identity.X) { currentPlayer = xPlayer; } else { currentPlayer = oPlayer; } while (!Game.gameOver()) { // Console.Write("AI Favors at " + global::AI.AICore.evaluate1(true, game.getBoard()) + "\n"); //Console.Write(currentPlayer.getIdentity() + " to move...\n"); move = currentPlayer.getMove(); Game.movePiece(currentPlayer.getIdentity(), move); Console.Clear(); Game.printGameBoard(); if (currentPlayer.getIdentity() == identity.X) { currentPlayer = oPlayer; } else { currentPlayer = xPlayer; } } }
private void Update() { UpdateSelection(); //DrawChessboard(); if (!game.gameOver()) { if (currentPlayer.isAI()) { if (!currentPlayer.hasRequestedMove()) { currentPlayer.requestMove(); } else if (currentPlayer.hasMove()) { Move automove = currentPlayer.getMove(); SelectGamePiece(automove.Begin.col, automove.Begin.row); MoveGamePiece(automove.End.col, automove.End.row); } } else if (againstNetwork && waitForNetwork) { // To stop from going into the next iteration of the else if } else if (currentPlayer.isNetwork()) { if (networkMove != null) { if (networkMove.Begin.row != networkMove.End.row) { SelectGamePiece(networkMove.Begin.col, networkMove.Begin.row); MoveGamePiece(networkMove.End.col, networkMove.End.row); } networkMove = null; } } else if (Input.GetMouseButtonDown(0)) { //selectionX and selectionY correspond to what square on the board the mouse is currently on if (selectionX >= 0 && selectionY >= 0) { //if(GamePiecesArray[selectionX, selectionY] != null) //{ // SelectGamePiece(selectionX, selectionY); //} //else //{ // MoveGamePiece(selectionX, selectionY); //} if (selectedGamePiece == null) { SelectGamePiece(selectionX, selectionY); beginCol = selectionY; beginRow = selectionX; //networkMove.Begin.row = selectionX; // networkMove.Begin.col = selectionY; } else { MoveGamePiece(selectionX, selectionY); endCol = selectionY; endRow = selectionX; if (beginCol != endCol) { // networkMove.End.row = selectionX; // networkMove.End.col = selectionY; GameObject goJeff = GameObject.Find("GameBoard"); MultiplayerLauncher jeff = goJeff.GetComponent <MultiplayerLauncher>(); if (againstNetwork) { jeff.SendTheMove(7 - beginRow, 7 - beginCol, 7 - endRow, 7 - endCol); } } } } } if (currentPlayer == PlayerX) { //turnImage.sprite = choicesForTurnImage[0]; turnText.text = "Your turn!"; //animator.SetBool("Player1Turn", true); //animator.SetBool("Player2Turn", false); } else if (currentPlayer == PlayerO) { //turnImage.sprite = choicesForTurnImage[1]; turnText.text = "Computer's turn!"; //animator.SetBool("Player2Turn", true); //animator.SetBool("Player1Turn", false); } } else { //set playerGoingFirst back to default playerGoingFirst = true; //pull up Game Over Screen if (!wasCreated) { if (currentPlayer == PlayerO) { winnerText.text = "You win!!"; } else if (currentPlayer == PlayerX) { winnerText.text = "Computer Wins!!"; } GameObject gameOverPanel = Instantiate(GameOverPanel) as GameObject; gameOverPanel.transform.SetParent(canvas.transform, false); wasCreated = true; } } }
//Begin the game private static void beginGame(identity firstID, ref Player xPlayer, ref Player oPlayer, ref GameBoard Game, ref Move move) { Console.Write("Enter Game Name: "); string gameName = Console.ReadLine(); Player currentPlayer = xPlayer; if (firstID == identity.X) { currentPlayer = xPlayer; } else { currentPlayer = oPlayer; } bool AIAutoMove = false; bool playerAlwaysMove = false; identity AIIdentity = identity.O; Stack <Board> previousMoves = new Stack <Board>(); while (!Game.gameOver()) { // Console.Write("AI Favors at " + global::AI.AICore.evaluate1(true, game.getBoard()) + "\n"); //Console.Write(currentPlayer.getIdentity() + " to move...\n"); char keyCode = ' '; if (AIAutoMove && currentPlayer.getIdentity() == AIIdentity) { Console.Write("\nRequesting Move From AI"); move = AIPlayer.getAMove((currentPlayer.getIdentity() == firstID)); } else { if (playerAlwaysMove && currentPlayer.getIdentity() != AIIdentity) { keyCode = 'm'; } Console.Write("m = make move\t a = call AI\t n = always make move for human\t q = toggle auto call AI\nt = change AI (from " + AIIdentity + ")\ti = swap turns\t l = load board\t s = save board\t u = undo\t f = dump memory\t \n"); while (keyCode != 'm' && keyCode != 'a' && keyCode != 's' && keyCode != 'l' && keyCode != 'q' && keyCode != 'f' && keyCode != 'i' && keyCode != 'n' && keyCode != 't' && keyCode != 'u') { Console.Write((char)currentPlayer.getIdentity() + ":"); keyCode = Console.ReadKey().KeyChar; Console.Write("\n"); } if (keyCode == 'm') { Console.Write("Move: "); String line = " "; while (line.Length != 0 && (line.Length != 4 || !(Char.IsDigit(line[1]) && Char.IsDigit(line[3]) && (line[0] - 97) >= 0 && (line[0] - 97) <= 7 && (line[2] - 97) >= 0 && (line[2] - 97) <= 7))) { line = Console.ReadLine(); } if (line.Length != 0) { move = new Move(); move.Begin.Y = line[0] - 97; move.Begin.X = line[1] - 48 - 1; move.End.Y = line[2] - 97; move.End.X = line[3] - 48 - 1; } else { move = null; playerAlwaysMove = false; } } else if (keyCode == 'f') { AIPlayer.EmptyMemory(); } else if (keyCode == 't') { if (AIIdentity == identity.X) { AIIdentity = identity.O; } else { AIIdentity = identity.X; } } else if (keyCode == 'n') { if (playerAlwaysMove) { playerAlwaysMove = false; } else { playerAlwaysMove = true; Console.Write("Player always move enabled. Enter an empty move to disable.\nPress enter to aknowledge and continue..."); Console.ReadLine(); } move = null; } else if (keyCode == 'q') { if (AIAutoMove) { AIAutoMove = false; } else { AIAutoMove = true; } move = null; } else if (keyCode == 'a') { Console.Write("\nRequesting Move From AI"); move = AIPlayer.getAMove((currentPlayer.getIdentity() == firstID)); } else if (keyCode == 's') { savedBoard = new Board(game.board); savedPlayer = currentPlayer; move = null; } else if (keyCode == 'l') { Game.board = new Board(savedBoard); currentPlayer = savedPlayer; move = null; } else if (keyCode == 'u') { if (previousMoves.Count != 0) { Game.board = new Board(previousMoves.Pop()); if (currentPlayer.getIdentity() == identity.X) { currentPlayer = oPlayer; } else { currentPlayer = xPlayer; } move = null; } } else if (keyCode == 'i') { move = null; if (currentPlayer.getIdentity() == identity.X) { currentPlayer = oPlayer; } else { currentPlayer = xPlayer; } } } bool moved = false; if (move != null) { moved = Game.movePiece(currentPlayer.getIdentity(), move); } //Print the new game state to the screen Console.Clear(); string moveString = ""; if (move != null) { char moveBegin = (char)(move.Begin.Y + 97); char moveEnd = (char)(move.End.Y + 97); moveString = moveBegin + "" + (move.Begin.X + 1) + "" + moveEnd + "" + (move.End.X + 1); Console.Out.Write(moveString + "\n"); } Game.printGameBoard(); //Log the ouput if (currentPlayer.getIdentity() == identity.O) { File.AppendAllText(gameName + ".txt", moveString + Environment.NewLine); } else { File.AppendAllText(gameName + ".txt", moveString + "\t"); } //Log the ouput readable if (currentPlayer.getIdentity() == identity.O) { File.AppendAllText(gameName + ".read.txt", moveString + Environment.NewLine); File.AppendAllText(gameName + ".read.txt", game.gameBoardString() + Environment.NewLine); File.AppendAllText(gameName + ".read.txt", Environment.NewLine); } else { File.AppendAllText(gameName + ".read.txt", moveString + Environment.NewLine); File.AppendAllText(gameName + ".read.txt", game.gameBoardString() + Environment.NewLine); File.AppendAllText(gameName + ".read.txt", Environment.NewLine); } if (moved) { previousMoves.Push(new Board(game.board)); if (currentPlayer.getIdentity() == identity.X) { currentPlayer = oPlayer; } else { currentPlayer = xPlayer; } } } }