Пример #1
0
    public int AggresiveMove(int playerID, GameMatrix gm)
    {
        int pWinCheck = PrimaryWinMove(playerID, gm);

        if (pWinCheck != 0)
        {
            return(pWinCheck);
        }

        int pBlockCheck = PrimaryBlockMove(playerID, gm);

        if (pBlockCheck != 0)
        {
            return(pBlockCheck);
        }

        int best     = 0;
        int bestmove = 0;

        for (int iii = 1; iii < 10; iii++)
        {
            if (gm.MoveLegal(iii))
            {
                int value = gm.calculateAttackScore(iii, playerID);
                if (value >= best)
                {
                    bestmove = iii;
                    best     = value;
                }
            }
        }
        return(bestmove);
    }
Пример #2
0
 private int PrimaryWinMove(int playerID, GameMatrix gm)
 {
     for (int iii = 1; iii < 10; iii++)
     {
         if (gm.MoveLegal(iii))
         {
             if (gm.MoveWinner(iii, playerID) == playerID)
             {
                 return(iii);
             }
         }
     }
     return(0);
 }
Пример #3
0
    void MakeMove()
    {
        int playerID = (turn % 3) + 1;

        if (sm.CanPlay())
        {
            int move = 0;
            if (isHumanTurn(playerID))
            {
                move = HumanMove();
            }
            else
            {
                //Debug.Log("AI check was entered");
                if (Input.GetKeyDown(KeyCode.Return))
                {
                    //Debug.Log("Enter was hit");
                    move = AIMove(playerID);
                }
            }
            if (gm.MoveLegal(move))
            {
                sm.SpawnSequence(playerID, move);
                //Debug.Log(gm.calculateAttackScore(move, playerID));
                gm.RegisterMove(move, playerID);
                winner = gm.CheckForWin();
                turn++;
                int newPlayerID = (turn % 3) + 1;
                wm.TurnChange(newPlayerID);
                if (winner != 0)
                {
                    wm.WinSequence(winner);
                }
            }
        }
    }
Пример #4
0
    private int PrimaryBlockMove(int playerID, GameMatrix gm)
    {
        int nextPlayer;

        if (playerID == 3)
        {
            nextPlayer = 1;
        }
        else
        {
            nextPlayer = playerID + 1;
        }
        for (int iii = 1; iii < 10; iii++)
        {
            if (gm.MoveLegal(iii))
            {
                if (gm.MoveWinner(iii, nextPlayer) == nextPlayer)
                {
                    return(iii);
                }
            }
        }
        return(0);
    }