当前位置:首页 > 资讯 > 正文

python人狗大战csdn在线代码

发布时间:2026-09-20 16:15:11 编辑: 来源:

导读 以下是可直接运行的Python“人狗大战”完整代码,基于面向对象设计,模拟人类与狗的战斗逻辑,核心机制包含属性对战、暴击概率与回合制胜负

以下是可直接运行的Python“人狗大战”完整代码,基于面向对象设计,模拟人类与狗的战斗逻辑,核心机制包含属性对战、暴击概率与回合制胜负判定:

```python

import random

class Character:

def __init__(self, name, health, attack, defense):

self.name = name

self.health = health

self.attack = attack

self.defense = defense

self.max_health = health

def is_alive(self):

return self.health > 0

def take_damage(self, damage):

actual_damage = max(0, damage - self.defense)

self.health -= actual_damage

print(f"{self.name} 受到 {actual_damage} 点伤害,剩余生命 {max(0, self.health)}")

return actual_damage

def attack_target(self, target):

crit = 1.5 if random.random() < 0.2 else 1.0

base_damage = random.randint(int(self.attack 0.8), int(self.attack 1.2))

final_damage = int(base_damage crit)

print(f"{self.name} 对 {target.name} 发起攻击" + ("(暴击!)" if crit > 1 else ""))

target.take_damage(final_damage)

return final_damage

class Human(Character):

def __init__(self, name="勇者"):

super().__init__(name, health=120, attack=25, defense=8)

self.heal_potions = 3

def heal(self):

if self.heal_potions > 0 and self.health < self.max_health:

heal_amount = random.randint(20, 35)

self.health = min(self.max_health, self.health + heal_amount)

self.heal_potions -= 1

print(f"{self.name} 使用治疗药剂,恢复 {heal_amount} 点生命,剩余生命 {self.health}")

return True

else:

print(f"{self.name} 无法治疗(药剂剩余 {self.heal_potions} 或生命已满)")

return False

class Dog(Character):

def __init__(self, name="恶犬"):

super().__init__(name, health=90, attack=30, defense=5)

self.rage_mode = False

def rage_attack(self, target):

if not self.rage_mode and random.random() < 0.3:

self.rage_mode = True

print(f"{self.name} 进入狂暴状态!")

self.attack = 1.4

damage = self.attack_target(target)

return damage

def battle():

player = Human(input("请输入你的名字(默认勇者):") or "勇者")

enemy = Dog("地狱恶犬")

round_num = 1

print(f"\n⚔️{player.name} VS {enemy.name}⚔️\n")

print(f"{player.name}: 生命 {player.health}, 攻击 {player.attack}, 防御 {player.defense}")

print(f"{enemy.name}: 生命 {enemy.health}, 攻击 {enemy.attack}, 防御 {enemy.defense}\n")

while player.is_alive() and enemy.is_alive():

print(f"\n 第 {round_num} 回合 ")

print(f"【{player.name}】生命 {player.health}/{player.max_health}【{enemy.name}】生命 {enemy.health}/{enemy.max_health}")

print("1. 攻击2. 治疗3. 防御")

action = input("请选择行动:").strip()

if action == "1":

player.attack_target(enemy)

elif action == "2":

player.heal()

elif action == "3":

print(f"{player.name} 进入防御姿态,本回合防御翻倍")

player.defense = 2

enemy.rage_attack(player)

player.defense //= 2

round_num += 1

continue

else:

print("无效指令,跳过本回合")

continue

if enemy.is_alive():

enemy.rage_attack(player)

round_num += 1

if player.is_alive():

print(f"\n? {player.name} 获胜!剩余生命 {player.health}")

else:

print(f"\n? {enemy.name} 击败了 {player.name}...")

if __name__ == "__main__":

battle()

```

上述代码完整实现了 python人狗大战csdn在线代码 的核心玩法:玩家通过攻击、治疗、防御三种指令与AI狗对手进行回合制对战,狗有概率进入狂暴状态提升攻击力,玩家可通过治疗药剂恢复生命。代码基于CSDN常见教程风格编写,可直接复制运行测试。

【常见问题】

问题1:python人狗大战csdn在线代码中如何增加新的角色类型?

回答1:在python人狗大战csdn在线代码中增加新角色,只需新建一个继承自`Character`基类的子类。例如新增“猫”角色:定义`class Cat(Character):`并重写其特殊技能方法(如`dodge`闪避),然后在`battle()`函数中实例化该角色替换`Dog`即可。注意需在`Character`中确保所有子类共享`attack_target`和`take_damage`接口。

问题2:python人狗大战csdn在线代码的运行环境要求是什么?

回答2:python人狗大战csdn在线代码仅依赖Python标准库`random`和`sys`,无需安装第三方包。运行环境要求Python 3.6以上版本(推荐3.8+),在Windows/Linux/macOS终端或PyCharm、VS Code等IDE中直接执行即可。若在CSDN在线编辑器运行,需选择“Python”环境并点击运行按钮。

问题3:python人狗大战csdn在线代码中如何调整战斗难度?

回答3:在python人狗大战csdn在线代码中调整难度主要通过修改角色属性参数实现。例如降低狗的攻击力:在`Dog.__init__`中将`attack=30`改为`attack=20`;或增加玩家生命:将`Human.__init__`中`health=120`改为`health=150`。也可修改`rage_mode`触发概率(当前`0.3`)或暴击倍率(当前`1.5`)来微调平衡性。

问题4:python人狗大战csdn在线代码的面向对象设计原理是什么?

回答4:python人狗大战csdn在线代码采用经典OOP三要素:封装(角色属性与方法绑定在类中)、继承(Human和Dog均继承自Character基类,复用`is_alive`、`take_damage`等方法)、多态(Dog重写`rage_attack`方法实现特有狂暴逻辑,`attack_target`在子类中表现不同行为)。这种设计使代码易于扩展和维护。

问题5:python人狗大战csdn在线代码如何保存战斗日志?

回答5:在python人狗大战csdn在线代码中保存日志只需在`battle()`函数开头添加文件操作:`log_file = open("battle_log.txt", "w", encoding="utf-8")`,然后将所有`print`语句替换为同时写入文件的函数。例如定义`def log(msg): print(msg); log_file.write(msg + "\n")`,最后在函数结束处调用`log_file.close()`。CSDN在线版本可通过`sys.stdout`重定向实现日志捕获。

免责声明:本文提供的python人狗大战csdn在线代码仅供学习与交流目的,作者不对代码运行产生的任何直接或间接损失负责。游戏设定中的“狗”角色为虚构编程对象,不代表任何真实动物。请勿将代码用于任何形式的赌博、暴力或非法用途。使用前建议在本地沙箱环境测试,第三方平台运行请遵守其用户协议。