如何确定石头剪纸机的计算机选择

2024-03-29 15:18:22 发布

您现在位置:Python中文网/ 问答频道 /正文

看来我一切都很顺利。我只是不知道为什么每次我玩的时候,电脑的选择都不是我想要的。计算机应该从移动列表中选择一些内容,而不是返回数字。你知道吗

import random
moves = ['rock', 'paper', 'scissors']

我想问题可能出在我的电脑上

class RandomPlayer(Player):
    def move(self):
        index = random.randint(0, 2)  # Selects random moves from the move list
        return (index)


class Game():
    def __init__(self, p2):
        self.p1 = HumanPlayer()
        self.p2 = p2

    def play_game(self):
        print("\nLet's play Rock, Paper, Scissors!")
        for round in range(1, 4):
            print(f"\nRound {round}:")
            self.play_round()
        if self.p1.score > self.p2.score:
            print('Player 1 won!')
            # print(f"The score is {self.p1.score} to {self.p2.score}")
        elif self.p1.score < self.p2.score:
            print('Player 2 won!')
            # print(f"The score is {self.p1.score} to {self.p2.score}")
        else:
            print('The game was a tie!')
        print(f"Final score is {self.p1.score} to {self.p2.score}")

    # plays a single round if user chose to
    def play_single(self):
        print("Rock Paper Scissors, Go!")
        print(f"Round 1 of 1:")
        self.play_round()
        if self.p1.score > self.p2.score:
            print('Player 1 won!')
        elif self.p1.score < self.p2.score:
            print('Player 2 won!')
        else:
            print('The game was a tie!')
        print(f"Final score is {self.p1.score} to {self.p2.score}")

    def play_round(self):
        move1 = self.p1.move()
        move2 = self.p2.move()
        result = Game.play(move1, move2)
        self.p1.learn(move2)  # stores opponent move
        self.p2.learn(move1)  # stores opponent move

这就是我的输入和输出

Round 1:
Rock, Paper, Scissors?  rock
You played rock and opponent played 2
[ It's A TIE ]
[The score is 0 to 0]


Round 2:
Rock, Paper, Scissors?  paper
You played paper and opponent played 1
[ It's A TIE ]
[The score is 0 to 0]


Round 3:
Rock, Paper, Scissors?  scissors
You played scissors and opponent played 1
[ It's A TIE ]
[The score is 0 to 0]

The game was a tie!
Final score is 0 to 0 

我相信问题可能出在课堂游戏()


Tags: thetoselfplaymoveisdefscore
2条回答

我相信问题出在你的随机球员课上。您应该返回与该索引相关的移动,而不是在move方法中返回索引。换句话说,你的RandomPlayer类应该是:


class RandomPlayer(Player):
    def move(self):
        index = random.randint(0, 2)  # Selects random moves from the move list
        return moves[index]  # Changed from return (index)

修复RandomPlayer()类解决了这个问题,但是,计算机仍然每次都选择相同的选项。所以我在class Game()中更改了一行,现在它似乎在做我想做的事情。问题是我没有把RandomPlayer()分配给对手

class Game:
    def __init__(self, p2):
        self.p1 = HumanPlayer()
        self.p2 = RandomPlayer()

谢谢大家的投入!你知道吗

相关问题 更多 >