python学习过程不会一却而就,需要不断的练习,做项目对python的领悟才会深刻。知识不是记出来的,而是用出来的,用的多也就记住了,把python知识积极的运用到生活,工作学习中,是一条学习python高效快捷的道路。今天我们来做一个人机对战版的王者荣耀。当然,做这个项目不是为了教大家玩游戏,而是体会理解python知识点的使用方法方式,做到对知识的知行合一。
记得小时候做数学题的时候,首先要明确解题的目标,也就是我要得出一个什么样的答案。有了这个目标之后我们才会知道出发点在哪里,知道出发点之后需要明确到终点的路线,也就是我要到达终点该做什么,先做什么再做什么。对于做项目也是一样的,我们首先需要明确项目目标,然后把大问题化解为小问题,一个一个的解决,最后问题将被我们一个一个的攻克,这时候项目自然就完成了。
王者荣耀
明确项目目标:
1.在互联网公司,一般情况下是由产品经理提出明确的项目需求,由程序员来实现,他们之间是“相爱相杀”的关系。
2.今天且让我扮演一下产品经理的角色。我们此次要实现的需求是:人机PK王者荣耀
3.简单来说,这个游戏中,会随机生成玩家和敌人的属性,同时互相攻击,直至一方血量小于零
4.另外,这样的战斗会持续三局,采取三局两胜制,最后输出战斗结果,公布获胜方
目标导向
玩游戏我们首先需要先选出游戏角色,我们的角色可以自己选择,但是敌方的得自己选择,我们又不是敌方,鬼知道它会选哪个,这个时候我们就需要为敌方设置可以随机选择游戏角色的功能。哪个模块可以随机选择呢,import random模块就有这个功能,它的random.choice()函数可以随机选择一个元素。
选择完角色,我们需要为角色配置血量和攻击值,如果我们自己定义游戏角色的血量和攻击值,那这个游戏就没有意义了,所以我们需要随机为游戏角色配置血量和攻击值,这时候有是import random模块派上用场。random.randint()函数可以随机生成一个整数。
游戏角色属性设置完成,就开始游戏战斗了,那我们如何判断输赢了,规定血量小于0则输,这个可以用while语句来判断,毕竟while语句为False时才会结束 ,我们就可以这样设置了:while 敌方>0 and 我方>0:当出现while 敌方<0 and 我方>0:或while 敌方>0 and 我方<0:判断出了胜负游戏结束
选出游戏角色—配置血量和攻击值—设置循环模式
1.引入的模块
import time #为了增加视觉感知效果引入时间模块,控制游戏进程。
import random #引入随机生成模块,配置游戏角色属性
2.游戏角色配置
name=['小乔','大桥','李白','露娜','貂蝉','关羽','铠','老夫子','韩信','上官婉儿','花木兰',
'鲁班七号','孙尚香','张良','诸葛亮','王昭君','鬼谷子','干将莫邪','庞统']
#这些设置你可以自定义的呀
3.游戏属性的生成
for i in range(1,4):
print('游戏角色:{}\n'.format(name))
name_we = input('我方请输入游戏角色:') #不想自己选择也可以设置随机生成的呀
name_we_bl = random.randint(300,500) #生成我方血量
name_we_g = random.randint(50,100) #生成我方攻击值
name_df = random.choice(name) #敌方随机选择一名游戏角色
name_df_bl = random.randint(300,500) #生成敌方血量
name_df_g = random.randint(50,100) #生成敌方攻击值
print('------前方高能,第{}局游戏开始------\n'.format(i)) #\n表示换行 .format(i)表示给{}转入参数
time.sleep(3) #延迟3秒
print('我方人物:【{0}】|血量:{1}|攻击值:{2}\n'.format(name_we,name_we_bl,name_we_g)) #.format(i)表示给{}转入参数,0代表第一个
time.sleep(3) #延迟3秒
print('敌方人物:【{0}】|血量:{1}|攻击值:{2}\n'.format(name_df,name_df_bl,name_df_g))
4.战斗过程
while name_we_bl>0 and name_df_bl>0:
name_we_bl = name_we_bl - name_df_g #战斗攻击过程,即我方角色的血量减去敌方攻击的攻击值
name_df_bl = name_df_bl - name_we_g #战斗攻击过程,即敌方角色的血量减去我方攻击的攻击值
print('我方发起了攻击:剩余血量|{}\n'.format(name_we_bl))
time.sleep(2) #延迟2秒
print('敌方发起了攻击:剩余血量{}\n'.format(name_df_bl))
if name_we_bl > name_df_bl and name_df_bl < 0: #判断我方赢
number_we = 0
number_we += 1 #计算输赢结局,赢则加1 number_we += 1表示number_we=number_we+1
print('{0},听从我的呼唤胜利\n'.format(name_we))
elif name_df_bl > name_we_bl and name_we_bl < 0: #判断敌方赢
number_bl = 0
number_bl += 1
print('{0},美妙的长眠,值得高歌一曲,啦啦啦啦啦\n'.format(name_df))
else: #双方打平
print('打平,要努力变强\n')
5.三局两胜的结果
if number_we > number_bl: #结果为我方赢
print('最犀利的剑,只为最强大的对手所挥动')
elif number_we < number_bl: #结果为敌方赢
print('弱者,才在乎耻辱')
else: #双方打平
print('心怀不惧,才能翱翔于天际')
完整代码
import time #为了增加视觉感知效果引入时间模块,控制游戏进程。
import random #引入随机生成模块,配置游戏角色属性
name=['小乔','大桥','李白','露娜','貂蝉','关羽','铠','老夫子','韩信','上官婉儿','花木兰',
'鲁班七号','孙尚香','张良','诸葛亮','王昭君','鬼谷子','干将莫邪','庞统']
for i in range(1,4):
print('游戏角色:{}\n'.format(name))
name_we = input('我方请输入游戏角色:') #不想自己选择也可以设置随机生成的呀
name_we_bl = random.randint(300,500) #生成我方血量
name_we_g = random.randint(50,100) #生成我方攻击值
name_df = random.choice(name) #敌方随机选择一名游戏角色
name_df_bl = random.randint(300,500) #生成敌方血量
name_df_g = random.randint(50,100) #生成敌方攻击值
print('------前方高能,第{}局游戏开始------\n'.format(i)) #\n表示换行 .format(i)表示给{}转入参数
time.sleep(3) #延迟3秒
print('我方人物:【{0}】|血量:{1}|攻击值:{2}\n'.format(name_we,name_we_bl,name_we_g)) #.format(i)表示给{}转入参数,0代表第一个
time.sleep(3) #延迟3秒
print('敌方人物:【{0}】|血量:{1}|攻击值:{2}\n'.format(name_df,name_df_bl,name_df_g))
while name_we_bl>0 and name_df_bl>0:
name_we_bl = name_we_bl - name_df_g #战斗攻击过程,即我方角色的血量减去敌方攻击的攻击值
name_df_bl = name_df_bl - name_we_g #战斗攻击过程,即敌方角色的血量减去我方攻击的攻击值
print('我方发起了攻击:剩余血量|{}\n'.format(name_we_bl))
time.sleep(2) #延迟2秒
print('敌方发起了攻击:剩余血量{}\n'.format(name_df_bl))
if name_we_bl > name_df_bl and name_df_bl < 0: #判断我方赢
number_we = 0
number_we += 1
print('{0},听从我的呼唤胜利\n'.format(name_we))
elif name_df_bl > name_we_bl and name_we_bl < 0: #判断敌方赢
number_bl = 0
number_bl += 1
print('{0},美妙的长眠,值得高歌一曲,啦啦啦啦啦\n'.format(name_df))
else: #双方打平
print('打平,要努力变强\n')
if number_we > number_bl: #结果为我方赢
print('最犀利的剑,只为最强大的对手所挥动')
elif number_we < number_bl: #结果为敌方赢
print('弱者,才在乎耻辱')
else: #双方打平
print('心怀不惧,才能翱翔于天际')
挺有趣的,大家可以在自己的电脑上玩玩呀
公众号:彼岸星空