Python开发骰子游戏遇阻,求电脑对手逻辑的实现方案
你原来的代码存在的小问题:randint(1,7)会生成1到7的整数,不符合骰子1-6的规则,我们先修正这个问题,再添加电脑逻辑。
完整可运行代码如下:
from random import randint # 总积分初始化 player_total = 0 computer_total = 0 # 获胜阈值 WIN_SCORE = 100 def player_turn(): """处理玩家回合逻辑,返回玩家本回合获得的积分(掷到1返回0,主动结束返回临时积分)""" turn_score = 0 while True: inp = input("是否掷骰子?输入y继续,其他键结束本回合:") if inp.lower() == "y": dice = randint(1, 6) if dice == 1: print(f"你掷出了1,本回合获得的{turn_score}点作废,回合结束!") return 0 else: turn_score += dice print(f"你掷出了{dice},本回合临时积分:{turn_score},当前总积分(未加本回合):{player_total}") # 提前判断加了之后够不够赢,够的话直接返回 if player_total + turn_score >= WIN_SCORE: return turn_score else: print(f"你主动结束本回合,本回合获得{turn_score}点计入总积分") return turn_score def computer_turn(): """处理电脑回合逻辑,返回电脑本回合获得的积分""" turn_score = 0 # 电脑策略:单回合拿到20分就停,或者总积分加临时分够100就停 while True: dice = randint(1, 6) if dice == 1: print(f"电脑掷出了1,本回合获得的{turn_score}点作废,回合结束!") return 0 else: turn_score += dice print(f"电脑掷出了{dice},本回合临时积分:{turn_score},电脑当前总积分(未加本回合):{computer_total}") # 判断是否满足停止条件 if computer_total + turn_score >= WIN_SCORE: return turn_score if turn_score >= 20: print(f"电脑主动结束本回合,本回合获得{turn_score}点计入总积分") return turn_score # 主循环,轮流进行回合 while True: # 玩家先攻 player_add = player_turn() player_total += player_add print(f"玩家当前总积分:{player_total}\n") if player_total >= WIN_SCORE: print("恭喜你率先达到100分,获胜!") break # 电脑回合 computer_add = computer_turn() computer_total += computer_add print(f"电脑当前总积分:{computer_total}\n") if computer_total >= WIN_SCORE: print("电脑率先达到100分,你输了!") break
关键逻辑说明
- 我们把玩家和电脑的回合逻辑拆分成了两个独立函数,代码结构更清晰,也方便后续调整电脑策略
- 电脑的决策逻辑是这类骰子游戏的通用最优基础策略:单回合积分累计到20就收手,你如果想调整难度可以修改这个阈值,比如改成15就是简单难度,25就是困难难度
- 每回合结束后都会先判断总积分是否达标,达标就直接结束游戏,符合超过100也获胜的规则
内容的提问来源于stack exchange,提问作者pinar
相关产品推荐
相关产品推荐

