python血条游戏代码_零基础快速学十二课Python完整游戏代码,使用「格式符%」来处理...

十二课Python不同数据类型的拼接方式,使用【格式符%】来处理 不过它还没有全部解决:打印出每局结果,三局两胜打印最终战果。这就是版本3.0需要做的事情。

打印战果,三局两胜。

对比2.0版本,在3.0版本中,我们想要增加的功能是:1、打印战果:每局战斗后,根据胜负平的结果打印出不同的提示。2、三局两胜:双方战斗三局,胜局多的为最终赢家。

回来看项目,当小鱼儿与花无缺PK的时候,血量都会开始递减,经过多次攻击,会出现如下结果。

来,增加这次战局结果的判定。

是不是好多了。现在只剩下最后一步,三局两胜。

三局两胜,怎么办?

双方3局2胜,得记录胜负的结果,那我们引入一个变量,来记录胜负得分结果,最后进行判断,输出战果。

开始带大家完成第一步,3局比赛。

双方要战3局, 也就是循环一局比赛三次,我们一局的比赛已经写完,这就是循环体,循环3次,使用for循环。

来,看代码:

import time

import random

#也可合并写成一行:import time,random

for i in range(1,4):

time.sleep(1) # 让局与局之间有较明显的有时间间隔

print(' \n——————现在进行第'+str(i)+'局,3,2,1,go!——————') # 作为局的标记

# 生成随机属性

freeLi_life = random.randint(100,150) # “freeLi_life” 代表花无缺血量

freeLi_attack = random.randint(20,30) # “freeLi_attack” 代表花无缺攻击

BOSS_life = random.randint(100,150) # “BOSS_life” 代表小鱼儿血量

BOSS_attack = random.randint(20,30) # “BOSS_attack” 代表小鱼儿攻击

# 展示双方角色的属性

print('【花无缺】\n'+'血量:'+str(freeLi_life)+'\n攻击:'+str(freeLi_attack))

#freeLi_life和freeLi_attack的数据类型都是整数,所以拼接时需要先用str()转换

print('------------------------')

time.sleep(1)

#暂停一秒再执行后续代码

print('【小鱼儿】\n'+'血量:'+str(BOSS_life)+'\n攻击:'+str(BOSS_attack))

print('------------------------')

# 自动PK阶段

while(freeLi_life>0) and (BOSS_life>0):

freeLi_life = freeLi_life - BOSS_attack

BOSS_life = BOSS_life - freeLi_attack

print('花无缺发起了攻击,【小鱼儿】剩余血量'+str(BOSS_life))

#freeLi_life是整数,所以拼接时要先用str()转换

print('小鱼儿向花无缺发起了攻击,【花无缺】剩余血量'+str(freeLi_life))

print('------------------------')

time.sleep(2)

# 为了体现出战斗回合,这里停顿2秒

# 打印战果

if freeLi_life > 0 and BOSS_life <= 0:

print('小鱼儿挂了,花无缺赢了')

elif freeLi_life <= 0 and BOSS_life > 0:

print('悲催,小鱼儿把花无缺遥干掉了!')

else:

print('哎呀,花无缺和小鱼儿同归于尽了!')

好了,三局比赛的效果已经完成, 现在只差“统计三局两胜”的结果了。

我们想想,平时比赛如何记录比赛结果呢?

使用积分牌啊,只要赢一局,就增加得分+1,最后比较双方得分大小。

既然记录得分,我们首先要给计算机制定“计分牌”, 用于存放【李逍遥】和【拜月教主】的每一局得分。

freeLi_score = 0存放花无缺赢的局数。

BOSS_score = 0存放小鱼儿赢的局数。

那么,在什么情况下得分才会+1呢??当然是每一局比完之后,我们去增加得分。

if freeLi_life > 0 and BOSS_life <= 0:

freeLi_score=freeLi_score+1

print('小鱼儿挂了,无缺赢了')

elif freeLi_life <= 0 and BOSS_life > 0:

BOSS_score = BOSS_score +1

print('悲催,小鱼儿把无缺赢干掉了!')

else:

print('哎呀,无缺和小鱼儿同归于尽了!')

然后,我们将小鱼儿和花无缺各自赢得局数算出来。

最后,再做一次判断,比较一下李逍遥赢得局数和拜月教主赢得局数。

也就是

看到上面分析情况,需要注意得是,因为你是最后需要判断三局两胜的结果,你就需要把最终结果的判断放在for循环的外面,不要缩进。

终于做完项目了。做完人生中的第一个Python项目,开心不?

为自己鼓掌,仅仅不到50行的代码,完成了小鱼儿大花无缺游戏,感觉Python是不是很简单?

还是那一句,人生苦短,我用Python!

好了,项目已经做完了,但还是要追求尽善尽美。有个地方需要【格式化字符串】

What?什么叫格式化字符串?

在上面代码中,双方角色属性的地方:

print('【花无缺】\n'+'血量:'+str(freeLi_life)+'\n攻击:'+str(freeLi_attack))

print('【小鱼儿】\n'+'血量:'+str(BOSS_life)+'\n攻击:'+str(BOSS_attack))

在这里,我们使用【+】拼接字符串和变量的时候,常常要考虑变量是什么类型的数据,如果不是字符串类型的,还要先使用str()函数转换,然后再拼接。 这里才有两个变量,就使用【‘’】开始包裹拼接,好麻烦。

Python为我们提供了一种不同数据类型的拼接方式,使用【格式符%】来处理。

如上图,我们看到格式符%后面有一个字母,这个字母用来控制数据显示的。【%s】就是占住这个位置,将变量转换成字符串。

那么我们项目中的代码就可以改成:

print('【花无缺】\n血量:%s\n攻击力:%s' %( freeLi_life, freeLi_attack))

print('【小鱼儿】\n血量:%s\n攻击力:%s' %(BOSS_life, BOSS_attack))

看一下,是不是代码更好读了。

运行一下替换后的代码,观察终端里的效果。

码结构是不是很清爽? perfect,完美结束。

湖秘籍:【%】后面的类型码用什么,取决于你希望这个【%】占住的这个位置的数据以什么类型展示出来,如果你希望它以字符串形式展示,那就写【%s】,如果你希望它以整数形式展示,那就写【%d】。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值