小游戏:这个游戏中,会随机生成玩家和敌人的属性,同时互相攻击,直至一方血量小于零。这样的战斗会持续三局,采取三局两胜制,最后输出战斗结果,公布获胜方。
分析过程,拆解项目:
基础元素设定
#代码
#1.定义玩家属性:
print('【玩家】血量:100 攻击:50')
print('【敌人】血量:100 攻击:30')
#2.手动计算攻击第一次,双方各自所剩的血量:
print('你发起了攻击,【敌人】剩余血量50') #人工计算敌人血量:100-50=50
print('【敌人】发起了攻击,【玩家】剩余血量70') #人工计算玩家血量:100-30=70
#3.手动计算攻击第一次,双方各自所剩的血量:
print('你发起了攻击,【敌人】剩余血量0') #人工计算敌人血量:50-50=0
print('【敌人】发起了攻击,【玩家】剩余血量40') #人工计算玩家血量:70-30=40
print('敌人死翘翘了,你赢了!!')#打印结果
#显示
【玩家】血量:100 攻击:50
【敌人】血量:100 攻击:30
你发起了攻击,【敌人】剩余血量50
【敌人】发起了攻击,【玩家】剩余血量70
你发起了攻击,【敌人】剩余血量0
【敌人】发起了攻击,【玩家】剩余血量40
敌人死翘翘了,你赢了!!
#代码显示处理
print('【玩家】\n血量:100\n 攻击:50')
print('------------------------------')
print('【敌人】\n血量:100\n攻击:30')
print('------------------------------')
print('你发起了攻击,【敌人】剩余血量50')
print('【敌人】发起了攻击,【玩家】剩余血量70')
print('------------------------------')
print('你发起了攻击,【敌人】剩余血量0')
print('【敌人】发起了攻击,【玩家】剩余血量40')
print('------------------------------')
print('敌人死翘翘了,你赢了!!')
#显示
【玩家】
血量:100
攻击:50
------------------------------
【敌人】
血量:100
攻击:30
------------------------------
你发起了攻击,【敌人】剩余血量50
【敌人】发起了攻击,【玩家】剩余血量70
------------------------------
你发起了攻击,【敌人】剩余血量0
【敌人】发起了攻击,【玩家】剩余血量40
------------------------------
敌人死翘翘了,你赢了!!
添加计时器
计时器:
import time #调用time模块
time.sleep(secs)
#使用time模块下面的sleep()函数,括号里填的是间隔的秒数(seconds,简称secs)
#time.sleep(1.5)就表示停留1.5秒再运行后续代码
完整的版本1.0代码:
import time #调用time模块
print('【玩家】\n血量:100\n 攻击:50')
print('------------------------------')
time.sleep(1.5)
print('【敌人】\n血量:100\n攻击:30')
print('------------------------------')
time.sleep(1.5)
print('你发起了攻击,【敌人】剩余血量50')
print('【敌人】发起了攻击,【玩家】剩余血量70')
print('------------------------------')
time.sleep(1.5)
print('你发起了攻击,【敌人】剩余血量0')
print('【敌人】发起了攻击,【玩家】剩余血量40')
print('------------------------------')
time.sleep(1.5)
print('敌人死翘翘了,你赢了!!')
流程
1.随机生成玩家和敌人的属性
2.显示玩家和敌人属性
3.PK过程展示,自动攻击扣血
1 生成随机角色:生成随机整数(百度一下)用到random模块里的**randint()**函数
------------基本代码------------
#代码
import random
a=random.randint(1,100)#随机生成1-100的整数,可多试几次代码
print(a)
#显示
多次运行出现1-100(包含)的随机整数
-----------角色属性—随机设定代码------------
#代码
import random
import time
#生成敌人随机属性
player_blood=random.randint(100,150)#定义玩家血量:100-150随机
player_attact=random.randint(30,50)#定义玩家攻击力:30-50随机
enemy_blood=random.randint(100,150)#定义玩家血量:100-150随机
enemy_attact=random.randint(30,50)#定义玩家攻击力:30-50随机
print('【玩家】\n'+'血量: '+str(player_blood)+'\n攻击: '+str(player_attact))
print('------------------------------------------')
time.sleep(1)
print('【敌人】\n'+'血量: '+str(enemy_blood)+'\n攻击: '+str(enemy_attact))
print('------------------------------------------')
time.sleep(1)
while内部填充?
攻击力不变,血量更新:
【玩家】当前血量=【玩家】血量-【敌人】攻击
【敌人】当前血量=【敌人】血量-【玩家】攻击
------------------------------------------------自动PK-代码-------------------------------------------------------------------------
#代码
import time
#生成敌人随机属性
player_blood=random.randint(100,150)#定义玩家血量:100-150随机
player_attact=random.randint(30,50)#定义玩家攻击力:30-50随机
enemy_blood=random.randint(100,150)#定义玩家血量:100-150随机
enemy_attact=random.randint(30,50)#定义玩家攻击力:30-50随机
print('【玩家】\n'+'血量: '+str(player_blood)+'\n攻击: '+str(player_attact))
print('------------------------------------------')
time.sleep(1)
print('【敌人】\n'+'血量: '+str(enemy_blood)+'\n攻击: '+str(enemy_attact))
print('------------------------------------------')
time.sleep(1)
while(player_blood>0 and enemy_blood>0):
player_blood=player_blood-enemy_attact
enemy_blood=enemy_blood-player_attact
print('你发起了攻击,【敌人】剩余血量:'+str(enemy_blood))
print('【敌人】发起了攻击,【玩家】剩余血量:' + str(player_blood))
print('------------------------------------------')
time.sleep(2.0)
------------------------------------------------显示结果-------------------------------------------------------------------------
【玩家】
血量: 104
攻击: 30
------------------------------------------
【敌人】
血量: 145
攻击: 35
------------------------------------------
你发起了攻击,【敌人】剩余血量:115
【敌人】发起了攻击,【玩家】剩余血量:69
------------------------------------------
你发起了攻击,【敌人】剩余血量:85
【敌人】发起了攻击,【玩家】剩余血量:34
------------------------------------------
你发起了攻击,【敌人】剩余血量:55
【敌人】发起了攻击,【玩家】剩余血量:-1
------------------------------------------
流程
------------------------------------------------单局战果打印-------------------------------------------------------------------
#打印战果:
if(player_blood>0 and enemy_blood<=0):
print('敌人死翘翘了,【玩家】赢了')
elif(player_blood<=0 and enemy_blood>0):
print('悲剧了,你被敌人消灭,【敌人】赢了')
else:
print('【玩家】和【敌人】同归于尽,平局')
------------------------------------------------三局两胜循环-------------------------------------------------------------------
#计分规则:
if(player_blood>0 and enemy_blood<=0):
player_victory += 1
print('敌人死翘翘了,【玩家】赢了')
elif(player_blood<=0 and enemy_blood>0):
enemy_victory += 1
print('悲剧了,你被敌人消灭,【敌人】赢了')
else:
print('【玩家】和【敌人】同归于尽,平局')
#最终结果输出:
if(player_victory>enemy_victory):
print('最终结果:【玩家】获胜!')
elif(player_victory < enemy_victory):
print('最终结果:【敌人】获胜!')
else:
print('最终结果:平局!')
------------------------------------------------完整代码-------------------------------------------------------------------
import random,time
player_victory=0
enemy_victory=0
print('---------让我们来玩一个三局两胜的游戏吧,每局属性随机呦,ready go!------')
for i in range(1,4):
print('\n---&&&&&&---现在是第'+str(i)+'局,战斗开始!!---&&&&&&---')
player_blood=random.randint(100,150)#定义玩家血量:100-150随机
player_attact = random.randint(30, 50) # 定义玩家攻击力:30-50随机
enemy_blood=random.randint(100,150)#定义玩家血量:100-150随机
enemy_attact=random.randint(30,50)#定义玩家攻击力:30-50随机
print('【玩家】\n'+'血量: '+str(player_blood)+'\n攻击: '+str(player_attact))
print('------------------------------------------')
time.sleep(1)
print('【敌人】\n'+'血量: '+str(enemy_blood)+'\n攻击: '+str(enemy_attact))
print('------------------------------------------')
time.sleep(1)
while(player_blood>0 and enemy_blood>0):
player_blood=player_blood-enemy_attact
enemy_blood=enemy_blood-player_attact
print('你发起了攻击,【敌人】剩余血量:'+str(enemy_blood))
print('【敌人】发起了攻击,【玩家】剩余血量:' + str(player_blood))
print('------------------------------------------')
time.sleep(1.5)
#打印战果:
if(player_blood>0 and enemy_blood<=0):
player_victory += 1
print('敌人死翘翘了,【玩家】赢了')
elif(player_blood<=0 and enemy_blood>0):
enemy_victory += 1
print('悲剧了,你被敌人消灭,【敌人】赢了')
else:
print('【玩家】和【敌人】同归于尽,平局')
print('-------@@@@@@@@@@@@@@@@@@@@@@@@------------')
print('------------三局战斗结束,请看最终结果-------')
if(player_victory>enemy_victory):
print('最终结果:【玩家】获胜!')
elif(player_victory < enemy_victory):
print('最终结果:【敌人】获胜!')
else:
print('最终结果:平局!')
------------------------------------------------显示结果-------------------------------------------------------------------
可以运行多次,每次结果随机。
---------让我们来玩一个三局两胜的游戏吧,每局属性随机呦,ready go!------
---&&&&&&---现在是第1局,战斗开始!!---&&&&&&---
【玩家】
血量: 116
攻击: 49
------------------------------------------
【敌人】
血量: 116
攻击: 48
------------------------------------------
你发起了攻击,【敌人】剩余血量:67
【敌人】发起了攻击,【玩家】剩余血量:68
------------------------------------------
你发起了攻击,【敌人】剩余血量:18
【敌人】发起了攻击,【玩家】剩余血量:20
------------------------------------------
你发起了攻击,【敌人】剩余血量:-31
【敌人】发起了攻击,【玩家】剩余血量:-28
------------------------------------------
【玩家】和【敌人】同归于尽,平局
---&&&&&&---现在是第2局,战斗开始!!---&&&&&&---
【玩家】
血量: 127
攻击: 40
------------------------------------------
【敌人】
血量: 119
攻击: 32
------------------------------------------
你发起了攻击,【敌人】剩余血量:79
【敌人】发起了攻击,【玩家】剩余血量:95
------------------------------------------
你发起了攻击,【敌人】剩余血量:39
【敌人】发起了攻击,【玩家】剩余血量:63
------------------------------------------
你发起了攻击,【敌人】剩余血量:-1
【敌人】发起了攻击,【玩家】剩余血量:31
------------------------------------------
敌人死翘翘了,【玩家】赢了
---&&&&&&---现在是第3局,战斗开始!!---&&&&&&---
【玩家】
血量: 148
攻击: 37
------------------------------------------
【敌人】
血量: 145
攻击: 37
------------------------------------------
你发起了攻击,【敌人】剩余血量:108
【敌人】发起了攻击,【玩家】剩余血量:111
------------------------------------------
你发起了攻击,【敌人】剩余血量:71
【敌人】发起了攻击,【玩家】剩余血量:74
------------------------------------------
你发起了攻击,【敌人】剩余血量:34
【敌人】发起了攻击,【玩家】剩余血量:37
------------------------------------------
你发起了攻击,【敌人】剩余血量:-3
【敌人】发起了攻击,【玩家】剩余血量:0
------------------------------------------
【玩家】和【敌人】同归于尽,平局
-------@@@@@@@@@@@@@@@@@@@@@@@@------------
------------三局战斗结束,请看最终结果-------
最终结果:【玩家】获胜!
彩蛋:用%s代替+ str(),更方便!(字符串用 %s,浮点数用 %f,整数用 %d)
# 字符代替方式
print('血量:'+str(player_blood)+' 攻击:'+str(player_attack))
print('血量:%s 攻击:%s' % (player_blood,player_attack))
故上述代码可以精简
import random,time
player_victory=0
enemy_victory=0
print('---------让我们来玩一个三局两胜的游戏吧,每局属性随机呦,ready go!------')
for i in range(1,4):
print('\n---&&&&&&---现在是第%s局,战斗开始!!---&&&&&&---'%i)
player_blood=random.randint(100,150)#定义玩家血量:100-150随机
player_attact = random.randint(30, 50) # 定义玩家攻击力:30-50随机
enemy_blood=random.randint(100,150)#定义玩家血量:100-150随机
enemy_attact=random.randint(30,50)#定义玩家攻击力:30-50随机
print('【玩家】\n' + '血量: %s \n攻击: %s'%(player_blood,player_attact))
#print('【玩家】\n'+'血量: '+str(player_blood)+'\n攻击: '+str(player_attact))
print('------------------------------------------')
time.sleep(1)
print('【敌人】\n' + '血量: %s \n攻击: %s'%(enemy_blood, enemy_attact))
#print('【敌人】\n'+'血量: '+str(enemy_blood)+'\n攻击: '+str(enemy_attact))
print('------------------------------------------')
time.sleep(1)
while(player_blood>0 and enemy_blood>0):
player_blood=player_blood-enemy_attact
enemy_blood=enemy_blood-player_attact
print('你发起了攻击,【敌人】剩余血量:%s'%(enemy_blood))
print('【敌人】发起了攻击,【玩家】剩余血量:%s'%(player_blood))
#print('你发起了攻击,【敌人】剩余血量:'+str(enemy_blood))
#print('【敌人】发起了攻击,【玩家】剩余血量:' + str(player_blood))
print('------------------------------------------')
time.sleep(1.5)
#打印战果:
if(player_blood>0 and enemy_blood<=0):
player_victory += 1
print('敌人死翘翘了,【玩家】赢了')
elif(player_blood<=0 and enemy_blood>0):
enemy_victory += 1
print('悲剧了,你被敌人消灭,【敌人】赢了')
else:
print('【玩家】和【敌人】同归于尽,平局')
print('-------@@@@@@@@@@@@@@@@@@@@@@@@------------')
print('------------三局战斗结束,请看最终结果-------')
if(player_victory>enemy_victory):
print('最终结果:【玩家】获胜!')
elif(player_victory < enemy_victory):
print('最终结果:【敌人】获胜!')
else:
print('最终结果:平局!')
分析:
方案1:while True+break 开启一个无限循环,设定跳出条件。
方案2:while 变量名+变量名的布尔值判断,在开头设某变量的布尔值为True,input后开启判断变量的布尔值是否改变。
------------------------------------------------方案一-------------------------------------------------------------------
#
import random,time
player_victory=0
enemy_victory=0
print('---------让我们来玩一个三局两胜的游戏吧,每局属性随机呦,ready go!------')
while True:
for i in range(1,4):
print('\n---&&&&&&---现在是第%s局,战斗开始!!---&&&&&&---'%i)
player_blood=random.randint(100,150)#定义玩家血量:100-150随机
player_attact = random.randint(30, 50) # 定义玩家攻击力:30-50随机
enemy_blood=random.randint(100,150)#定义玩家血量:100-150随机
enemy_attact=random.randint(30,50)#定义玩家攻击力:30-50随机
print('【玩家】\n' + '血量: %s \n攻击: %s'%(player_blood,player_attact))
print('------------------------------------------')
time.sleep(1)
print('【敌人】\n' + '血量: %s \n攻击: %s'%(enemy_blood, enemy_attact))
print('------------------------------------------')
time.sleep(1)
while player_blood>0 and enemy_blood>0:
player_blood=player_blood-enemy_attact
enemy_blood=enemy_blood-player_attact
print('你发起了攻击,【敌人】剩余血量:%s'%enemy_blood)
print('【敌人】发起了攻击,【玩家】剩余血量:%s'%player_blood)
print('------------------------------------------')
time.sleep(1.5)
#打印战果:
if player_blood>0 and enemy_blood<=0 :
player_victory += 1
print('敌人死翘翘了,【玩家】赢了')
elif player_blood<=0 and enemy_blood>0 :
enemy_victory += 1
print('悲剧了,你被敌人消灭,【敌人】赢了')
else:
print('【玩家】和【敌人】同归于尽,平局')
print('-------@@@@@@@@@@@@@@@@@@@@@@@@------------')
print('------------三局战斗结束,请看最终结果-------')
if player_victory>enemy_victory :
print('最终结果:【玩家】获胜!')
elif player_victory < enemy_victory :
print('最终结果:【敌人】获胜!')
else:
print('最终结果:平局!')
choose=input('是否再来一盘?回答:再来一盘/结束游戏')
if choose=='结束游戏':
break
#输出显示:
---------让我们来玩一个三局两胜的游戏吧,每局属性随机呦,ready go!------
---&&&&&&---现在是第1局,战斗开始!!---&&&&&&---
【玩家】
血量: 103
攻击: 32
------------------------------------------
【敌人】
血量: 105
攻击: 35
------------------------------------------
你发起了攻击,【敌人】剩余血量:73
【敌人】发起了攻击,【玩家】剩余血量:68
------------------------------------------
你发起了攻击,【敌人】剩余血量:41
【敌人】发起了攻击,【玩家】剩余血量:33
------------------------------------------
你发起了攻击,【敌人】剩余血量:9
【敌人】发起了攻击,【玩家】剩余血量:-2
------------------------------------------
悲剧了,你被敌人消灭,【敌人】赢了
---&&&&&&---现在是第2局,战斗开始!!---&&&&&&---
【玩家】
血量: 132
攻击: 48
------------------------------------------
【敌人】
血量: 115
攻击: 37
------------------------------------------
你发起了攻击,【敌人】剩余血量:67
【敌人】发起了攻击,【玩家】剩余血量:95
------------------------------------------
你发起了攻击,【敌人】剩余血量:19
【敌人】发起了攻击,【玩家】剩余血量:58
------------------------------------------
你发起了攻击,【敌人】剩余血量:-29
【敌人】发起了攻击,【玩家】剩余血量:21
------------------------------------------
敌人死翘翘了,【玩家】赢了
---&&&&&&---现在是第3局,战斗开始!!---&&&&&&---
【玩家】
血量: 102
攻击: 46
------------------------------------------
【敌人】
血量: 111
攻击: 36
------------------------------------------
你发起了攻击,【敌人】剩余血量:65
【敌人】发起了攻击,【玩家】剩余血量:66
------------------------------------------
你发起了攻击,【敌人】剩余血量:19
【敌人】发起了攻击,【玩家】剩余血量:30
------------------------------------------
你发起了攻击,【敌人】剩余血量:-27
【敌人】发起了攻击,【玩家】剩余血量:-6
------------------------------------------
【玩家】和【敌人】同归于尽,平局
-------@@@@@@@@@@@@@@@@@@@@@@@@------------
------------三局战斗结束,请看最终结果-------
最终结果:平局!
是否再来一盘?回答:再来一盘/结束游戏j再来一盘
---&&&&&&---现在是第1局,战斗开始!!---&&&&&&---
【玩家】
血量: 146
攻击: 40
------------------------------------------
【敌人】
血量: 141
攻击: 41
------------------------------------------
你发起了攻击,【敌人】剩余血量:101
【敌人】发起了攻击,【玩家】剩余血量:105
------------------------------------------
你发起了攻击,【敌人】剩余血量:61
【敌人】发起了攻击,【玩家】剩余血量:64
------------------------------------------
你发起了攻击,【敌人】剩余血量:21
【敌人】发起了攻击,【玩家】剩余血量:23
------------------------------------------
你发起了攻击,【敌人】剩余血量:-19
【敌人】发起了攻击,【玩家】剩余血量:-18
------------------------------------------
【玩家】和【敌人】同归于尽,平局
---&&&&&&---现在是第2局,战斗开始!!---&&&&&&---
【玩家】
血量: 135
攻击: 37
------------------------------------------
【敌人】
血量: 125
攻击: 49
------------------------------------------
你发起了攻击,【敌人】剩余血量:88
【敌人】发起了攻击,【玩家】剩余血量:86
------------------------------------------
你发起了攻击,【敌人】剩余血量:51
【敌人】发起了攻击,【玩家】剩余血量:37
------------------------------------------
你发起了攻击,【敌人】剩余血量:14
【敌人】发起了攻击,【玩家】剩余血量:-12
------------------------------------------
悲剧了,你被敌人消灭,【敌人】赢了
---&&&&&&---现在是第3局,战斗开始!!---&&&&&&---
【玩家】
血量: 108
攻击: 31
------------------------------------------
【敌人】
血量: 110
攻击: 35
------------------------------------------
你发起了攻击,【敌人】剩余血量:79
【敌人】发起了攻击,【玩家】剩余血量:73
------------------------------------------
你发起了攻击,【敌人】剩余血量:48
【敌人】发起了攻击,【玩家】剩余血量:38
------------------------------------------
你发起了攻击,【敌人】剩余血量:17
【敌人】发起了攻击,【玩家】剩余血量:3
------------------------------------------
你发起了攻击,【敌人】剩余血量:-14
【敌人】发起了攻击,【玩家】剩余血量:-32
------------------------------------------
【玩家】和【敌人】同归于尽,平局
-------@@@@@@@@@@@@@@@@@@@@@@@@------------
------------三局战斗结束,请看最终结果-------
最终结果:【敌人】获胜!
是否再来一盘?回答:再来一盘/结束游戏结束游戏
Process finished with exit code 0
#代替
print('【玩家】\n' + '血量: %s \n攻击: %s'%(player_blood,player_attact))
print('【玩家】\n血量:{}\n攻击:{}'.format(player_blood,player_attack))
print('\n---&&&&&&---现在是第%s局,战斗开始!!---&&&&&&---'%i)
print('\n---&&&&&&---现在是第{}局,战斗开始!!---&&&&&&---'.format(i))
#运行正确