예제 #1
0
    def test_human_player_ask_for_barrel_and_winner(self):
        def delegate(player):

            return True

        def delegate2(player):

            return False

        test_player = player.HumanPlayer('www')
        i = 0

        for line in range(3):
            for pos in range(1, 91):
                i += 1
                if i < 5:
                    self.assertFalse(test_player.is_winner())
                test_player.ask_for_barrel(barrel.Barrel(pos), delegate)

        self.assertEqual(test_player.card.amount_num(), 0)
        self.assertTrue(test_player.is_winner())

        test_player = player.HumanPlayer('www')
        i = 0
        for line in range(3):
            for pos in test_player.card.lines[line]:
                i += 1
                if i < 5:
                    self.assertFalse(test_player.is_winner())
                if isinstance(pos, int):
                    test_player.ask_for_barrel(barrel.Barrel(int(pos)), None)

        self.assertEqual(test_player.card.amount_num(), 0)
        self.assertTrue(test_player.is_winner())

        test_player = player.HumanPlayer('www')
        i = 0
        for line in range(3):
            for pos in range(1, 91):
                i += 1
                if i < 5:
                    self.assertFalse(test_player.is_winner())
                test_player.ask_for_barrel(barrel.Barrel(pos), delegate2)

        self.assertEqual(test_player.card.amount_num(), 15)
        self.assertFalse(test_player.is_winner())
예제 #2
0
파일: game.py 프로젝트: emakhankov/nu9_dz1
def game(amount_player_human, amount_player_computer):

    print('Начинаем игру')

    list_players = []
    for n_player in range(amount_player_human):
        player = pl.HumanPlayer(f'{n_player+1}')
        list_players.append(player)

    for n_player in range(amount_player_computer):
        player = pl.ComputerPlayer(f'{n_player+1}')
        list_players.append(player)

    random.shuffle(list_players)

    print()
    print(
        'Внимание!!! Порядок ходов игроков задается сейчас в произвольном порядке'
    )
    print()
    print('Игроки и их карточки:')
    for player in list_players:
        player.print_card()
        print()

    bag = bg.Bag()

    print()
    print('*** ПОЕХАЛАЛИ ***')
    print()

    while True:

        barrel = bag.get_barrel()
        if barrel is None:
            print('Бочонков больше нет. Игра окончена')
            return

        print(
            f'Новый бочонок: {barrel.get_num()} (осталось {bag.get_count()})')
        for player in list_players:
            player.print_card()
            print()

        for player in list_players:
            ret = player.ask_for_barrel(barrel, delegate_ask)
            if not ret:
                print(f'{player.name} - ошибка. Вы проиграли Игра Окончена')
                return
            if player.is_winner():
                print(f'{player.name} - Вы выиграли')
                return

        print()
        print('*** следующий раунд ***')
        print()
예제 #3
0
def getPlayers(playerType, verbosity):
    baselinePlayer = player.SimpleCPUPlayer(verbosity)
    if playerType == 'random':
        return player.RandomCPUPlayer(verbosity), baselinePlayer
    elif playerType == 'human':
        return player.HumanPlayer(verbosity), baselinePlayer
    elif playerType == 'simple':
        return player.SimpleCPUPlayer(verbosity), baselinePlayer
    elif playerType == 'reflex':
        return player.ReflexCPUPlayer(verbosity), baselinePlayer
예제 #4
0
 def create_player(self, player_type, shape):
     if player_type == 0:
         return player.HumanPlayer(shape, self.gui)
     elif player_type == 1:
         return player.RandomPlayer(shape)
     elif player_type == 2:
         return player.SmartPlayer(shape)
     elif player_type == 3:
         return player.SmartestPlayer(shape)
     elif player_type == 4:
         return player.PrunePlayer(shape)
예제 #5
0
    def do_init_game(self, arg):
        if arg == '':
            board_size = 3
        else:
            board_size = int(arg)

        print('Creating board of size {}'.format(board_size))
        player_1_name = input('Nought Player Name (player_1): ')
        player_2_name = input('Cross Player Name (player_2: ')

        if len(player_1_name) == 0:
            player_1_name = 'player_1'

        if len(player_2_name) == 0:
            player_2_name = 'player_2'

        self._nought_player = player.HumanPlayer(player_1_name)
        self._cross_player = player.HumanPlayer(player_2_name)
        print('{} versus {}'.format(self.nought_player.name, self.cross_player.name))
        self._board = board.Board(size=board_size)
예제 #6
0
def play_game(players=None):
    """Play until the game ends with a list of players"""
    if players is None:
        players = [player.HumanPlayer(name) for name in ('doug', 'matt')]
    win = None
    colors = ['yellow', 'purple', 'blue']
    g = Game(players, colors)
    while not win:
        win = g.round()
    print win
    #g.stateviz.plot_states()
    return win
예제 #7
0
    def start(self):
        # Start Loop
        while self._prompt_newgame():
            self.log.info('Starting new game')

            self.board = board.Board(config.board_size)

            if self.ai_player:
                self.player = player.AIPlayer(self.board)
            else:
                self.player = player.HumanPlayer(self.board)

            self.gameover = False
            self.speed = config.speed
            self.reset_food()

            self._loop()
예제 #8
0
    def __init__(self,
                 number_of_colors,
                 height,
                 width,
                 game_type,
                 save_images_suffix=False):
        self.number_of_cells = height * width
        self.all_colors = np.arange(number_of_colors)
        self.game_type = game_type
        self.save_images_suffix = save_images_suffix

        figure = self.game_type != self.game_types['r_l']
        self.game_board = FillerBoard(number_of_colors,
                                      height,
                                      width,
                                      figure=figure)

        self.turn_count = 0

        player_1_starting_cell = (height - 1, 0)
        if self.game_type == self.game_types['vs_ai']:
            self.player_1 = player.AIPlayer([player_1_starting_cell],
                                            self.game_board)
        elif self.game_type == self.game_types['r_l']:
            self.player_1 = player.RLPlayer([player_1_starting_cell],
                                            self.game_board)
        elif self.game_type == self.game_types['human']:
            self.player_1 = player.HumanPlayer([player_1_starting_cell],
                                               self.game_board)
        elif self.game_type == self.game_types['random']:
            self.player_1 = player.RandomPlayer([player_1_starting_cell],
                                                self.game_board)

        player_2_starting_cell = (0, width - 1)
        self.player_2 = player.AIPlayer([player_2_starting_cell],
                                        self.game_board)
예제 #9
0
def main():
    # create the board based on player specifications
    print "The board will be an nxm grid."
    n = raw_input("Please choose n: ")
    m = raw_input("Please choose m: ")
    print "The winner is the first player to get k marks in a row"
    k = raw_input("Please choose k: ")

    ck_board = board.Board(int(n), int(m), int(k))

    print ck_board

    # get player info
    player1_type = raw_input("Player1 is a Computer or Human? (c/h) ")
    if player1_type == "h":
        name1 = raw_input("Player 1's name: ")
        symbol1 = raw_input("Player 1's symbol: ")
    else:
        name1 = "P1: Computer"
        symbol1 = "o"

    player2_type = raw_input("Player2 is a Computer or Human? (c/h) ")
    if player2_type == "h":
        name2 = raw_input("Player 2's name: ")
        symbol2 = raw_input("Player 2's symbol: ")
        while symbol1 == symbol2:
            symbol2 = raw_input("Use a different symbol from Player 1: ")
    else:
        name2 = "P2: Computer"
        symbol2 = "o"
        if symbol1 == symbol2:
            symbol2 = "x"

    # Create players as humans or computers
    if player1_type == "h":
        player1 = player.HumanPlayer(name1, symbol1)
    else:
        player1 = player.ComputerPlayer(name1, symbol1, symbol2, ck_board)

    if player2_type == "h":
        player2 = player.HumanPlayer(name2, symbol2)
    else:
        player2 = player.ComputerPlayer(name2, symbol2, symbol1, ck_board)

    # set playing order
    curr_player = player1
    next_player = player2

    # gameplay, players switch off turns until there is a winner or tie game
    while not ck_board.has_winner() and not ck_board.is_full():
        print ck_board
        move = curr_player.prompt_move()
        while not ck_board.accepts_move(move):
            move = curr_player.prompt_move()
        (curr_player, next_player) = (next_player, curr_player)

    print ck_board

    if ck_board.has_winner():
        print "{} wins!".format(next_player)
    else:
        print "It's a draw!"
예제 #10
0
 def on_pre_enter(self, *args):
     self.add_widget(
         GraphicalCoup(players=(player.HumanPlayer(), player.ThinkingAI(),
                                player.RandomAI(), player.RandomAI())))
예제 #11
0
def hasWinner():
    if utils.stack.count(Player1.hand) == 0 or utils.stack.count(
            AIPlayer.hand) == 0:
        print 'THE WINNER IS: ', getWinner()
        return True
    return False


def getWinner():
    if utils.stack.count(Player1.hand) == 0:
        return Player1.name
    elif utils.stack.count(AIPlayer.hand) == 0:
        return AIPlayer.name


def checkForWinner():
    if utils.stack.count(Player1.hand) == 0 or utils.stack.count(
            AIPlayer.hand) == 0:
        return True
    return False


Deck = deck.Deck()
Player1 = player.HumanPlayer(Deck, 'Humano')
AIPlayer = player.Player(Deck, 'PC')
player_stack = [Player1, AIPlayer]

while not hasWinner():
    doTurn()
예제 #12
0
    def getInput(self):

        self.refresh()

        while 1:

            # Get the event keys
            for event in pygame.event.get():

                if event.type == QUIT:
                    sys.exit(0)
                elif event.type == KEYDOWN:
                    if event.key == K_ESCAPE:
                        return -1
                    if event.key == K_UP:
                        if self.select != 1:
                            self.select = self.select - 1
                        else:
                            self.select = 8
                        self.refresh()
                    if event.key == K_DOWN:
                        if self.select != 8:
                            self.select = self.select + 1
                        else:
                            self.select = 1
                        self.refresh()
                    if event.key == K_LEFT:
                        if self.select == 1:
                            if self.carColor != 1:
                                self.carColor = self.carColor - 1
                            else:
                                self.carColor = len(self.listCars)

                        if self.select == 3:
                            if self.level != 1:
                                self.level = self.level - 1
                            else:
                                self.level = 3
                        self.refresh()
                    if event.key == K_RIGHT:
                        if self.select == 1:
                            if self.carColor != len(self.listCars):
                                self.carColor = self.carColor + 1
                            else:
                                self.carColor = 1

                        if self.select == 3:
                            if self.level != 3:
                                self.level = self.level + 1
                            else:
                                self.level = 1
                        self.refresh()

                    # Key Enter used for Command Keys Enter
                    if event.key == K_RETURN:
                        if self.select == 4:
                            self.keyAccel = None
                            self.refresh()
                            key = 0
                            while key == 0:
                                for event2 in pygame.event.get():
                                    if event2.type == KEYDOWN:
                                        self.keyAccel = event2.key
                                        key = 1
                        if self.select == 5:
                            self.keyBrake = None
                            self.refresh()
                            key = 0
                            while key == 0:
                                for event2 in pygame.event.get():
                                    if event2.type == KEYDOWN:
                                        self.keyBrake = event2.key
                                        key = 1
                        if self.select == 6:
                            self.keyLeft = None
                            self.refresh()
                            key = 0
                            while key == 0:
                                for event2 in pygame.event.get():
                                    if event2.type == KEYDOWN:
                                        self.keyLeft = event2.key
                                        key = 1
                        if self.select == 7:
                            self.keyRight = None
                            self.refresh()
                            key = 0
                            while key == 0:
                                for event2 in pygame.event.get():
                                    if event2.type == KEYDOWN:
                                        self.keyRight = event2.key
                                        key = 1
                        self.refresh()

                    # Enter the Pseudo
                    if event.key >= K_a and event.key <= K_z and self.select == 2:
                        if len(self.pseudo) >= 3:
                            self.pseudo = pygame.key.name(event.key).upper()
                        else:
                            self.pseudo = self.pseudo + pygame.key.name(
                                event.key).upper()
                        self.refresh()

                    if event.key == K_RETURN and self.select == 8:
                        # Careful to get the real carColor number and not the fake one (caused by the listdir)
                        return player.HumanPlayer(
                            self.pseudo,
                            int(self.listAvailableCarNames[self.carColor -
                                                           1].replace(
                                                               "car", "")),
                            self.level, self.keyAccel, self.keyBrake,
                            self.keyLeft, self.keyRight)

            pygame.time.delay(10)
예제 #13
0
    def test_human_player_init(self):

        test_player = player.HumanPlayer('www')
        self.assertEqual(test_player.name, 'Человек www')
        self.assertIsInstance(test_player.card, card.Card)
예제 #14
0
 def playerVSplayer(self):
     self.player = {
         -1: player.HumanPlayer("noir"),
         1: player.HumanPlayer("blanc")
     }
예제 #15
0
	def __init__(self,size,p1_name,p2_name):
		super().__init__(size)
		self.players = [player.HumanPlayer(21,1,p1_name),player.ComputerPlayer(21,1,p2_name)]
예제 #16
0
                return letter

            letter = 'O' if letter == 'X' else 'X'

        time.sleep(.8)
    if print_game:
        print('It\'s a tie!!Better luck next time')


user = input(
    'With whom do you want to play:\n 1. To play with your friend press \'F\' and enter\n 2. To play with a '
    'random computer player press \'R\' and enter\n 3. To play with a Smart Computer Player press \'S\' and '
    'enter\n')

if user == 'F' or user == 'f':
    x = player.HumanPlayer('X')
    o = player.HumanPlayer('O')

elif user == 'R' or user == 'r':
    x = player.RandomComputerPlayer('X')
    o = player.HumanPlayer('O')
elif user == 'S' or user == 's':
    x = player.SmartComputerPlayer('X')
    o = player.HumanPlayer('O')
elif user == 'Q' or user == 'p':
    x = player.RandomComputerPlayer('X')
    o = player.SmartComputerPlayer('O')

elif user == 'Q' or user == 'q':
    x = player.SmartComputerPlayer('X')
    o = player.SmartComputerPlayer('O')
예제 #17
0
def changePlayer(numJoueur):
    numJoueur = (numJoueur+1)%2
    return numJoueur



board = [7,5,3,1]
numJoueur = 0

#print ("avec ",board ,"j'aurais ce resultat", evaluate(board,False,0))
#print ("avec ",board ,"je joue ", IAMakeChoice(board))
known = {}
IA = 0
players=[]
players.append(player.IADeepPlayer())
players.append(player.HumanPlayer())

while(not isFinished(board)):
        displayBoard(board)

        if IA==numJoueur:
            print ("IA Playing")
        else :
            print ("player", numJoueur, "make a choice")

        line, nbMatches = players[numJoueur].makeChoice(board)
        print ("Le joueur retire",nbMatches,"on line",line)

        drawMatches(line, nbMatches,board)

        numJoueur = changePlayer(numJoueur)
예제 #18
0
 def __init__(self, n=3):
     self.t3_board = TicTacToeBoard(n)
     self.player1 = player.HumanPlayer(self.t3_board.clone())
     self.player2 = player.HumanPlayer(self.t3_board.clone())
     self.players = {1: self.player1, -1: self.player2}
예제 #19
0
파일: main.py 프로젝트: MaxRais/pokemonai
    else:
        team1 = team.get_team_from_file(team1file)
    if team2file == '':
        team2 = team.make_random_team(2)
    else:
        team2 = team.get_team_from_file(team2file)

    player1 = team1player
    player2 = team2player
    singlebattle = battle.Battle(team1, team2, player1, player2)
    result = singlebattle.battle()
    print("Winner: " + str(result))


# Inits game with desired players/AI players
if (__name__ == "__main__"):
    argv = sys.argv
    player2 = player.RandomAI("player 2")
    if len(argv) > 1:
        ai = argv[1].lower()
        if ai == 'minimax':
            player2 = player.MinimaxAI("player 2")
        elif ai == 'expectimax':
            player2 = player.ExpectimaxAI("player 2")

    main(
        "",  #./tests/testteam.txt
        "",
        player.HumanPlayer("player 1"),
        player2)
예제 #20
0
 def add_player(self, is_human=True, trainable=False, value_net=None):
     if is_human:
         self.players.append(player.HumanPlayer(len(self.players), self))
     else:
         self.players.append(
             mcts.MCTSPlayer(len(self.players), self, value_net, trainable))