當前位置: 華文問答 > 遊戲

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('心懷不懼,才能翺翔於天際')

挺有趣的,大家可以在自己的電腦上玩玩呀

公眾號:彼岸星空