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)
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)