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)); }
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); }
public void DoubleDice() { var game = Game.Create(); var ai = new Ai.Engine(game); game.FakeRoll(2, 2); var moves = ai.GetBestMoves(); }
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); } }
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); } }
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); } }