Python練習01-對戰小遊戲
Python練習01-對戰小遊戲
近期在學習Python,其中有一道練習題,寫一個對戰小遊戲,隨機人物,隨機屬性(血量、攻擊)、指定我方人物出場順序,三局兩勝,程式碼如下:
import time, random
# 需要的資料和變數放在開頭
player_list = [ '【鳴人】', '【佐助】', '【小櫻】', '【卡卡西】', '【凱】', '【寧次】','【小李】','【大和】']
enemy_list = [ '【帶土】', '【鼬】', '【飛段】', '【角都】', '【長門】', '【鬼鮫】','【蠍】','【迪達拉】']
players = random.sample(player_list, 3)
enemies = random.sample(enemy_list, 3)
player_info = {}
enemy_info = {}
# 隨機生成角色的屬性
def born_role():
life = random.randint(100, 180)
attack = random.randint(30, 50)
return life, attack
# 生成和展示角色資訊
def show_role():
for i in range(3):
player_info[players[i]] = born_role()
enemy_info[enemies[i]] = born_role()
# 展示我方的3個角色
print('----------------- 角色資訊 -----------------')
print('你的人物:')
for i in range(3):
print('%s 血量:%d 攻擊:%d'
% (players[i], player_info[players[i]][0], player_info[players[i]][1]))
print('--------------------------------------------')
print('電腦敵人:')
# 展示敵方的3個角色
for i in range(3):
print('%s 血量:%d 攻擊:%d'
% (enemies[i], enemy_info[enemies[i]][0], enemy_info[enemies[i]][1]))
print('--------------------------------------------')
#input('請按Enter鍵繼續。\n') # 為了讓玩家更有控制感,可以插入類似的程式碼來切分遊戲程式。
# 角色排序,選擇出場順序。
def order_role():
global players
order_dict = {}
for i in range(3):
order = int(input('你想將 %s 放在第幾個上場?(輸入數字1~3)' % players[i]))
order_dict[order] = players[i]
players = []
for i in range(1, 4):
players.append(order_dict[i])
print('\n我方角色的出場順序是:%s、%s、%s' % (players[0], players[1], players[2]))
print('敵方角色的出場順序是:%s、%s、%s' % (enemies[0], enemies[1], enemies[2]))
# 角色PK
def pk_role():
round = 1
score = 0
for i in range(3): # 一共要打三局
player_name = players[i]
enemy_name = enemies[i]
player_life = player_info[players[i]][0]
player_attack = player_info[players[i]][1]
enemy_life = enemy_info[enemies[i]][0]
enemy_attack = enemy_info[enemies[i]][1]
# 每一局開戰前展示戰鬥資訊
print('\n----------------- 【第%d局】 -----------------' % round)
print('玩家角色:%s vs 敵方角色:%s ' % (player_name, enemy_name))
print('%s 血量:%d 攻擊:%d' % (player_name, player_life, player_attack))
print('%s 血量:%d 攻擊:%d' % (enemy_name, enemy_life, enemy_attack))
print('--------------------------------------------')
input('請按Enter鍵繼續。\n')
# 開始判斷血量是否都大於零,然後互扣血量。
while player_life > 0 and enemy_life > 0:
enemy_life = enemy_life - player_attack
player_life = player_life - enemy_attack
print('%s發起了攻擊,%s剩餘血量%d' % (player_name, enemy_name, enemy_life))
print('%s發起了攻擊,%s剩餘血量%d' % (enemy_name, player_name, player_life))
print('--------------------------------------------')
time.sleep(1)
else: # 每局的戰果展示,以及分數score和局數的變化。
# 呼叫show_result()函式,列印返回元組中的result。
print(show_result(player_life, enemy_life)[1])
# 呼叫show_result()函式,完成計分變動。
score += int(show_result(player_life, enemy_life)[0])
round += 1
input('\n點選回車,檢視比賽的最終結果\n')
if score > 0:
print('【最終結果:你贏了!】\n')
elif score < 0:
print('【最終結果:你輸了!】\n')
else:
print('【最終結果:平局!】\n')
# 返回單局戰果和計分法所加分數。
def show_result(player_life, enemy_life): # 注意:該函式要設定引數,才能判斷單局戰果。
if player_life > 0 and enemy_life <= 0:
result = '\n敵人死翹翹了,你贏了!'
return 1, result # 返回元組(1,'\n敵人死翹翹了,你贏了!'),類似角色屬性的傳遞。
elif player_life <= 0 and enemy_life > 0:
result = '\n悲催,敵人把你幹掉了!'
return -1, result
else:
result = '\n哎呀,你和敵人同歸於盡了!'
return 0, result
# (主函式)展開戰鬥流程
def main():
show_role()
order_role()
pk_role()
# 啟動程式(即呼叫主函式)
main()
執行結果如下:
----------------- 角色資訊 -----------------
你的人物:
【寧次】 血量:119 攻擊:31
【大和】 血量:128 攻擊:41
【佐助】 血量:145 攻擊:30
--------------------------------------------
電腦敵人:
【角都】 血量:176 攻擊:41
【鼬】 血量:129 攻擊:45
【飛段】 血量:140 攻擊:39
--------------------------------------------
你想將 【寧次】 放在第幾個上場?(輸入數字1~3)1
你想將 【大和】 放在第幾個上場?(輸入數字1~3)3
你想將 【佐助】 放在第幾個上場?(輸入數字1~3)2
我方角色的出場順序是:【寧次】、【佐助】、【大和】
敵方角色的出場順序是:【角都】、【鼬】、【飛段】
----------------- 【第1局】 -----------------
玩家角色:【寧次】 vs 敵方角色:【角都】
【寧次】 血量:119 攻擊:31
【角都】 血量:176 攻擊:41
--------------------------------------------
請按Enter鍵繼續。
【寧次】發起了攻擊,【角都】剩餘血量145
【角都】發起了攻擊,【寧次】剩餘血量78
--------------------------------------------
【寧次】發起了攻擊,【角都】剩餘血量114
【角都】發起了攻擊,【寧次】剩餘血量37
--------------------------------------------
【寧次】發起了攻擊,【角都】剩餘血量83
【角都】發起了攻擊,【寧次】剩餘血量-4
--------------------------------------------
悲催,敵人把你幹掉了!
----------------- 【第2局】 -----------------
玩家角色:【佐助】 vs 敵方角色:【鼬】
【佐助】 血量:145 攻擊:30
【鼬】 血量:129 攻擊:45
--------------------------------------------
請按Enter鍵繼續。
【佐助】發起了攻擊,【鼬】剩餘血量99
【鼬】發起了攻擊,【佐助】剩餘血量100
--------------------------------------------
【佐助】發起了攻擊,【鼬】剩餘血量69
【鼬】發起了攻擊,【佐助】剩餘血量55
--------------------------------------------
【佐助】發起了攻擊,【鼬】剩餘血量39
【鼬】發起了攻擊,【佐助】剩餘血量10
--------------------------------------------
【佐助】發起了攻擊,【鼬】剩餘血量9
【鼬】發起了攻擊,【佐助】剩餘血量-35
--------------------------------------------
悲催,敵人把你幹掉了!
----------------- 【第3局】 -----------------
玩家角色:【大和】 vs 敵方角色:【飛段】
【大和】 血量:128 攻擊:41
【飛段】 血量:140 攻擊:39
--------------------------------------------
請按Enter鍵繼續。
【大和】發起了攻擊,【飛段】剩餘血量99
【飛段】發起了攻擊,【大和】剩餘血量89
--------------------------------------------
【大和】發起了攻擊,【飛段】剩餘血量58
【飛段】發起了攻擊,【大和】剩餘血量50
--------------------------------------------
【大和】發起了攻擊,【飛段】剩餘血量17
【飛段】發起了攻擊,【大和】剩餘血量11
--------------------------------------------
【大和】發起了攻擊,【飛段】剩餘血量-24
【飛段】發起了攻擊,【大和】剩餘血量-28
--------------------------------------------
哎呀,你和敵人同歸於盡了!
點選回車,檢視比賽的最終結果
【最終結果:你輸了!】
Process finished with exit code 0
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2675728/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java練習-任務1.2-對戰遊戲Java遊戲
- 新手練習:Python練習題目Python
- (003)我們一起學Python;鞏固練習,寫個小遊戲Python遊戲
- python練習Python
- 【Python】python練習Python
- 適合小白練習的幾個Python小遊戲專案-含開發思路Python遊戲
- python 練習0000Python
- Python 練習題Python
- Python寫個“點球大戰”小遊戲Python遊戲
- Etcd 實戰練習(一)
- Etcd 實戰練習(二)
- Appium 實戰練習一APP
- python練習小結Python
- Python 作業練習Python
- python練習題解析Python
- Java實現簡易聯網坦克對戰小遊戲Java遊戲
- [java]練習:列印對稱菱形Java
- Python學習-while迴圈練習PythonWhile
- 一個針對 Python 語句執行順序的練習Python
- Python基礎練習題Python
- 五、python的練習題Python
- Python指令碼練習一Python指令碼
- Python 程式設計練習Python程式設計
- python相關練習題Python
- Python函式練習題Python函式
- Django 實戰練習-簡單部落格Django
- 學習Python中的一些小遊戲Python遊戲
- Python練手題,敢來挑戰嗎?Python
- 【Python學習實踐教程】10個Python經典專案實戰,練手必備Python
- (七)專案實戰01-框架說明框架
- python練習冊-第0000題Python
- python指令碼練習筆記Python指令碼筆記
- python 檔案讀寫練習Python
- Python 小練習 剔除奇數Python
- python 實現課堂練習Python
- python matplot繪圖工具練習Python繪圖
- Day4 備戰CCF-CSP練習
- Day7 備戰CCF-CSP練習