Python小案例:数字炸弹游戏(猜数字)

数字炸弹游戏规则

  • 有三名玩家准备挑战,数字炸弹游戏。
  • 假设范围是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


可优化部分

  1. 留了点bug用了a.两次死循环,其实可以只用一次的;b.如果其中一个人输入的数据是无效的后游戏将会重新开始,规则上来讲是直接淘汰该玩家。
  2. 既然范围和炸弹都是手动的了,那么参与的人数也是可以变成手动版
  3. 可以考虑利用函数简化代码块,元组的方式来返回值。例如把:手动输入的数据作为一个函数、判断有效性为一个函数、游戏规则为一个函数

tips:代码就不放了延展性太高,外加博主还没想好咋弄的。

其他优化

暂时还没想到,等评论区的人一起优化或后续有思路再出新版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Marilynhom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值