看来我一切正常。我只是不知道为什么每次播放时,计算机的选择都不是我想要的。计算机应该从移动列表中选择某项内容,而半身则是返回数字。
import random
moves = ['rock', 'paper', 'scissors']
我怀疑问题可能出在RandomPlayer
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
我相信问题可能出在Class Game()
答案 0 :(得分:2)
我相信问题出在您的RandomPlayer类中。您应该返回与该索引相关的移动,而不是在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)
答案 1 :(得分:0)
修复RandomPlayer()
类可以解决此问题,但是计算机仍然每次都选择相同的选项。因此,我在class Game()
中更改了一行,现在它似乎正在执行我想要的操作。问题是我没有将RandomPlayer()
分配给对手
class Game:
def __init__(self, p2):
self.p1 = HumanPlayer()
self.p2 = RandomPlayer()
感谢大家的投入!