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('請按回車鍵繼續。\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('請按回車鍵繼續。\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()