예제 #1
0
        //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);
                }
            }
        }
예제 #2
0
        //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;
                }
            }
        }
예제 #3
0
        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;
                }
            }
        }
예제 #4
0
        //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;
                    }
                }
            }
        }