【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("------------游戏结束-------------")
哇哦,兄dei,做的很棒啊,作为一名初学者,感觉你很牛逼啊
你好,再见 发表于 2018-11-19 19:05
哇哦,兄dei,做的很棒啊,作为一名初学者,感觉你很牛逼啊
我也是初学者 {:10_297:} 萌新看的一脸懵{:10_254:} 听风逝夜 发表于 2018-11-20 11:25
萌新看的一脸懵
就是纯粹的while和if语句,别的没什么啊~ {:10_266:} temp.isdigit():{:10_249:}这是个what啊不认识这个 cui12345 发表于 2018-11-21 15:39
temp.isdigit():这是个what啊不认识这个
假定temp是数字的话。
这个小甲鱼老师视频里有讲,课后习题也有,不会的话就是没认真听讲啦~ 为什么你的print里面总有个f?是C语言来的吗? ysp1992 发表于 2018-12-2 13:41
为什么你的print里面总有个f?是C语言来的吗?
print里面有个f代表格式化字符串。 heidern0612 发表于 2018-12-2 15:22
print里面有个f代表格式化字符串。
是format一样的吗?你这是2.0的语法吗?3.0不都是放个.format在字符串后面吗 本帖最后由 heidern0612 于 2018-12-4 12:52 编辑
ysp1992 发表于 2018-12-4 12:32
是format一样的吗?你这是2.0的语法吗?3.0不都是放个.format在字符串后面吗
好像是3.6版本的新特性,记不太清。
这么写我习惯了,不容易乱。 看了半个小时才看懂 就是不明白其循环的先后 这个游戏怎么运行啊,我的编译器弹出语法错误invalid syntax f风起 发表于 2019-1-1 20:45
这个游戏怎么运行啊,我的编译器弹出语法错误invalid syntax
试试把第一行#coding =GBK去掉。
我的编译器没问题。 {:10_256:}厉害厉害 3天你就会做游戏了啊这么牛逼啊大神 白开水1982 发表于 2019-2-13 10:42
3天你就会做游戏了啊这么牛逼啊大神
比较爱玩 {:10_247:}...
喜欢自己瞎捅咕,见笑了。 {:10_297:} 厉害啦 看到了差距,手动点赞一个!
页:
[1]
2