public override Task <DotnetAIResponse> Request(DotnetAIRequest request, ServerCallContext context) { Console.WriteLine("Dotnet AI match request received"); if (CurrentMatch != null) { Console.WriteLine("Only one match can be run. Aborted"); return(Task.FromResult( new DotnetAIResponse { Type = DotnetAIResponse.Types.Type.Occupied })); } try { // Get dotnet AI with a specified name IGameAI dotnetAI = FindAI.GetAI(request.DotnetAiName); Console.WriteLine($"... Found AI '{request.DotnetAiName}'"); // Generate SabberStoneCore.Model.Game Game modelGame = SabberHelpers.GenerateGame(request.DotnetAiDeckstring, request.PythonAiDeckstring, request.History, request.Seed); // Create a match instance CurrentMatch = new Match(dotnetAI, modelGame, request.DotnetAiName); if (ConsoleOutput) { Console.WriteLine("########## Initial State #########"); SabberHelpers.Printers.PrintGame(modelGame); Console.WriteLine("##################################"); } var apiGame = new API.Game(CurrentMatch.CurrentPartiallyObservableGame); CurrentMatch.APIGameId = apiGame.Id.Value; // Return Current Partially Observable Game return(Task.FromResult(new DotnetAIResponse { Type = DotnetAIResponse.Types.Type.Success, Game = apiGame })); } catch (FindAI.AINotFoundException) { return(Task.FromResult(new DotnetAIResponse { Type = DotnetAIResponse.Types.Type.NotFound })); } catch (Exception) { return(Task.FromResult(new DotnetAIResponse { Type = DotnetAIResponse.Types.Type.InvalidDeckstring })); } }
public void Play(GameModes mode) { GamePlaying = true; GameMode = mode; CandyCount = MAX_CANDIES; if (GameMode == GameModes.SinglePlayer) { ai = new RandomGameAI(); Message(AI_PLAY_MESSAGE); Message(string.Format(AI_TURN_MESSAGE, Moves.One)); CandyCount -= 1; } else if (GameMode == GameModes.SinglePlayerHard) { ai = new SmartGameAI(); Message(SMART_AI_PLAY_MESSAGE); Message(string.Format(AI_TURN_MESSAGE, Moves.One)); CandyCount -= 1; } else { Message(string.Format(PLAY_MESSAGE, mode)); } }
/// <summary> /// /// </summary> /// <param name="gameAI"></param> /// <param name="sendGameMessage"></param> public GameController(IGameAI gameAI) { _userInfos = new List <UserInfo>(); GameAI = gameAI ?? new RandomAI(); HistoryEntries = new ConcurrentQueue <IPowerHistoryEntry>(); PowerOptions = null; PowerChoices = null; }
public Match(IGameAI dotnetAgent, Game game, string dotnetAgentName) { DotnetAgent = dotnetAgent; DotnetAgentName = dotnetAgentName; _game = game; // Run dotnetAgent if it is the first player GetDotnetAgentMoves(); }
/// <summary> /// Запуск новой игры /// </summary> public void NewGame() { PlayerScore = 0; if (GameAI != null) { GameAI = null; } switch (GameType) { case 0: GameAI = new EasyAI(); break; case 1: GameAI = new HardAI(); break; } GameAI.InitAI(!PlayerSideX, this); InitPlayground(); }
public MinimaxAI(IPlayer player, IGame game, IGameAI ai) : base(player, game) { this.AI = ai; }
public bool PopAI(IGameAI ai) { if (AIs.Count <= 1) return false; var currentAI = AIs.Peek(); if (currentAI != ai) return false; currentAI.Deactivate(); AIs.Pop(); AIs.Peek().Resume(); return true; }
public bool PushAI(IGameAI ai) { if (AIs.Count == 0) { AIs.Push(ai); if (ai.Activate(this)) return true; else { AIs.Pop(); return false; } } var currentAI = AIs.Peek(); if (currentAI.AllowPause()) { if (ai.GetType() == currentAI.GetType()) return false; else { currentAI.Pause(); AIs.Push(ai); if (ai.Activate(this)) return true; else { AIs.Pop(); currentAI.Resume(); return false; } } } else return false; }
public GameHub(IServerState serverState, IGameLogic gameLogic, IGameAI gameAI) { this.serverState = serverState; this.gameLogic = gameLogic; this.gameAI = gameAI; }
public AI(Player player, IBidAI bidAI, IGameAI gameAI) { this.player = player; BidAI = bidAI; GameAI = gameAI; }
public CGameAIManager(CGame _game) { this.game_ = _game; this.gameAI_ = new CGameAIRandom(); this.cityGameCommands_ = new Dictionary <int, List <IGameCommand> >(); }
private static GameClient CreateGameClientTask(string targetIp, int port, string accountName, string accountpsw, IGameAI gameAI, int numberOfGames = 0) { GameClient client = new TestClient(accountName, targetIp, port, new TestGameController(gameAI)); client.Connect(); return(client); }
public TestGameController(IGameAI gameAI) : base(gameAI) { }
public UnityGameController(UnityController controller, IGameAI gameAi) : base(gameAi) { _controller = controller; }