コード例 #1
0
ファイル: GameController.cs プロジェクト: vladdou/Dominion
        public ActionResult PlayCard(Guid id)
        {
            var message = new PlayCardMessage(playerId: Client.PlayerId, cardId: id);

            Client.AcceptMessage(message);
            return(new EmptyResult());
        }
コード例 #2
0
ファイル: GameHostBindings.cs プロジェクト: vladdou/Dominion
        public void WhenTellsTheHostToPlay(string playerName, string cardName)
        {
            var client    = _clients.Single(c => c.PlayerName == playerName);
            var gameState = _gameHost.GetGameState(client);
            var cardId    = gameState.Hand.Single(p => p.Name == cardName).Id;
            var message   = new PlayCardMessage(client.PlayerId, cardId);

            _gameHost.AcceptMessage(message);
        }
コード例 #3
0
        public void Respond(IGameClient client, ActivityModel activity, GameViewModel state)
        {
            var action = state.Hand
                .Where(c => c.Is(CardType.Action))
                .Where(c => AISupportedActions.All.Contains(c.Name))
                .OrderByDescending(c => AISupportedActions.PlusActions.Contains(c.Name))
                .ThenByDescending(c => c.Cost)
                .First();

            var message = new PlayCardMessage(client.PlayerId, action.Id);
            client.AcceptMessage(message);
        }
コード例 #4
0
        public void Respond(IGameClient client, ActivityModel activity, GameViewModel state)
        {
            var action = state.Hand
                         .Where(c => c.Is(CardType.Action))
                         .Where(c => AISupportedActions.All.Contains(c.Name))
                         .OrderByDescending(c => AISupportedActions.PlusActions.Contains(c.Name))
                         .ThenByDescending(c => c.Cost)
                         .First();

            var message = new PlayCardMessage(client.PlayerId, action.Id);

            client.AcceptMessage(message);
        }
コード例 #5
0
 private static void HandlePlayCard(Client client, PlayCardMessage playCardMessage)
 {
     client.Points += playCardMessage.CardValue;
     foreach (var player in server.clients)
         if (player.Points == 0)
             return;
     Client playerWithHighestPoints = null;
     foreach (var player in server.clients)
         if (playerWithHighestPoints == null || playerWithHighestPoints.Points < player.Points)
             playerWithHighestPoints = player;
     if (playerWithHighestPoints.Points < 100)
         return;
     Console.Write("Game over, player " + playerWithHighestPoints.PlayerName + " has won with " + playerWithHighestPoints.Points);
     foreach (var player in server.clients)
         player.Send(new GameOverMessage
         {
             Winner = playerWithHighestPoints.PlayerName,
             Points = playerWithHighestPoints.Points
         });
 }
コード例 #6
0
 static void Main()
 {
     #if DEBUG
     const string hostname = "localhost";
     #else
     Console.Write("Enter ChatServer Ip: ");
     var hostname = Console.ReadLine();
     #endif
     var server = new Client(hostname);
     server.Received += MessageReceived;
     Console.Write("Please enter your player name: ");
     var playerName = Console.ReadLine();
     server.Send(new PlayerNameMessage { PlayerName = playerName });
     while (true)
     {
         var random = new Random((int)DateTime.Now.Ticks);
         var card = new PlayCardMessage { CardValue = random.Next(5, 50) };
         Console.WriteLine("Press enter to play your card (Value=" + card.CardValue + ")");
         Console.ReadLine();
         server.Send(card);
     }
 }