根据分糖果的选手版,编写一个人机版的版本,计算机每次选择的糖果数满足 如果剩余的糖果数大于4,电脑选择4-X颗糖果,其中X是上一轮选手选择的糖果数。 如果剩余的糖果在2到4之间,电脑选择的糖果数可以使得场上剩下的糖果数为1。 如果只剩下1颗糖果,那只能选择1颗糖果并失败。
时间: 2023-05-29 08:01:32 浏览: 99
以下是一个可能的实现:
```python
import random
def machine_play(num_candies):
"""
人机版分糖果游戏:电脑用策略来选糖果
"""
candy_choice = 0
if num_candies > 4:
candy_choice = 4 - player_choice
elif 2 <= num_candies <= 4:
candy_choice = num_candies - 1
elif num_candies == 1:
candy_choice = 1
print("电脑获胜!")
else:
# 这种情况是不应该出现的
print("错误:无效的糖果数")
sys.exit()
print(f"电脑选了{candy_choice}颗糖果")
return candy_choice
# 开始游戏
num_candies = 20 # 初始糖果数
player_choice = 0 # 上一轮选手选择的糖果数
while num_candies > 0:
print(f"场上还有{num_candies}颗糖果")
player_choice = int(input("请输入你要取走的糖果数:"))
if player_choice < 1 or player_choice > 3 or player_choice >= num_candies:
print("错误:无效的糖果数,请重新输入")
continue
num_candies -= player_choice
if num_candies == 0:
print("恭喜你获胜!")
break
candy_choice = machine_play(num_candies)
num_candies -= candy_choice
if num_candies == 0:
print("电脑获胜!")
break
```
这个实现中,我们定义了一个 `machine_play` 函数,用于计算机的糖果选择。这个函数接受一个参数 `num_candies`,表示当前场上的糖果数,然后根据规则计算出计算机应该选择的糖果数,并将其返回。
在主循环中,我们首先让玩家输入糖果数,如果输入无效,则提示错误并重新让玩家输入。如果输入有效,则减去选手选择的糖果数,并检查场上剩下的糖果数是否为0。如果为0,则选手获胜,游戏结束。
如果场上剩下的糖果数不为0,则调用 `machine_play` 函数计算计算机的糖果选择,并减去计算机选择的糖果数,并检查场上剩下的糖果数是否为0。如果为0,则计算机获胜,游戏结束。如果还有剩余的糖果,则回到循环开始,让玩家继续输入糖果数。
阅读全文