用Python写一个武侠游戏

2025-12-13 0 186

前言

在本教程中,我们将使用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()

————————————————
版权声明:本文为CSDN博主「ZTLJQ」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/SUEJESDA/article/details/132510232

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 编程相关 用Python写一个武侠游戏 https://www.zuozi.net/36396.html

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务