heidern0612 发表于 2018-11-16 13:14:34

【Pyhon 004讲心得体会】【真.小游戏展示】

本帖最后由 heidern0612 于 2019-7-29 09:47 编辑

写的内容都是自我思考的过程,难免有疏漏,有错误的地方欢迎广大鱼油给予指正!


改进我们的小游戏这一节挺好玩的,说实话这个小游戏浪费我一中午时间,饭都顾不上吃。

后面看来,其实并不推荐这种if套if又套if的写法。

不符合代码简洁之道,不过当时看来可以实现某些功能,看起来也蛮有趣的。


实现了如下功能:

1、增加了一个Debuffer,敌人持续加血、我方持续减血效果。

2、在靠近猜对的数时,对方会获得一个debuffer,会出现暴击效果。

3、我方可以吃血瓶恢复血量。

4、如果三回合没有猜到数字 and 不贴边,对方会获得一个暴击效果,持续到下回合结束。

5、辛苦打败敌人和猜中数字打败敌人结局不太一样。

6、根据自身血量的不同,猜中数字会导致不一样的结局。




还可以预实现以下效果:

1、打怪几率掉装备,可以获得更牛X的攻击效果,敌人去血更多。

2、可以对敌人释放魔法,让敌人说出接近目标数字的数字。

3、我方获得狂暴魔法,双方都加攻击。

4、还有很多好玩的效果,都可以用whie 和if来实现,通篇我也只用了while和if语句。其实只有循环和判断就很好玩了,不只是简单的数字游戏哟。



import random
hp1 = 20                        #人类血量
hp2 = 50                        #恶魔血量
med = 3                        #药品数量
secrect = random.randint(1,20)
mgc = 3                        #恶魔魔法冷却回合
debuffer = 0                #人类受伤debuffer
print("""----------这里是恶魔猫的城堡----------
愚蠢的人类,你要向我挑战吗?
你作为千百年来敢于反抗喵星人的唯一人类,似乎已经做好了准备。
身上只有三瓶HP药,是部落的长老费劲千辛万苦给你熬制出来的,所以要省着点用。(指令:吃药)
""")

while hp1 > 0 and hp2 >0:
        temp = input("请输入要攻击的数值:")
        if "吃药" in temp and med > 0 and hp1 <20:
                hp1 += 10
                med -= 1
                print("你喝下了珍贵的红药水,血量得到了一定的恢复!")
        if hp1 > 20:
                hp1 = 20
                print(f"你已经恢复到了满状态!血量当前为{hp1}")               
        if med == 0 :
                print("不知不觉间,你的包裹已经空空如也……药吃没了,你只能选择死战到底。")
               
        if temp.isdigit():
                guess = int(temp)
                if guess != secrect:
                        if 0< (guess - secrect) < 2 or 0 < (secrect - guess) < 2:             #接近猜测的数字(范围2以内)
                                print("你似乎发现了喵星人的怕痒的弱点,上去对着猫星人一顿挠。喵星人准备的魔法中断了。")
                                hp2 -= 10
                                hp1 -= 2
                                mgc = 3
                                print(f"你当前的血量值为{hp1},喵星人的血量值为{hp2},距喵星人准备魔法还有{mgc}回合")
                        else:
                                print("喵星人敏捷的闪过你的攻击,并朝你发动了一次反击。")
                                hp2 -= 5
                                hp1 -= 3
                                mgc -= 1
                                print(f"你当前的血量值为{hp1},喵星人的血量值为{hp2},距喵星人准备魔法还有{mgc}回合")
               
                else:
                        if hp1 >= 15 :
                                print("你轻松的战胜了喵星人,喵星人绝望的看着你对你说:‘十八年后我还会回来的!’,然后死掉了")
                                print("人类获得了胜利,全国上下载歌载舞,一个新的时代开启了。")
                                hp2 -=50
                                break
                        elif hp1 <= 5 :
                                print("你战斗了许久也无法战胜喵星人,同意了喵星人割地赔款的要求。")
                                print("喵星人虎视眈眈的望着你和你的国家,不知在想些什么。")
                                hp2 -=50
                                break
                        else:
                                print("你艰难的战胜了喵星人,喵星人逃跑了。")
                                print("人类国家从上到下一片疮痍,百废待兴。")
                                hp2 -=50
                                break
                if mgc == 0 :
                        hp1 -= 4
                        hp2 += 5
                        mgc = 3
                        debuffer = 2
                        print("喵星人发动了自身天赋技能:卖萌,你被大大的伤害了8点血,喵星人获得了5点血量的特殊恢复。")
                        print(f"你当前的血量值为{hp1},喵星人的血量值为{hp2},距喵星人准备魔法还有{mgc}回合。")
                if debuffer != 0:
                        debuffer -= 1
                        hp1 -=2
                        hp2 +=3
                        print("猫星人因上回合发动了天赋技能,获得了持续恢复3点血量,你被持续的伤害了2点血量。")
                        print(f"你当前的血量值为{hp1},喵星人的血量值为{hp2}。")       
        else:
                        print("趁着你的空档,喵星人趁着你慌乱的时候攻击了你一波。")
                        hp1 -=1
                        print(f"你当前的血量值为{hp1},喵星人的血量值为{hp2}。")

if hp1 <= 0:
        print("你被喵星人打败了,喵星人彻底的统治了星球,人类依旧活在喵星人的支配之下。")

if hp2 <= 0:
        print("你靠着自身的努力打败了喵星人,全国上下热烈的庆祝着,欢迎着你的归来。")


print("------------游戏结束-------------")

你好,再见 发表于 2018-11-19 19:05:18

哇哦,兄dei,做的很棒啊,作为一名初学者,感觉你很牛逼啊

heidern0612 发表于 2018-11-20 08:04:15

你好,再见 发表于 2018-11-19 19:05
哇哦,兄dei,做的很棒啊,作为一名初学者,感觉你很牛逼啊

我也是初学者 {:10_297:}

听风逝夜 发表于 2018-11-20 11:25:25

萌新看的一脸懵{:10_254:}

heidern0612 发表于 2018-11-20 18:12:45

听风逝夜 发表于 2018-11-20 11:25
萌新看的一脸懵

就是纯粹的while和if语句,别的没什么啊~ {:10_266:}

cui12345 发表于 2018-11-21 15:39:50

temp.isdigit():{:10_249:}这是个what啊不认识这个

heidern0612 发表于 2018-11-21 16:34:59

cui12345 发表于 2018-11-21 15:39
temp.isdigit():这是个what啊不认识这个

假定temp是数字的话。

这个小甲鱼老师视频里有讲,课后习题也有,不会的话就是没认真听讲啦~

ysp1992 发表于 2018-12-2 13:41:26

为什么你的print里面总有个f?是C语言来的吗?

heidern0612 发表于 2018-12-2 15:22:40

ysp1992 发表于 2018-12-2 13:41
为什么你的print里面总有个f?是C语言来的吗?

print里面有个f代表格式化字符串。

ysp1992 发表于 2018-12-4 12:32:04

heidern0612 发表于 2018-12-2 15:22
print里面有个f代表格式化字符串。

是format一样的吗?你这是2.0的语法吗?3.0不都是放个.format在字符串后面吗

heidern0612 发表于 2018-12-4 12:47:10

本帖最后由 heidern0612 于 2018-12-4 12:52 编辑

ysp1992 发表于 2018-12-4 12:32
是format一样的吗?你这是2.0的语法吗?3.0不都是放个.format在字符串后面吗

好像是3.6版本的新特性,记不太清。

这么写我习惯了,不容易乱。

huzy000 发表于 2018-12-16 22:29:59

看了半个小时才看懂

亮晶晶 发表于 2018-12-22 17:17:51

就是不明白其循环的先后

f风起 发表于 2019-1-1 20:45:51

这个游戏怎么运行啊,我的编译器弹出语法错误invalid syntax

heidern0612 发表于 2019-1-2 10:29:07

f风起 发表于 2019-1-1 20:45
这个游戏怎么运行啊,我的编译器弹出语法错误invalid syntax

试试把第一行#coding =GBK去掉。

我的编译器没问题。

qq664752 发表于 2019-1-17 19:37:07

{:10_256:}厉害厉害

白开水1982 发表于 2019-2-13 10:42:09

3天你就会做游戏了啊这么牛逼啊大神

heidern0612 发表于 2019-2-13 12:51:16

白开水1982 发表于 2019-2-13 10:42
3天你就会做游戏了啊这么牛逼啊大神

比较爱玩 {:10_247:}...

喜欢自己瞎捅咕,见笑了。 {:10_297:}

明天的新阳 发表于 2019-4-30 15:02:10

厉害啦

糠爸 发表于 2019-7-15 14:26:06

看到了差距,手动点赞一个!
页: [1] 2
查看完整版本: 【Pyhon 004讲心得体会】【真.小游戏展示】