在编程学习过程中,通过小游戏来巩固基础语法是很有趣的方式。本文提供一段Python代码,实现一个简单的“人狗大战”回合制对战游戏。玩家控制人物与计算机控制的狗进行战斗,双方轮流攻击,直到一方血量为0。

游戏设计思路
- 人物和狗各有生命值(hp)和攻击力(atk)。
- 每回合玩家先选择攻击或逃跑,若攻击则随机造成伤害;若逃跑有一定概率成功。
- 计算机控制的狗每回合自动攻击玩家。
- 游戏持续直到一方生命值归零,输出胜负结果。
完整代码
```python
import random
class Character:
def __init__(self, name, hp, atk):
self.name = name
self.hp = hp
self.atk = atk
def is_alive(self):
return self.hp > 0
def attack(self, opponent):
damage = random.randint(int(self.atk 0.8), int(self.atk 1.2))
opponent.hp -= damage
print(f"{self.name} 攻击了 {opponent.name},造成 {damage} 点伤害,{opponent.name} 剩余血量 {opponent.hp}")
return damage
def main():
player = Character("你", 100, 25)
dog = Character("狗", 80, 30)
print("=== 人狗大战 ===")
print(f"你的血量:{player.hp}攻击力:{player.atk}")
print(f"狗的血量:{dog.hp}攻击力:{dog.atk}")
print("")
while player.is_alive() and dog.is_alive():
玩家回合
print("你的回合:1. 攻击2. 逃跑")
choice = input("请选择操作:")
if choice == "1":
player.attack(dog)
elif choice == "2":
if random.random() < 0.3:
print("你成功逃跑了!游戏结束")
return
else:
print("逃跑失败,受到狗的偷袭!")
dog.attack(player)
else:
print("无效输入,自动视为攻击")
player.attack(dog)
if not dog.is_alive():
break
狗回合
print("狗的回合:")
dog.attack(player)
判断胜负
if player.is_alive():
print("恭喜你战胜了狗!")
else:
print("你被狗打败了...")
if __name__ == "__main__":
main()
```
代码说明
1. Character类:定义了角色属性(名称、血量、攻击力)和攻击方法。攻击伤害在攻击力的80%~120%之间随机波动。
2. main函数:初始化玩家和狗,进入循环。玩家可以选择攻击或逃跑(逃跑成功率30%)。逃跑失败时狗会立即反击一次。狗回合自动攻击玩家。
3. 游戏流程:每回合显示双方状态,直到一方血量归零或玩家成功逃跑。
运行示例
```
=== 人狗大战 ===
你的血量:100攻击力:25
狗的血量:80攻击力:30
你的回合:1. 攻击2. 逃跑
请选择操作:1
你 攻击了 狗,造成 27 点伤害,狗 剩余血量 53
狗的回合:
狗 攻击了 你,造成 33 点伤害,你 剩余血量 67
你的回合:1. 攻击2. 逃跑
请选择操作:1
你 攻击了 狗,造成 22 点伤害,狗 剩余血量 31
...
```
扩展建议
- 可以增加技能系统,如暴击、闪避、回血等。
- 用图形界面(如pygame)替代控制台。
- 添加多关卡或不同敌人。
注意事项
代码使用纯Python标准库,无需额外安装。复制到Python环境即可运行。注意输入为数字,否则会被视为无效操作。
