前言
在本教程中,我们将使用Python写一个武侠类的游戏,大的框架全部搭好了,很多元素都可以自己添加,让游戏更丰富
个人主页→数据挖掘博主ZTLJQ的主页
个人推荐python学习系列:
☄️爬虫JS逆向系列专栏 - 爬虫逆向教学
☄️python系列专栏 - 从零开始学python
完整的所有代码和游戏截图在最底部展示,以下是代码讲解
当我们开始编写一个武侠战斗游戏时,需要考虑游戏中的角色、战斗系统和基本功能。
以下代码中定义了一个基础角色类
Character
,该类用于创建角色对象,包括玩家和敌人。角色有名字、生命值和攻击力等属性。我们为角色定义了初始化方法__init__
,以及受伤和攻击的方法take_damage
和attack_target
。
class Character:
def __init__(self, name, health, attack):
self.name = name
self.health = health
self.attack = attack
def take_damage(self, damage):
self.health -= damage
print(f"{self.name}受到了{damage}点伤害,剩余生命值:{self.health}")
def attack_target(self, target):
damage = random.randint(0, self.attack)
print(f"{self.name}发起了攻击,对{target.name}造成了{damage}点伤害")
target.take_damage(damage)
在这个基础上,我们派生了玩家类
Player
和敌人类Enemy
。玩家类额外包含了药水的数量,并且有一个方法use_potion
用于使用药水来恢复生命值。
class Player(Character):
def __init__(self, name):
super().__init__(name, health=100, attack=20)
self.potions = 3
def use_potion(self):
if self.potions > 0:
self.health += 30
self.potions -= 1
print(f"{self.name}使用了一瓶药水,恢复了30点生命值,剩余药水数:{self.potions}")
else:
print(f"{self.name}没有药水了!")
class Enemy(Character):
def __init__(self, name):
super().__init__(name, health=random.randint(50, 80), attack=random.randint(10, 15))
接着,我们定义了一个战斗函数
battle
,该函数模拟了玩家和敌人之间的战斗。玩家和敌人会轮流进行攻击,直到一方的生命值降为零。玩家可以选择攻击、使用药水或逃跑。战斗结果会根据生命值来判断胜负。
def battle(player, enemy):
print(f"{player.name}遇到了{enemy.name}!")
while player.health > 0 and enemy.health > 0:
action = input("选择行动:[1] 攻击 [2] 使用药水 [3] 逃跑\n")
if action == '1':
player.attack_target(enemy)
if enemy.health <= 0:
print(f"{enemy.name}被击败了!")
break
enemy.attack_target(player)
elif action == '2':
player.use_potion()
enemy.attack_target(player)
elif action == '3':
print(f"{player.name}逃跑了,游戏结束。")
break
else:
print("无效的选择,请重新输入。")
if player.health <= 0:
print(f"{player.name}被{enemy.name}击败了,游戏结束。")
elif enemy.health <= 0:
print(f"{player.name}战胜了{enemy.name},获得了胜利!")
最后,在
main
函数中,我们首先获取玩家的名字,然后随机选择一个敌人。接着,调用battle
函数开始战斗。
def main():
player_name = input("请输入你的角色名:")
player = Player(player_name)
enemies = [Enemy("恶霸"), Enemy("刺客"), Enemy("恶徒")]
enemy = random.choice(enemies)
battle(player, enemy)
if __name__ == "__main__":
main()
以下是全代码和游戏截图
import random
class Character:
def __init__(self, name, health, attack):
self.name = name
self.health = health
self.attack = attack
def take_damage(self, damage):
self.health -= damage
print(f"{self.name}受到了{damage}点伤害,剩余生命值:{self.health}")
def attack_target(self, target):
damage = random.randint(0, self.attack)
print(f"{self.name}发起了攻击,对{target.name}造成了{damage}点伤害")
target.take_damage(damage)
class Player(Character):
def __init__(self, name):
super().__init__(name, health=100, attack=20)
self.potions = 3
def use_potion(self):
if self.potions > 0:
self.health += 30
self.potions -= 1
print(f"{self.name}使用了一瓶药水,恢复了30点生命值,剩余药水数:{self.potions}")
else:
print(f"{self.name}没有药水了!")
class Enemy(Character):
def __init__(self, name):
super().__init__(name, health=random.randint(50, 80), attack=random.randint(10, 15))
def battle(player, enemy):
print(f"{player.name}遇到了{enemy.name}!")
while player.health > 0 and enemy.health > 0:
action = input("选择行动:[1] 攻击 [2] 使用药水 [3] 逃跑\n")
if action == '1':
player.attack_target(enemy)
if enemy.health <= 0:
print(f"{enemy.name}被击败了!")
break
enemy.attack_target(player)
elif action == '2':
player.use_potion()
enemy.attack_target(player)
elif action == '3':
print(f"{player.name}逃跑了,游戏结束。")
break
else:
print("无效的选择,请重新输入。")
if player.health <= 0:
print(f"{player.name}被{enemy.name}击败了,游戏结束。")
elif enemy.health <= 0:
print(f"{player.name}战胜了{enemy.name},获得了胜利!")
def main():
player_name = input("请输入你的角色名:")
player = Player(player_name)
enemies = [Enemy("恶霸"), Enemy("刺客"), Enemy("恶徒")]
enemy = random.choice(enemies)
battle(player, enemy)
if __name__ == "__main__":
main()