基于Python實(shí)現(xiàn)人機(jī)PK小游戲
1. 明確項(xiàng)目目標(biāo)
今天且讓我扮演一下產(chǎn)品經(jīng)理的角色。我們此次要實(shí)現(xiàn)的需求是:人機(jī)PK小游戲。具體效果請參照下面的示意動圖。
簡單來說,這個游戲中,會隨機(jī)生成玩家和敵人的屬性,同時互相攻擊,直至一方血量小于零。
另外,這樣的戰(zhàn)斗會持續(xù)三局,采取三局兩勝制,最后輸出戰(zhàn)斗結(jié)果,公布獲勝方。
2. 分析過程,拆解項(xiàng)目
一個人機(jī)PK游戲最基礎(chǔ)的元素是什么,我們可以拿最經(jīng)典的拳皇游戲來腦補(bǔ)一下。
3. 逐步執(zhí)行 代碼實(shí)現(xiàn)
條件判斷:
if 判斷條件
4.版本1
import time,random #存放玩家贏的局?jǐn)?shù),敵人贏的局?jǐn)?shù) player_victory = 0 enemy_victory = 0 for i in range(1,4): time.sleep(2) # 讓局與局之間有較明顯的有時間間隔 print(' \n——————現(xiàn)在是第'+str(i)+'局——————') # 作為局的標(biāo)記 player_life = random.randint(100,150) player_attack = random.randint(30,50) enemy_life = random.randint(100,150) enemy_attack = random.randint(30,50) # 展示雙方角色的屬性 print('【玩家】\n'+'血量:'+str(player_life)+'\n攻擊:'+str(player_attack)) print('------------------------') time.sleep(1) print('【敵人】\n'+'血量:'+str(enemy_life)+'\n攻擊:'+str(enemy_attack)) print('------------------------') time.sleep(1) # 雙方PK while player_life > 0 and enemy_life > 0: #【敵人】剩余血量=敵人當(dāng)前血量-玩家攻擊,【玩家】剩余血量=玩家當(dāng)前血量-敵人攻擊 player_life = player_life - enemy_attack enemy_life = enemy_life - player_attack print('你發(fā)起了攻擊,【敵人】剩余血量'+str(enemy_life)) print('敵人向你發(fā)起了攻擊,【玩家】剩余血量'+str(player_life)) print('-----------------------') time.sleep(1.5) #打印最終戰(zhàn)果 if player_life > 0 and enemy_life <= 0: player_victory += 1 print('敵人死翹翹了,你贏了!') elif player_life <= 0 and enemy_life > 0: enemy_victory += 1 print('悲催,敵人把你干掉了!') else: print('哎呀,你和敵人同歸于盡了!') if player_victory > enemy_victory : time.sleep(1) print('【最終結(jié)果:你贏了!】') elif enemy_victory > player_victory: print('【最終結(jié)果:你輸了!】') else: print('【最終結(jié)果:平局!】')
5.版本2【格式化字符串 %】
我們可以把%
想象成:圖書館里用來占位的一本書。先占一個位置,之后再填上實(shí)際的變量。舉個例子:下面這兩種寫法是相同的,請你著重研究下第二行的語法。
print('血量:'+str(player_life)+' 攻擊:'+str(player_attack)) print('血量:%s 攻擊:%s' % (player_life,player_attack))
格式符%
后面有一個字母s
,這是一個類型碼,用來控制數(shù)據(jù)顯示的類型。
%s
就表示先占一個字符串類型的位置。
占完位置之后,我們要以%
的形式在后面補(bǔ)上要填充的內(nèi)容,如此一來我們就免去了轉(zhuǎn)換類型的煩惱。如果是多個數(shù)據(jù),就要把它們放進(jìn)括號,按順序填充,用逗號隔開。
簡化后的代碼:
import time import random player_victory = 0 enemy_victory = 0 for i in range(1,4): time.sleep(1.5) print(' \n——————現(xiàn)在是第 %s 局——————' % i) player_life = random.randint(100,150) player_attack = random.randint(30,50) enemy_life = random.randint(100,150) enemy_attack = random.randint(30,50) print('【玩家】\n血量:%s\n攻擊:%s' % (player_life,player_attack)) print('------------------------') time.sleep(1) print('【敵人】\n血量:%s\n攻擊:%s' % (enemy_life,enemy_attack)) print('-----------------------') time.sleep(1) while player_life > 0 and enemy_life > 0: player_life = player_life - enemy_attack enemy_life = enemy_life - player_attack print('你發(fā)起了攻擊,【敵人】剩余血量%s' % enemy_life) print('敵人向你發(fā)起了攻擊,【玩家】的血量剩余%s' % player_life) print('-----------------------') time.sleep(1.2) if player_life > 0 and enemy_life <= 0: player_victory += 1 print('敵人死翹翹了,你贏了!') elif player_life <= 0 and enemy_life > 0: enemy_victory += 1 print('悲催,敵人把你干掉了!') else: print('哎呀,你和敵人同歸于盡了!') if player_victory > enemy_victory : time.sleep(1) print('\n【最終結(jié)果:你贏了!】') elif enemy_victory > player_victory: print('\n【最終結(jié)果:你輸了!】') else: print('\n【最終結(jié)果:平局!】')
以上就是基于Python實(shí)現(xiàn)人機(jī)PK小游戲的詳細(xì)內(nèi)容,更多關(guān)于Python人機(jī)PK游戲的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
基于Python實(shí)現(xiàn)Word轉(zhuǎn)HTML
將Word轉(zhuǎn)換為HTML能將文檔內(nèi)容發(fā)布在網(wǎng)頁上,這樣,用戶就可以通過瀏覽器直接查看或閱讀文檔而無需安裝特定的軟件,下面我們就來學(xué)習(xí)一下Python是如何實(shí)現(xiàn)Word轉(zhuǎn)HTML的吧2023-12-12python獲取當(dāng)前運(yùn)行函數(shù)名稱的方法實(shí)例代碼
這篇文章主要介紹了python獲取當(dāng)前運(yùn)行函數(shù)名稱的方法實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-04-04