首页 >> 生活常识 >

Python人狗大战CSDN在线代码实现详解

2026-09-16 10:11:47 来源:网易 用户:编辑5号 

“人狗大战”是一款经典的编程练习小游戏,通过Python的面向对象编程可以轻松模拟出人与狗互相攻击、比拼血量的战斗逻辑。本文提供一套完整且可直接运行的代码,并逐个模块讲解设计思路,适合初学者巩固类、对象、循环和随机数等知识点。

游戏规则很简单:玩家控制角色“人”,电脑控制角色“狗”。双方各自拥有生命值(血量)和攻击力,轮流出手,直至一方血量归零。代码采用控制台交互,无需安装额外图形库,复制粘贴即可在本地运行。

首先定义两个类:`Person`和`Dog`。每个类都包含`name`(名字)、`hp`(血量)和`attack`(攻击力)三个基本属性,以及一个`attack_enemy`方法用于对敌方造成伤害。为了让战斗更真实,攻击力会加上一个随机浮动(±2),模拟暴击或失误。

```python

import random

class Person:

def __init__(self, name, hp, attack):

self.name = name

self.hp = hp

self.attack = attack

def attack_enemy(self, enemy):

damage = self.attack + random.randint(-2, 2)

enemy.hp -= damage

print(f"{self.name} 对 {enemy.name} 造成了 {damage} 点伤害!{enemy.name} 剩余血量 {enemy.hp}")

```

`Dog`类结构完全相同,但初始参数可以不同,比如血量稍低、攻击力稍高,以增加游戏平衡性。

```python

class Dog:

def __init__(self, name, hp, attack):

self.name = name

self.hp = hp

self.attack = attack

def attack_enemy(self, enemy):

damage = self.attack + random.randint(-2, 2)

enemy.hp -= damage

print(f"{self.name} 对 {enemy.name} 造成了 {damage} 点伤害!{enemy.name} 剩余血量 {enemy.hp}")

```

接下来编写游戏主循环。创建两个实例:一个代表玩家(人),一个代表敌人(狗)。玩家可以选择先手出击,然后狗自动反击,如此交替,直到任何一方血量≤0。循环内部需要检测双方存活状态,如果一方死亡则跳出循环并宣布胜者。

```python

def main():

print("=" 30)

print(" 人狗大战")

print("=" 30)

创建角色

player = Person("玩家", 100, 20)

enemy = Dog("恶犬", 80, 25)

turn = 0 0表示玩家回合,1表示狗回合

while player.hp > 0 and enemy.hp > 0:

if turn == 0:

input("按回车键攻击...")

player.attack_enemy(enemy)

if enemy.hp <= 0:

print(f"\n{enemy.name} 被击败了!你赢了!")

break

turn = 1

else:

print("\n恶犬正在准备反击...")

enemy.attack_enemy(player)

if player.hp <= 0:

print(f"\n{player.name} 被击败了!游戏结束!")

break

turn = 0

print("-" 30)

```

为了让每次运行的结果不同,可以增加随机初始血量和攻击力的功能。玩家也可以选择是否手动设置,或者脚本自动生成。下面的代码演示了固定数值的简洁版本,读者可根据需要修改构造函数参数。

最后,在脚本末尾调用`main()`函数。完整代码如下:

```python

import random

class Person:

def __init__(self, name, hp, attack):

self.name = name

self.hp = hp

self.attack = attack

def attack_enemy(self, enemy):

damage = self.attack + random.randint(-2, 2)

enemy.hp -= damage

print(f"{self.name} 对 {enemy.name} 造成了 {damage} 点伤害!{enemy.name} 剩余血量 {enemy.hp}")

class Dog:

def __init__(self, name, hp, attack):

self.name = name

self.hp = hp

self.attack = attack

def attack_enemy(self, enemy):

damage = self.attack + random.randint(-2, 2)

enemy.hp -= damage

print(f"{self.name} 对 {enemy.name} 造成了 {damage} 点伤害!{enemy.name} 剩余血量 {enemy.hp}")

def main():

print("=" 30)

print(" 人狗大战")

print("=" 30)

player = Person("玩家", 100, 20)

enemy = Dog("恶犬", 80, 25)

turn = 0

while player.hp > 0 and enemy.hp > 0:

if turn == 0:

input("按回车键攻击...")

player.attack_enemy(enemy)

if enemy.hp <= 0:

print(f"\n{enemy.name} 被击败了!你赢了!")

break

turn = 1

else:

print("\n恶犬正在准备反击...")

enemy.attack_enemy(player)

if player.hp <= 0:

print(f"\n{player.name} 被击败了!游戏结束!")

break

turn = 0

print("-" 30)

if __name__ == "__main__":

main()

```

运行这段代码时,控制台会显示回合制战斗日志。玩家每次按下回车键,就会对狗发动一次攻击,随后狗自动反击。由于引入了随机伤害值,每局游戏的结果都不完全相同,增加了重复可玩性。

如果希望扩展这个游戏,可以考虑添加以下功能:装备系统(武器、护甲)、技能(如闪避、暴击)、多只狗同时作战、图形界面(使用Pygame或Tkinter)、保存战斗记录等。这些内容将进一步提升代码的复杂度和趣味性,适合作为进阶练习。

文章提供的代码已在Python 3.8+环境下测试通过,无需任何第三方库。读者可直接将代码复制到自己的`.py`文件中运行,体验一场简单却刺激的人狗对决。

  免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!

 
分享:
最新文章