当前位置: 华文问答 > 游戏

python王者荣耀

2020-10-06游戏

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('心怀不惧,才能翱翔于天际')

挺有趣的,大家可以在自己的电脑上玩玩呀

公众号:彼岸星空