python王者荣耀
python學(xué)習(xí)過(guò)程不會(huì)一卻而就,需要不斷的練習(xí),做項(xiàng)目對(duì)python的領(lǐng)悟才會(huì)深刻。知識(shí)不是記出來(lái)的,而是用出來(lái)的,用的多也就記住了,把python知識(shí)積極的運(yùn)用到生活,工作學(xué)習(xí)中,是一條學(xué)習(xí)python高效快捷的道路。今天我們來(lái)做一個(gè)人機(jī)對(duì)戰(zhàn)版的王者榮耀。當(dāng)然,做這個(gè)項(xiàng)目不是為了教大家玩游戲,而是體會(huì)理解python知識(shí)點(diǎn)的使用方法方式,做到對(duì)知識(shí)的知行合一。
記得小時(shí)候做數(shù)學(xué)題的時(shí)候,首先要明確解題的目標(biāo),也就是我要得出一個(gè)什么樣的答案。有了這個(gè)目標(biāo)之后我們才會(huì)知道出發(fā)點(diǎn)在哪里,知道出發(fā)點(diǎn)之后需要明確到終點(diǎn)的路線(xiàn),也就是我要到達(dá)終點(diǎn)該做什么,先做什么再做什么。對(duì)于做項(xiàng)目也是一樣的,我們首先需要明確項(xiàng)目目標(biāo),然后把大問(wèn)題化解為小問(wèn)題,一個(gè)一個(gè)的解決,最后問(wèn)題將被我們一個(gè)一個(gè)的攻克,這時(shí)候項(xiàng)目自然就完成了。
王者榮耀
明確項(xiàng)目目標(biāo):
1.在互聯(lián)網(wǎng)公司,一般情況下是由產(chǎn)品經(jīng)理提出明確的項(xiàng)目需求,由程序員來(lái)實(shí)現(xiàn),他們之間是“相愛(ài)相殺”的關(guān)系。
2.今天且讓我扮演一下產(chǎn)品經(jīng)理的角色。我們此次要實(shí)現(xiàn)的需求是:人機(jī)PK王者榮耀
3.簡(jiǎn)單來(lái)說(shuō),這個(gè)游戲中,會(huì)隨機(jī)生成玩家和敵人的屬性,同時(shí)互相攻擊,直至一方血量小于零
4.另外,這樣的戰(zhàn)斗會(huì)持續(xù)三局,采取三局兩勝制,最后輸出戰(zhàn)斗結(jié)果,公布獲勝方
目標(biāo)導(dǎo)向
玩游戲我們首先需要先選出游戲角色,我們的角色可以自己選擇,但是敵方的得自己選擇,我們又不是敵方,鬼知道它會(huì)選哪個(gè),這個(gè)時(shí)候我們就需要為敵方設(shè)置可以隨機(jī)選擇游戲角色的功能。哪個(gè)模塊可以隨機(jī)選擇呢,import random模塊就有這個(gè)功能,它的random.choice()函數(shù)可以隨機(jī)選擇一個(gè)元素。
選擇完角色,我們需要為角色配置血量和攻擊值,如果我們自己定義游戲角色的血量和攻擊值,那這個(gè)游戲就沒(méi)有意義了,所以我們需要隨機(jī)為游戲角色配置血量和攻擊值,這時(shí)候有是import random模塊派上用場(chǎng)。random.randint()函數(shù)可以隨機(jī)生成一個(gè)整數(shù)。
游戲角色屬性設(shè)置完成,就開(kāi)始游戲戰(zhàn)斗了,那我們?nèi)绾闻袛噍斱A(yíng)了,規(guī)定血量小于0則輸,這個(gè)可以用while語(yǔ)句來(lái)判斷,畢竟while語(yǔ)句為False時(shí)才會(huì)結(jié)束 ,我們就可以這樣設(shè)置了:while 敵方>0 and 我方>0:當(dāng)出現(xiàn)while 敵方<0 and 我方>0:或while 敵方>0 and 我方<0:判斷出了勝負(fù)游戲結(jié)束
選出游戲角色—配置血量和攻擊值—設(shè)置循環(huán)模式
1.引入的模塊
// An highlighted blockimport time #為了增加視覺(jué)感知效果引入時(shí)間模塊,控制游戲進(jìn)程。 import random #引入隨機(jī)生成模塊,配置游戲角色屬性var foo = 'bar';2.游戲角色配置
// An highlighted blockname=['小喬','大橋','李白','露娜','貂蟬','關(guān)羽','鎧','老夫子','韓信','上官婉兒','花木蘭','魯班七號(hào)','孫尚香','張良','諸葛亮','王昭君','鬼谷子','干將莫邪','龐統(tǒng)']#這些設(shè)置你可以自定義的呀var foo = 'bar';3.游戲?qū)傩缘纳?/p> // An highlighted blockfor i in range(1,4):print('游戲角色:{}\n'.format(name))name_we = input('我方請(qǐng)輸入游戲角色:') #不想自己選擇也可以設(shè)置隨機(jī)生成的呀name_we_bl = random.randint(300,500) #生成我方血量name_we_g = random.randint(50,100) #生成我方攻擊值name_df = random.choice(name) #敵方隨機(jī)選擇一名游戲角色name_df_bl = random.randint(300,500) #生成敵方血量name_df_g = random.randint(50,100) #生成敵方攻擊值print('------前方高能,第{}局游戲開(kāi)始------\n'.format(i)) #\n表示換行 .format(i)表示給{}轉(zhuǎn)入?yún)?shù)time.sleep(3) #延遲3秒print('我方人物:【{0}】|血量:{1}|攻擊值:{2}\n'.format(name_we,name_we_bl,name_we_g)) #.format(i)表示給{}轉(zhuǎn)入?yún)?shù),0代表第一個(gè)time.sleep(3) #延遲3秒print('敵方人物:【{0}】|血量:{1}|攻擊值:{2}\n'.format(name_df,name_df_bl,name_df_g))var foo = 'bar';
4.戰(zhàn)斗過(guò)程
// An highlighted blockwhile name_we_bl>0 and name_df_bl>0:name_we_bl = name_we_bl - name_df_g #戰(zhàn)斗攻擊過(guò)程,即我方角色的血量減去敵方攻擊的攻擊值name_df_bl = name_df_bl - name_we_g #戰(zhàn)斗攻擊過(guò)程,即敵方角色的血量減去我方攻擊的攻擊值print('我方發(fā)起了攻擊:剩余血量|{}\n'.format(name_we_bl))time.sleep(2) #延遲2秒print('敵方發(fā)起了攻擊:剩余血量{}\n'.format(name_df_bl))if name_we_bl > name_df_bl and name_df_bl < 0: #判斷我方贏(yíng)number_we = 0 number_we += 1 #計(jì)算輸贏(yíng)結(jié)局,贏(yíng)則加1 number_we += 1表示number_we=number_we+1print('{0},聽(tīng)從我的呼喚勝利\n'.format(name_we))elif name_df_bl > name_we_bl and name_we_bl < 0: #判斷敵方贏(yíng)number_bl = 0number_bl += 1print('{0},美妙的長(zhǎng)眠,值得高歌一曲,啦啦啦啦啦\n'.format(name_df))else: #雙方打平print('打平,要努力變強(qiáng)\n')var foo = 'bar';5.三局兩勝的結(jié)果
// An highlighted blockif number_we > number_bl: #結(jié)果為我方贏(yíng) print('最犀利的劍,只為最強(qiáng)大的對(duì)手所揮動(dòng)')elif number_we < number_bl: #結(jié)果為敵方贏(yíng)print('弱者,才在乎恥辱')else: #雙方打平print('心懷不懼,才能翱翔于天際')var foo = 'bar';完整代碼
// An highlighted blockimport time #為了增加視覺(jué)感知效果引入時(shí)間模塊,控制游戲進(jìn)程。 import random #引入隨機(jī)生成模塊,配置游戲角色屬性name=['小喬','大橋','李白','露娜','貂蟬','關(guān)羽','鎧','老夫子','韓信','上官婉兒','花木蘭','魯班七號(hào)','孫尚香','張良','諸葛亮','王昭君','鬼谷子','干將莫邪','龐統(tǒng)']for i in range(1,4):print('游戲角色:{}\n'.format(name))name_we = input('我方請(qǐng)輸入游戲角色:') #不想自己選擇也可以設(shè)置隨機(jī)生成的呀name_we_bl = random.randint(300,500) #生成我方血量name_we_g = random.randint(50,100) #生成我方攻擊值name_df = random.choice(name) #敵方隨機(jī)選擇一名游戲角色name_df_bl = random.randint(300,500) #生成敵方血量name_df_g = random.randint(50,100) #生成敵方攻擊值print('------前方高能,第{}局游戲開(kāi)始------\n'.format(i)) #\n表示換行 .format(i)表示給{}轉(zhuǎn)入?yún)?shù)time.sleep(3) #延遲3秒print('我方人物:【{0}】|血量:{1}|攻擊值:{2}\n'.format(name_we,name_we_bl,name_we_g)) #.format(i)表示給{}轉(zhuǎn)入?yún)?shù),0代表第一個(gè)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 #戰(zhàn)斗攻擊過(guò)程,即我方角色的血量減去敵方攻擊的攻擊值name_df_bl = name_df_bl - name_we_g #戰(zhàn)斗攻擊過(guò)程,即敵方角色的血量減去我方攻擊的攻擊值print('我方發(fā)起了攻擊:剩余血量|{}\n'.format(name_we_bl))time.sleep(2) #延遲2秒print('敵方發(fā)起了攻擊:剩余血量{}\n'.format(name_df_bl))if name_we_bl > name_df_bl and name_df_bl < 0: #判斷我方贏(yíng)number_we = 0number_we += 1print('{0},聽(tīng)從我的呼喚勝利\n'.format(name_we))elif name_df_bl > name_we_bl and name_we_bl < 0: #判斷敵方贏(yíng)number_bl = 0number_bl += 1print('{0},美妙的長(zhǎng)眠,值得高歌一曲,啦啦啦啦啦\n'.format(name_df))else: #雙方打平print('打平,要努力變強(qiáng)\n')if number_we > number_bl: #結(jié)果為我方贏(yíng) print('最犀利的劍,只為最強(qiáng)大的對(duì)手所揮動(dòng)')elif number_we < number_bl: #結(jié)果為敵方贏(yíng)print('弱者,才在乎恥辱')else: #雙方打平print('心懷不懼,才能翱翔于天際')var foo = 'bar';挺有趣的,大家可以在自己的電腦上玩玩呀
總結(jié)
以上是生活随笔為你收集整理的python王者荣耀的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 职场:迈过职业生涯中的5个坎
- 下一篇: python语言程序设计教程赵璐电子版_