代码解释:
-
ThrowHandkerchiefGame
类:- 初始化时设置玩家人数和玩家编号列表。
choose_thrower_and_target
方法随机选择丢手绢者和目标玩家。simulate_game
方法模拟丢手绢的过程,包括丢手绢、检测、以及后续的处理。play
方法开始游戏并显示结果。
-
游戏流程:
- 选择丢手绢者和被丢者。
- 模拟丢手绢过程。
- 根据是否被发现决定游戏结果。
运行说明:
- 用户输入玩家人数,程序会随机选择丢手绢者和被丢者,模拟丢手绢的过程,并显示结果。
import random
import time
class ThrowHandkerchiefGame:
def __init__(self, num_players):
self.num_players = num_players
self.players = list(range(1, num_players + 1)) # 玩家编号从 1 开始
self.thrower = None
self.target = None
def choose_thrower_and_target(self):
self.thrower = random.choice(self.players)
remaining_players = [p for p in self.players if p != self.thrower]
self.target = random.choice(remaining_players)
def simulate_game(self):
print(f"玩家们围成一个圈,共有 {self.num_players} 名玩家。")
self.choose_thrower_and_target()
print(f"丢手绢的玩家是: {self.thrower}")
print(f"被丢手绢的玩家是: {self.target}")
print("丢手绢者正在尝试把手绢丢到被丢者的背后……")
time.sleep(2) # 模拟等待时间
# 假设被丢者在 70% 的时间内会发现手绢
detected = random.random() < 0.7
if detected:
print("被丢者发现了手绢!")
if self.thrower != self.target:
print(f"丢手绢者被赶上了,丢手绢者 {self.thrower} 失败。")
print(f"被丢者 {self.target} 成为新的丢手绢者。")
self.thrower, self.target = self.target, self.thrower
else:
print("被丢者发现了手绢,但丢手绢者与被丢者是同一人,不用更换。")
else:
print("被丢者没有发现手绢!")
print(f"丢手绢者 {self.thrower} 成功回到自己的位置。")
print(f"被丢者 {self.target} 被淘汰。丢手绢者继续游戏。")
self.players.remove(self.target)
def play(self):
print("欢迎来到丢手绢游戏!")
self.simulate_game()
print("游戏结束。")
if __name__ == "__main__":
num_players = int(input("请输入玩家人数:"))
game = ThrowHandkerchiefGame(num_players)
game.play()