Ejemplo n.º 1
0
        public void FirstDiceBlocked()
        {
            var game = Game.Create();

            game.ClearCheckers();
            game.AddCheckers(1, Player.Color.White, 0);
            game.AddCheckers(1, Player.Color.White, 1);
            game.AddCheckers(2, Player.Color.White, 3);
            game.AddCheckers(2, Player.Color.White, 16);
            game.AddCheckers(2, Player.Color.White, 18);
            game.AddCheckers(2, Player.Color.White, 19);
            game.AddCheckers(2, Player.Color.White, 20);
            game.AddCheckers(2, Player.Color.White, 21);

            game.AddCheckers(1, Player.Color.Black, 3);
            game.AddCheckers(1, Player.Color.Black, 15);
            game.AddCheckers(2, Player.Color.Black, 16);
            game.AddCheckers(3, Player.Color.Black, 17);
            game.AddCheckers(3, Player.Color.Black, 19);
            game.AddCheckers(3, Player.Color.Black, 20);
            game.AddCheckers(2, Player.Color.Black, 21);

            game.CurrentPlayer = Player.Color.White;

            game.FakeRoll(5, 1);
            var ai    = new Ai.Engine(game);
            var moves = ai.GetBestMoves();

            Assert.IsTrue(moves.Any(m => m != null));
        }
Ejemplo n.º 2
0
        public void GetBestMoveWhite1()
        {
            var game = Game.Create();
            var ai   = new Ai.Engine(game);

            game.ClearCheckers();

            game.AddCheckers(1, Player.Color.Black, 1);
            game.AddCheckers(1, Player.Color.White, 1);

            game.AddCheckers(1, Player.Color.Black, 2);
            game.AddCheckers(1, Player.Color.White, 2);

            game.AddCheckers(3, Player.Color.Black, 17);
            game.AddCheckers(3, Player.Color.White, 17);

            game.AddCheckers(1, Player.Color.Black, 19); // 6 for white, the target
            game.AddCheckers(1, Player.Color.White, 19);

            game.FakeRoll(4, 5);
            game.SwitchPlayer();
            var moves = ai.GetBestMoves();

            Assert.IsTrue(moves.SingleOrDefault(m => m.ToString() == "White 1 -> 6") != null);
            Assert.IsTrue(moves.SingleOrDefault(m => m.ToString() == "White 2 -> 6") != null);
        }
Ejemplo n.º 3
0
        public void DoubleDice()
        {
            var game = Game.Create();
            var ai   = new Ai.Engine(game);

            game.FakeRoll(2, 2);
            var moves = ai.GetBestMoves();
        }
Ejemplo n.º 4
0
        internal async Task ConnectAndListen(WebSocket webSocket, Player.Color color, Db.User dbUser, bool playAi)
        {
            if (color == Player.Color.Black)
            {
                Client1                = webSocket;
                Game.BlackPlayer.Id    = dbUser != null ? dbUser.Id : Guid.Empty;
                Game.BlackPlayer.Name  = dbUser != null ? dbUser.Name : "Guest";
                Game.BlackPlayer.Photo = dbUser != null && dbUser.ShowPhoto ? dbUser.PhotoUrl : "";
                Game.BlackPlayer.Elo   = dbUser != null ? dbUser.Elo : 0;
                if (Game.IsGoldGame)
                {
                    Game.BlackPlayer.Gold = dbUser != null ? dbUser.Gold - firstBet : 0;
                    Game.Stake            = firstBet * 2;
                }

                if (playAi)
                {
                    var aiUser = Db.BgDbContext.GetDbUser(Db.User.AiUser);
                    Game.WhitePlayer.Id   = aiUser.Id;
                    Game.WhitePlayer.Name = aiUser.Name;
                    // TODO: AI image
                    Game.WhitePlayer.Photo = aiUser.PhotoUrl;
                    Game.WhitePlayer.Elo   = aiUser.Elo;
                    if (Game.IsGoldGame)
                    {
                        Game.WhitePlayer.Gold = aiUser.Gold;
                    }
                    Engine = new Ai.Engine(Game);
                    CreateDbGame();
                    StartGame();
                    if (Game.CurrentPlayer == Player.Color.White)
                    {
                        await EnginMoves(Client1);
                    }
                }
                await ListenOn(webSocket);
            }
            else
            {
                if (playAi)
                {
                    throw new ApplicationException("Ai always plays as white. This is not expected");
                }
                Client2                = webSocket;
                Game.WhitePlayer.Id    = dbUser != null ? dbUser.Id : Guid.Empty;
                Game.WhitePlayer.Name  = dbUser != null ? dbUser.Name : "Guest";
                Game.WhitePlayer.Photo = dbUser != null && dbUser.ShowPhoto ? dbUser.PhotoUrl : "";
                Game.WhitePlayer.Elo   = dbUser != null ? dbUser.Elo : 0;
                if (Game.IsGoldGame)
                {
                    Game.WhitePlayer.Gold = dbUser != null ? dbUser.Gold - firstBet : 0;
                }
                CreateDbGame();
                StartGame();
                await ListenOn(webSocket);
            }
        }
Ejemplo n.º 5
0
        public void GetBestMove()
        {
            var game = Backend.Rules.Game.Create();
            var ai   = new Ai.Engine(game);

            game.FakeRoll(2, 3);
            var moves = ai.GetBestMoves();

            foreach (var move in moves)
            {
                Console.WriteLine(move);
            }
        }
Ejemplo n.º 6
0
 internal async Task ConnectAndListen(WebSocket webSocket, Player.Color color, Db.User dbUser, bool playAi)
 {
     if (color == Player.Color.Black)
     {
         Client1               = webSocket;
         Game.BlackPlayer.Id   = dbUser != null ? dbUser.Id : Guid.Empty;
         Game.BlackPlayer.Name = dbUser != null ? dbUser.Name : "Guest";
         if (playAi)
         {
             var aiUser = Db.BgDbContext.GetDbUser(Db.User.AiUser);
             Game.WhitePlayer.Id   = aiUser.Id;
             Game.WhitePlayer.Name = aiUser.Name;
             Engine = new Ai.Engine(Game);
             CreateDbGame();
             StartGame();
             if (Game.CurrentPlayer == Player.Color.White)
             {
                 await EnginMoves(Client1);
             }
         }
         await ListenOn(webSocket);
     }
     else
     {
         if (playAi)
         {
             throw new ApplicationException("Ai always playes as white. This is not expected");
         }
         Client2               = webSocket;
         Game.WhitePlayer.Id   = dbUser != null ? dbUser.Id : Guid.Empty;
         Game.WhitePlayer.Name = dbUser != null ? dbUser.Name : "Guest";
         CreateDbGame();
         StartGame();
         await ListenOn(webSocket);
     }
 }