Exemplo n.º 1
0
        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
                }));
            }
        }
Exemplo n.º 2
0
        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));
            }
        }
Exemplo n.º 3
0
        /// <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;
        }
Exemplo n.º 4
0
        public Match(IGameAI dotnetAgent, Game game, string dotnetAgentName)
        {
            DotnetAgent     = dotnetAgent;
            DotnetAgentName = dotnetAgentName;
            _game           = game;

            // Run dotnetAgent if it is the first player
            GetDotnetAgentMoves();
        }
Exemplo n.º 5
0
    /// <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();
    }
Exemplo n.º 6
0
 public MinimaxAI(IPlayer player, IGame game, IGameAI ai) : base(player, game)
 {
     this.AI = ai;
 }
Exemplo n.º 7
0
        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;
        }
Exemplo n.º 8
0
        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;
        }
Exemplo n.º 9
0
 public GameHub(IServerState serverState, IGameLogic gameLogic, IGameAI gameAI)
 {
     this.serverState = serverState;
     this.gameLogic   = gameLogic;
     this.gameAI      = gameAI;
 }
Exemplo n.º 10
0
Arquivo: AI.cs Projeto: Bawaw/Whist
 public AI(Player player, IBidAI bidAI, IGameAI gameAI)
 {
     this.player = player;
     BidAI = bidAI;
     GameAI = gameAI;
 }
Exemplo n.º 11
0
 public CGameAIManager(CGame _game)
 {
     this.game_             = _game;
     this.gameAI_           = new CGameAIRandom();
     this.cityGameCommands_ = new Dictionary <int, List <IGameCommand> >();
 }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
 public TestGameController(IGameAI gameAI) : base(gameAI)
 {
 }
 public UnityGameController(UnityController controller, IGameAI gameAi) : base(gameAi)
 {
     _controller = controller;
 }