看来我一切都很顺利。我只是不知道为什么每次我玩的时候,电脑的选择都不是我想要的。计算机应该从移动列表中选择一些内容,而不是返回数字。你知道吗
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
我相信问题可能出在课堂游戏()
我相信问题出在你的随机球员课上。您应该返回与该索引相关的移动,而不是在move方法中返回索引。换句话说,你的RandomPlayer类应该是:
修复
RandomPlayer()
类解决了这个问题,但是,计算机仍然每次都选择相同的选项。所以我在class Game()
中更改了一行,现在它似乎在做我想做的事情。问题是我没有把RandomPlayer()
分配给对手谢谢大家的投入!你知道吗
相关问题 更多 >
编程相关推荐