完成一个项目的流程分三步:
明确项目目的,指的就是我们希望这个程序干什么,达到什么样的效果,从而帮助我们分析整个项目流程,拆解项目;然而,一个完美的拆解方案,应当是按照从上往下的逻辑自然拆解,难度逐渐增加;逐步解决问题,逐渐完善整个项目功能。
明确项目目的
在编程界,一般都是由产品经理提出项目需求,由程序员来实现。项目需求,大家可以简单的理解为项目效果。
用文字描述一下,在这个游戏中,李逍遥(freeLi)大战拜月教主(BOSS),在这个游戏中,会随机生成李逍遥与拜月教主的属性,相互攻击,直到有一方的血量为0。
,这样的战斗采取三局两胜制,最后显示战斗结果,公布获胜方。
分析流程,拆解项目
版本1.0主要是帮我们理清战斗逻辑,而版本2.0与3.0会涉及到新的知识点,到时候再讲解。
逐步解决,逐渐完善
理清战斗逻辑
回想一下,李逍遥游戏中,都有哪些基础的元素?
根据这些元素,我们要做的主要有三步:
1、规定李逍遥和拜月教主的属性。
2、双方攻击时,失血量根据对方的攻击来计算。
3、如果有一方的血量减少到0以下,GAMEu3000OVER。
为了保持清晰思路,画出流程图如下:
好,从第一步开始,设定【李逍遥】和【BOSS】的属性,及【血量】和【攻击力】。
print('【李逍遥】血量:100攻击力:25') # 自定义李逍遥角色的血量和攻击
print('【拜月教主】血量:100攻击力:20') # 自定义拜月教主角色的血量和攻击
第二步,双方攻击人工计算各自剩余血量。
print('李逍遥发起了攻击,【拜月教主】剩余血量75') #人工计算拜月教主剩余血量100-25 = 75
print('拜月教主向李逍遥发起了攻击,【李逍遥】剩余血量80') #人工计算李逍遥剩余血量100-20 = 80
第三步,继续攻击,人工计算各自剩余血量。
print('李逍遥发起了攻击,【拜月教主】剩余血量50') #人工计算拜月教主剩余血量75-25 = 50
print('拜月教主向李逍遥发起了攻击,【李逍遥】剩余血量60') #人工计算李逍遥剩余血量80-20= 60
第四步,继续攻击,人工计算各自剩余血量。
print('李逍遥发起了攻击,【拜月教主】剩余血量25') #人工计算拜月教主剩余血量50-25= 25
print('拜月教主向李逍遥发起了攻击,【李逍遥】剩余血量40') #人工计算李逍遥剩余血量60-20=40
第五步,继续攻击,人工计算各自剩余血量。
print('李逍遥发起了攻击,【拜月教主】剩余血量0') #人工计算拜月教主剩余血量25-25=0,此时拜月教主血量为0,拜月教主死亡,游戏结束。
print('拜月教主向李逍遥发起了攻击,【李逍遥】剩余血量20') #人工计算李逍遥剩余血量40-20=20
print('拜月教主死了,李逍遥赢了')
我们现在要做的是,将三段代码拼接起来,形成一个完整的代码,然后再加一些分割线和格式修饰符,看起来更美观一些。
print('【李逍遥】血量:100攻击力:25') # 自定义李逍遥角色的血量和攻击
print('【拜月教主】血量:100攻击力:20') # 自定义拜月教主角色的血量和攻击
print('-----------------------')
print('李逍遥发起了攻击,【拜月教主】剩余血量75') #人工计算拜月教主剩余血量100-25 = 75
print('拜月教主向李逍遥发起了攻击,【李逍遥】剩余血量80') #人工计算李逍遥剩余血量100-20 = 80
print('-----------------------')
print('李逍遥发起了攻击,【拜月教主】剩余血量50') #人工计算拜月教主剩余血量75-25 = 50
print('拜月教主向李逍遥发起了攻击,【李逍遥】剩余血量60') #人工计算李逍遥剩余血量80-20= 60
print('-----------------------')
print('李逍遥发起了攻击,【拜月教主】剩余血量25') #人工计算拜月教主剩余血量50-25= 25
print('拜月教主向李逍遥发起了攻击,【李逍遥】剩余血量40') #人工计算李逍遥剩余血量60-20=40
print('-----------------------')
print('李逍遥发起了攻击,【拜月教主】剩余血量0') #人工计算拜月教主剩余血量25-25=0,此时拜月教主血量为0,拜月教主死亡,游戏结束。
print('拜月教主向李逍遥发起了攻击,【李逍遥】剩余血量20') #人工计算李逍遥剩余血量40-20=20
print('-----------------------')
print('拜月教主死了,李逍遥赢了')
随机属性,自动PK
这个阶段,我们主要增加【随机属性】和【自动战斗】两个功能,画出流程图:
版本1.0中,我们自定义双方属性,这不等于暗箱操作吗。所以,为了公平起见,我们要让计算机随机生成双方属性。
要生成随机数,要使用random随机数模块中的randint(a,b)函数,括号内为a,b两个数字为生成随机数的范围,a是小数字,b是大数字。
#多运行几次,看看结果是不是随机生成的~
import random
#调用random模块
num = random.randint(1,100)
# 随机生成1-100范围内(含1和100)的一个整数,并赋值给变量a
print(num)
好,既然随机数搞定,那么下面我们能就把随机数引入到项目中。
1、定义两个变量,用来存储李逍遥的血量和攻击力。 2、血量是100-150之间的随机数,攻击力是20-30之间的随机数。3、打印两个变量。
#多运行几次,看看结果是不是随机生成的~
import random
#调用random模块
freeLi = random.randint(100,150)
battle = random.randint(20,30)
print(freeLi)
print(battle)
或者是如下:
import random
freeLi_life = random.randint(100,150)
#表示李逍遥血量
freeLi_attack = random.randint(20,30)
#表示李逍遥攻击
print(freeLi_life)
print(freeLi_attack)
变量命名应使用英文来表达,如果是多个单词,单词与单词之间需要使用英文下划线_来分隔。
好了,我们已经能够随机生成李逍遥的血量和攻击力了,下面我们要生成拜月教主的血量和攻击力,完成随机生成两者属性的任务。
import time
import random
#也可合并写成一行:import time,random
# 生成随机属性
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?怎么干呀?不着急,先看看1.0版本的代码:
print('【李逍遥】血量:100攻击力:25') # 自定义李逍遥角色的血量和攻击
print('【拜月教主】血量:100攻击力:20') # 自定义拜月教主角色的血量和攻击
print('-----------------------')
print('李逍遥发起了攻击,【拜月教主】剩余血量75') #人工计算拜月教主剩余血量100-25 = 75
print('拜月教主向李逍遥发起了攻击,【李逍遥】剩余血量80') #人工计算李逍遥剩余血量100-20 = 80
print('-----------------------')
print('李逍遥发起了攻击,【拜月教主】剩余血量50') #人工计算拜月教主剩余血量75-25 = 50
print('拜月教主向李逍遥发起了攻击,【李逍遥】剩余血量60') #人工计算李逍遥剩余血量80-20= 60
print('-----------------------')
print('李逍遥发起了攻击,【拜月教主】剩余血量25') #人工计算拜月教主剩余血量50-25= 25
print</