예제 #1
0
    def startGame(self, req):
        jsonResponse = {'response': 'startGame'}
        try:
            playerName = req['playerName']
            playerTeam = req['playerTeam']
            opponentTeam = req['opponentTeam']
            self.players = GameServer.createPlayers(playerName, playerTeam,
                                                    opponentTeam)
            self.cardGame = CardGame(self.players)
            self.scores = ScoreKeeper(self.players)

            jsonResponse['resultCode'] = 'SUCCESS'

            #self.cardGame.decideOrder()
            # override to set humanplayer as first
            self.setHumanPlayerFirst()
            #self.cardGame.startingPlayerIndex = 0
            #self.cardGame.setPlayingOrder()

            playersList = []
            i = 0
            for player in self.cardGame.getPlayers():
                playersList.append({
                    'index': i,
                    'name': player.name,
                    'id': player.id,
                    'team': player.team,
                    'isHuman': isinstance(player, HumanPlayer)
                })
                i = i + 1

            jsonResponse['players'] = playersList
            jsonResponse['playingOrder'] = self.cardGame.getOrder()
            jsonResponse['gameId'] = str(self.cardGame.id)

        except Exception as ex:
            self.writer.sendError(ex)
            raise

        self.writer.sendMessage(jsonResponse)
예제 #2
0
    player1_defeat = loser1 * 100 / (loser0 + loser1) if loser0 + loser1 > 0 else 0
    player2_defeat = loser0 * 100 / (loser0 + loser1) if loser0 + loser1 > 0 else 0

    print("Average moves:", avg_moves,
          ", Player1 lost", player1_defeat,
          "%, Player 0 lost", player2_defeat, "%")


def run_rounds(game):
    set_logging(False)
    stats = []
    for i in range(0, 1000):
        stats.append(game.round())
    print_stats(stats)


def debug_round(game):
    set_logging(True)
    stats = []
    for i in range(0, 1):
        stats.append(game.round())
    print_stats(stats)
    set_logging(False)


player1 = SimplePlayer("Player 1")
player2 = SimplePlayer("Player2")
g = CardGame([player1, player2])
# run_rounds(g)
debug_round(g)
import numpy as np
#import xrange

from game import CardGame, Deck, Player
from mc import MonteCarloLearning

CARDS_IN_DECK = {0.25: 16, 0.50: 28, 0.75: 16}
NUM_PLAYERS = 2
HAND_SIZE = 5
ACTIONS = ['small_spoil', 'median', 'large_max']

NUM_GAMES_TO_PLAY = 2000000

deck = Deck(CARDS_IN_DECK)
card_game = CardGame(deck, NUM_PLAYERS, ACTIONS, HAND_SIZE)


def play_action(card_showing, player):
    if card_showing == 0:  # player goes first
        if player.next_action == ACTIONS.index('small_spoil'):
            card_value = player.play_card(0)
        elif player.next_action == ACTIONS.index('large_max'):
            card_value = player.play_card(-1)
        else:
            card_value = player.play_card(card_game.hand_size // 2)
    else:  # opponent went first, player's turn
        if player.next_action == ACTIONS.index('small_spoil'):
            for c, card in enumerate(player.hand):
                if card + card_showing > 1.0:  # can spoil, play this card
                    card_value = player.play_card(c)