基于Python實(shí)現(xiàn)格斗小游戲的示例代碼
前言
格斗游戲,曾經(jīng)是街機(jī)廳里最火爆的游戲之一,甚至可以把“之一”去掉,那個(gè)年代的格斗游戲
就是街機(jī)游戲的王。
如今的影響力已經(jīng)大不如前,已經(jīng)基本上消亡了。今天讓小編重拾回憶,給大家做一款簡(jiǎn)單版本的格斗游戲吧
歡迎大家來(lái)到煉獄角斗場(chǎng)(Python代碼文字版本的小游戲哈)
一、簡(jiǎn)易版本格斗
1)代碼展示
import time
import random
lose_player = 0
lose_enemy = 0
for i in range(3):
print('-'*10+'第'+str(i+1)+'局'+'-'*10)
hp_player = random.randint(100,181)
attack_player = random.randint(30,51)
hp_enemy = random.randint(100,181)
attack_enemy = random.randint(30,51)
print('【玩家血量】:',hp_player,'【玩家戰(zhàn)力】:',attack_player)
print('【敵人血量】:',hp_enemy,'【敵人戰(zhàn)力】:',attack_enemy)
print('-'*30)
time.sleep(1.5)
while hp_player > 0 and hp_enemy > 0:
hp_player = hp_player - attack_enemy
hp_enemy = hp_enemy - attack_player
print('你發(fā)起了攻擊,【敵人】剩余血量:',hp_enemy)
print('敵人向你發(fā)起了攻擊,【玩家】的血量剩余:',hp_player)
print('-'*30)
time.sleep(1.5)
if hp_enemy <= 0 and hp_player < 0:
print('玩家和敵人同歸于盡了!')
elif hp_enemy < 0 and hp_player >= 0:
print('歐耶!敵人被玩家干掉了!')
lose_enemy += 1
elif hp_player < 0 and hp_enemy > 0:
print('悲催,玩家被敵人干掉了!')
lose_player += 1
print('-'*30)
time.sleep(1.5)
if lose_enemy == 2:
print('【最終結(jié)果:玩家獲勝!】')
break
elif lose_player == 2:
print('【最終結(jié)果:你輸了!】')
break
else:
if lose_enemy > lose_player:
print('【最終結(jié)果:玩家獲勝!】')
elif lose_player > lose_enemy:
print('【最終結(jié)果:玩家輸了!】')
else:
print('【最終結(jié)果:平局】')2)效果展示


這程序針對(duì)我....罵罵咧咧。
二、煉獄角斗場(chǎng)格斗
1)代碼展示
import time
import random
class Role():
def __init__(self,name = '|角色|'):
self.name = name
self.life = random.randint(100,150)
self.attack = random.randint(30,50)
class Sains_knight(Role):
def __init__(self,name = '|圣光騎士|'):
Role.__init__(self,name)
self.life = 5 * self.life
self.attack = 3 * self.attack
def fight_buff(self,enemy):
if enemy == '|暗影刺客|':
self.attack *= 1.5
else:
self.attack = self.attack
class Shadow_Assassin(Role):
def __init__(self,name = '|暗影刺客|'):
Role.__init__(self, name)
self.life = 3 * self.life
self.attack = 5 * self.ttack
def fight_buff(self,enemy):
if enemy == '|精靈弩手|':
self.attack *= 1.5
else:
self.attack = self.attack
class Faerie_Bowman(Role):
def __init__(self,name = '|精靈弩手|'):
Role.__init__(self, name)
self.life = 4 * self.life
self.attack = 4 * self.attack
def fight_buff(self,enemy):
if enemy == '|圣光騎士|':
self.attack *= 1.5
else:
self.attack = self.attack
class GAME():
def __init__(self):
self.players = []
self.enemies = []
self.show_title()
self.show_role()
self.order_role()
self.pk_role()
# 隨機(jī)生成角色的屬性
def born_role(self):
for i in range(3):
self.players.append(random.choice([Sains_knight(),Shadow_Assassin(),Faerie_Bowman()]))
self.enemies.append(random.choice([Sains_knight(),Shadow_Assassin(),Faerie_Bowman()]))
# 生成和展示角色信息
def show_role(self):
self.born_role()
# 展示我方的3個(gè)角色
print('----------------- 角色信息 -----------------')
print('你的隊(duì)伍:')
for i in range(3):
print('|我方|%s 血量:%s 攻擊:%s'
% (self.players[i].name,self.players[i].life,self.players[i].attack))
print('--------------------------------------------')
print('敵人隊(duì)伍:')
# 展示敵方的3個(gè)角色
for i in range(3):
print('|敵方|%s 血量:%s 攻擊:%s'
% (self.enemies[i].name, self.enemies[i].life, self.enemies[i].attack))
print('--------------------------------------------')
input('請(qǐng)按回車(chē)鍵繼續(xù)。') # 為了讓玩家更有控制感,可以插入類(lèi)似的代碼來(lái)切分游戲進(jìn)程。
# 角色排序,選擇出場(chǎng)順序。
def order_role(self):
order_dict = {}
for i in range(3):
order = int(input('你想讓{}第幾個(gè)上場(chǎng)?(輸入數(shù)字1-3)'.format(self.players[i].name)))
order_dict[order] = self.players[i]
self.players = []
for i in range(1,4):
self.players.append(order_dict[i])
print('\n我方角色的出場(chǎng)順序是:%s、%s、%s' % (self.players[0].name, self.players[1].name, self.players[2].name))
print('敵方角色的出場(chǎng)順序是:%s、%s、%s' % (self.enemies[0].name, self.enemies[1].name, self.enemies[2].name))
# 角色PK
def pk_role(self):
round = 1
score = 0
for i in range(3): # 一共要打三局
player_name = self.players[i].name
enemy_name = self.enemies[i].name
#判斷敵人是否對(duì)其有克制效果,有則進(jìn)行攻擊加成
self.players[i].fight_buff(enemy_name)
self.enemies[i].fight_buff(player_name)
player_life = self.players[i].life
player_attack = self.players[i].attack
enemy_life = self.enemies[i].life
enemy_attack = self.enemies[i].attack
# 每一局開(kāi)戰(zhàn)前展示戰(zhàn)斗信息
print('\n----------------- 【第%s局】 -----------------' % round)
print('玩家角色:%s vs 敵方角色:%s ' % (player_name, enemy_name))
print('%s 血量:%s 攻擊:%s' % (player_name, player_life, player_attack))
print('%s 血量:%s 攻擊:%s' % (enemy_name, enemy_life, enemy_attack))
print('--------------------------------------------')
input('請(qǐng)按回車(chē)鍵繼續(xù)。\n')
# 開(kāi)始判斷血量是否都大于零,然后互扣血量。
while player_life > 0 and enemy_life > 0:
enemy_life = enemy_life - player_attack
player_life = player_life - enemy_attack
print('%s發(fā)起了攻擊,%s剩余血量%s' % (player_name, enemy_name, enemy_life))
print('%s發(fā)起了攻擊,%s剩余血量%s' % (enemy_name, player_name, player_life))
print('--------------------------------------------')
time.sleep(1)
else: # 每局的戰(zhàn)果展示,以及分?jǐn)?shù)score和局?jǐn)?shù)的變化。
# 調(diào)用show_result()函數(shù),打印返回元組中的result。
print(self.show_result(player_life,enemy_life)[1])
# 調(diào)用show_result()函數(shù),完成計(jì)分變動(dòng)。
score += int(self.show_result(player_life,enemy_life)[0])
round += 1
input('\n點(diǎn)擊回車(chē),查看比賽的最終結(jié)果\n')
if score > 0:
print('【最終結(jié)果:你贏了!】\n')
elif score < 0:
print('【最終結(jié)果:你輸了!】\n')
else:
print('【最終結(jié)果:平局!】\n')
# 返回單局戰(zhàn)果和計(jì)分法所加分?jǐn)?shù)。
def show_result(self,player_life, enemy_life): # 注意:該函數(shù)要設(shè)定參數(shù),才能判斷單局戰(zhàn)果。
if player_life > 0 and enemy_life <= 0:
result = '\n敵人死翹翹了,你贏了!'
return 1, result # 返回元組(1,'\n敵人死翹翹了,你贏了!'),類(lèi)似角色屬性的傳遞。
elif player_life <= 0 and enemy_life > 0:
result = '\n悲催,敵人把你干掉了!'
return -1, result
else:
result = '\n哎呀,你和敵人同歸于盡了!'
return 0, result
#展示標(biāo)題
def show_title(self):
print('''--------------歡迎來(lái)到煉獄角斗場(chǎng)-----------------
在昔日的黃昏山脈,陸奧帝國(guó)的北境邊界上,有傳說(shuō)中的‘煉獄角斗場(chǎng)'!
鮮血與戰(zhàn)斗是角斗士的歸宿,金錢(qián)與榮耀是角斗士的信仰!
今日,只要【你的隊(duì)伍】能取得勝利,你將獲得一筆夠花500的財(cái)富!
將隨機(jī)生成【你的隊(duì)伍】和【敵人隊(duì)伍】!''')
input('\n狹路相逢勇者勝,話不投機(jī)半句多(按任意鍵繼續(xù)...)')
GAME_START = GAME()2)效果展示



以上就是基于Python實(shí)現(xiàn)格斗小游戲的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于Python格斗游戲的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Pycharm搭建一個(gè)Django項(xiàng)目的方法步驟
本文主要介紹了Pycharm搭建一個(gè)Django項(xiàng)目的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
python創(chuàng)建一個(gè)最簡(jiǎn)單http webserver服務(wù)器的方法
這篇文章主要介紹了python創(chuàng)建一個(gè)最簡(jiǎn)單http webserver服務(wù)器的方法,實(shí)例分析了Python操作http創(chuàng)建服務(wù)器端的相關(guān)技巧,需要的朋友可以參考下2015-05-05
Python機(jī)器學(xué)習(xí)NLP自然語(yǔ)言處理基本操作電影影評(píng)分析
本文是Python機(jī)器學(xué)習(xí)NLP自然語(yǔ)言處理系列文章,帶大家開(kāi)啟一段學(xué)習(xí)自然語(yǔ)言處理 (NLP) 的旅程。本篇文章主要學(xué)習(xí)NLP自然語(yǔ)言處理基本操電影影評(píng)分析2021-09-09
Python+Selenium定位不到元素常見(jiàn)原因及解決辦法(報(bào):NoSuchElementException)
這篇文章主要介紹了Python+Selenium定位不到元素常見(jiàn)原因及解決辦法(報(bào):NoSuchElementException),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
Python爬蟲(chóng)逆向分析某云音樂(lè)加密參數(shù)的實(shí)例分析
這篇文章主要介紹了Python爬蟲(chóng)逆向分析某云音樂(lè)加密參數(shù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12

