数字炸弹游戏规则
- 有三名玩家准备挑战,数字炸弹游戏。
- 假设范围是10以内的一个数字是炸弹,猜到炸弹的人将受到惩罚。
- 如果炸弹是5,那么你猜的数字是2,而2不是炸弹,那么猜数字的范围将减少到2-10;
- 在猜到另一个数字7后,7不是炸弹,所以现在它减少到2~7。
- 你不能每次猜到边界上的值,除非有人猜到了炸弹,然后你就会受到惩罚。
分析
1、首先由用户手动输入一个范围猜取的范围和一个数字作为炸弹;
2、然后利用循环和判断进行由三名玩家进行轮流猜;
3、程序进行判断是否爆炸(是否等会炸弹数字),未炸则提示下一个人猜的范围然后继续,直到猜中停止游戏。
代码展示
简易版
# 数字炸弹游戏
# 1、首先由用户输入一个范围猜取的范围初始值start_Value、end_Value和一个数字作为炸弹Bombs;
start_Value = int(input("请输入猜取的范围开始数字:"))
end_Value = int(input("请输入猜取的范围结束数字:"))
Bombs = int(input("请输入炸弹数字:"))
player_List = ["玩家1号","玩家2号","玩家3号"]
# 开始游戏
while(1):
name_Nub = 0
for i in player_List:
player = player_List[name_Nub]
guass = int (input(f"请{player},在{start_Value}-{end_Value}中报一个数字:"))
if start_Value< guass <end_Value:
if guass == Bombs:
print(f"恭喜玩家{player},爆炸了")
exit()
elif guass > Bombs:
end_Value = guass
print(f"请{player}继续加油,游戏继续!")
elif guass < Bombs:
start_Value = guass
print(f"请{player}重新排队参加,游戏继续!")
name_Nub += 1
else:
print("猜的数字无效请重新开始")
break
手动输入数据完整版
# 数字炸弹游戏
# 1、首先由用户输入一个范围猜取的范围初始值start_Value、end_Value和一个数字作为炸弹Bombs;
# 判断用户输入的范围以及炸弹的数字都是有效的
while(1):
start_Value = input("请输入猜取的范围开始数字:")
end_Value = input("请输入猜取的范围结束数字:")
Bombs = input("请输入炸弹数字:")
if start_Value.isdigit() and end_Value.isdigit() and Bombs.isdigit() :
start_Value = int(start_Value)
end_Value = int(end_Value)
Bombs = int(Bombs)
if start_Value< Bombs < end_Value:
print(f"炸弹范围:{start_Value}-{end_Value},炸弹数字为:{Bombs}")
break
else:
print(f"请输入{start_Value}-{end_Value}范围内的数字作为炸弹,重新输入...")
continue
else:
print("输入的范围以及炸弹的数字中有无效的数据,请重新输入...")
# 玩家列表
player_List = ["玩家1号","玩家2号","玩家3号"]
# 开始游戏
# 2、然后利用循环和判断进行由三名玩家进行轮流猜;
# 3、程序进行判断是否爆炸(是否等会炸弹数字),未炸则提示下一个人猜的范围然后继续,直到猜中停止游戏。
while(1):
name_Nub = 0
for i in player_List:
player = player_List[name_Nub]
guass = int (input(f"请{player},在{start_Value}-{end_Value}中报一个数字:"))
if start_Value< guass <end_Value:
if guass == Bombs:
print(f"恭喜玩家{player},爆炸了")
exit()
elif guass > Bombs:
end_Value = guass
print(f"请{player}继续加油,游戏继续!")
elif guass < Bombs:
start_Value = guass
print(f"请{player}重新排队参加,游戏继续!")
name_Nub += 1
else:
print("猜的数字无效请重新开始")
break
可优化部分
- 留了点bug用了a.两次死循环,其实可以只用一次的;b.如果其中一个人输入的数据是无效的后游戏将会重新开始,规则上来讲是直接淘汰该玩家。
- 既然范围和炸弹都是手动的了,那么参与的人数也是可以变成手动版
- 可以考虑利用函数简化代码块,元组的方式来返回值。例如把:手动输入的数据作为一个函数、判断有效性为一个函数、游戏规则为一个函数
tips:代码就不放了延展性太高,外加博主还没想好咋弄的。
其他优化
暂时还没想到,等评论区的人一起优化或后续有思路再出新版