// update the node based on simuated results
 public void UpdateResult(EEndGameStatus status)
 {
     Visits++;
     if (status == EEndGameStatus.Win)
     {
         Wins++;
     }
 }
Beispiel #2
0
        private bool ProcessSequence(int x, int y, IActor actedPlayer, ref PentActor lastTrackedPlayer, ref int sequenceLength, out EEndGameStatus result)
        {
            result = EEndGameStatus.Draw;
            PentActor gridActor = Grid[x, y] as PentActor;

            if (gridActor == null)
            {
                lastTrackedPlayer = null;
                sequenceLength    = 0;
                return(false);
            }

            if (lastTrackedPlayer == null)
            {
                lastTrackedPlayer = gridActor;
                sequenceLength    = 1;
            }
            else if (lastTrackedPlayer != gridActor)
            {
                lastTrackedPlayer = gridActor;
                sequenceLength    = 1;
            }
            else // lastTrackedPlayer == gridActor
            {
                if (++sequenceLength >= WIN_SEQUENCE_LENGTH)
                {
                    result = lastTrackedPlayer == (PentActor)actedPlayer ? EEndGameStatus.Win : EEndGameStatus.Loss;
                    return(true);
                }
            }

            return(false);
        }