Ejemplo n.º 1
0
        public override GameMove MakeMove(GameState gs)
        {
            PlayerSymbol = gs.CurrentSymbol;
            var move = MaxValue(gs, Int32.MinValue, Int32.MaxValue);

            return(new GameMove(move.GameMove.Location, move.GameMove.GameSymbol));
        }
Ejemplo n.º 2
0
        public static TerminalState GetTerminalState(GameState gs, GameSymbol gameSymbol)
        {
            foreach (var Row in NaughtsAndCrossesGame.ThreeInARow)
            {
                if (gs.GameBoard[Row.Item1] != GameSymbol.Blank &&
                    gs.GameBoard[Row.Item1] == gs.GameBoard[Row.Item2] &&
                    gs.GameBoard[Row.Item2] == gs.GameBoard[Row.Item3])
                {
                    if (gs.GameBoard[Row.Item1] == gameSymbol)
                    {
                        return(TerminalState.Win);
                    }
                    else
                    {
                        return(TerminalState.Lose);
                    }
                }
            }

            Boolean complete = true;

            foreach (GameSymbol s in gs.GameBoard)
            {
                if (s == GameSymbol.Blank)
                {
                    complete = false;
                }
            }
            if (complete)
            {
                return(TerminalState.Draw);
            }
            return(TerminalState.Incomplete);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Diese Methode konveriert ein GameSymbol Enum zu einem benutzbaren Zeichen
        /// </summary>
        /// <param name="gameSymbole">Das Game Symbol</param>
        /// <returns></returns>
        public static String ToFriendlyString(GameSymbol gameSymbole)
        {
            switch (gameSymbole) {
                case GameSymbol.Circle:
                    return "o";

                case GameSymbol.Cross:
                    return "x";
            }
            return "";
        }
Ejemplo n.º 4
0
 public void SwitchSymbol()
 {
     if (CurrentSymbol == GameSymbol.Naught)
     {
         CurrentSymbol = GameSymbol.Cross;
     }
     else
     {
         CurrentSymbol = GameSymbol.Naught;
     }
 }
Ejemplo n.º 5
0
 protected int searchForTwoTogether(GameState gs, GameSymbol symbol)
 {
     foreach (var row in NaughtsAndCrossesGame.ThreeInARow)
     {
         var result = twoOutOfThreeSame(gs, symbol, row.Item1, row.Item2, row.Item3);
         if (result != -1)
         {
             return(result);
         }
     }
     return(-1);
 }
Ejemplo n.º 6
0
        public GameState()
        {
            GameBoard = new GameSymbol[] {
                GameSymbol.Blank,
                GameSymbol.Blank,
                GameSymbol.Blank,
                GameSymbol.Blank,
                GameSymbol.Blank,
                GameSymbol.Blank,
                GameSymbol.Blank,
                GameSymbol.Blank,
                GameSymbol.Blank
            };

            CurrentSymbol = GameSymbol.Naught;
        }
Ejemplo n.º 7
0
        private int twoOutOfThreeSame(GameState gs, GameSymbol symbol, int first, int second, int third)
        {
            if (gs.GameBoard[first] == gs.GameBoard[second] && gs.GameBoard[first] == symbol && gs.GameBoard[third] == GameSymbol.Blank)
            {
                return(third);
            }
            if (gs.GameBoard[first] == gs.GameBoard[third] && gs.GameBoard[first] == symbol && gs.GameBoard[second] == GameSymbol.Blank)
            {
                return(second);
            }
            if (gs.GameBoard[second] == gs.GameBoard[third] && gs.GameBoard[second] == symbol && gs.GameBoard[first] == GameSymbol.Blank)
            {
                return(first);
            }

            return(-1);
        }
Ejemplo n.º 8
0
        public override GameMove MakeMove(GameState gameState)
        {
            PlayerSymbol = gameState.CurrentSymbol;
            var moves    = gameState.GetMoves();
            var mostWins = 0.0;
            var bestMove = moves.First();

            foreach (var move in moves)
            {
                var gs = gameState.Clone() as GameState;
                gs.ApplyMove(move);
                var wins = GetWins(gs, 3000);
                if (wins > mostWins)
                {
                    mostWins = wins;
                    bestMove = move;
                }
            }
            return(bestMove);
        }
Ejemplo n.º 9
0
 public GameMove(int location, GameSymbol gameSymbol)
 {
     Location   = location;
     GameSymbol = gameSymbol;
 }
Ejemplo n.º 10
0
 public Player(String name, GameSymbol symbole)
 {
     this.Name = name;
     this.Symbol = symbole;
     this.Score = new GameScore();
 }
Ejemplo n.º 11
0
 public UtilityGameMove(int location, GameSymbol gameSymbol, int utility)
 {
     Utility  = utility;
     GameMove = new GameMove(location, gameSymbol);
 }
Ejemplo n.º 12
0
 public Player(ControlType type, GameSymbol symbol)
 {
     Type   = type;
     Symbol = symbol;
 }