当前位置: 首页 > news >正文

AI大模型从0到1记录学习 day10

第 10 章 面相对象案例:愤怒的小鸟
10.1 游戏背景
在这个模拟的愤怒的小鸟游戏世界里,绿色的小猪偷走了小鸟们的蛋,这引发了小鸟们的愤怒,它们决定展开反击。每只小鸟都具有独特的颜色,并且各自拥有不同的技能,玩家需要操控这些小鸟,利用它们的技能去攻击小猪们建造的各种障碍物,从而达成击败小猪、夺回鸟蛋的目标。
10.2 类的设计思路
10.2.1 Birds 基类
1)设计目的
作为所有小鸟类的基类,它定义了小鸟的通用属性和行为,为后续具体小鸟类的扩展提供基础框架,体现了面向对象编程中的抽象和封装思想。
2)属性设计
name:用于标识每只小鸟的名称,方便区分不同个体。
color:代表小鸟的颜色,这是小鸟的一个显著特征,在游戏中可以对应不同类型的小鸟。
skill_description:描述小鸟所具备的独特技能,让玩家了解每只小鸟的特殊能力。
3)方法设计
fly():描述小鸟飞行的基本动作,是小鸟在游戏中的常见行为,所有子类都可以重写该方法来展示不同的飞行特点。
call():模拟小鸟发出叫声的行为,同样可以被子类重写以体现不同小鸟的叫声差异。
use_skill():用于触发小鸟的特殊技能,展示小鸟使用技能的情况,子类可以根据自身技能特点进行相应实现。
10.2.2 具体小鸟子类(RedBirds、YellowBirds、BlueBirds)
1)设计目的
继承自 Birds 基类,每个子类代表一种特定颜色的小鸟,它们在继承基类属性和方法的基础上,重写部分方法以展示不同小鸟的独特行为和技能,体现了面向对象编程中的继承和多态思想。
2)属性设计
通过调用基类的 init 方法,初始化各自的 name、color 和 skill_description 属性,确保每只小鸟都有自己的独特标识和技能。
3)方法设计
fly():重写基类的 fly() 方法,展示不同小鸟的飞行特点,如红鸟以稳定速度飞行,黄鸟快速飞行,蓝鸟优雅飞行。
call():重写基类的 call() 方法,模拟不同小鸟的叫声,增加游戏的趣味性。
10.2.3 Obstacle 类
1)设计目的
代表游戏中的障碍物,如木头堡垒、石头塔楼等,负责处理障碍物被小鸟攻击的逻辑,与小鸟类进行交互,体现了面向对象编程中的对象交互和封装思想。
2)属性设计
name:标识障碍物的名称,方便区分不同类型的障碍物。
strength:表示障碍物的强度,即它能够承受的伤害值,当强度降为 0 时,障碍物被摧毁。
3)方法设计
be_attacked(bird):模拟障碍物被小鸟攻击的过程,根据小鸟的类型计算伤害,并更新障碍物的强度,同时输出攻击和受损信息,让玩家了解游戏进展。
10.3 方法设计思路
10.3.1 Birds 类的方法
1)fly()
作为通用的飞行方法,提供了小鸟飞行的基本描述,子类可以根据自身特点进行个性化实现,以体现不同小鸟的飞行风格。
2)call()
模拟小鸟发出叫声的行为,为游戏增加生动性,子类可以重写该方法来展示不同小鸟的叫声特点。
3)use_skill()
用于触发小鸟的特殊技能,通过输出技能描述,让玩家了解小鸟使用技能的情况,不同子类可以根据自身技能进行不同的实现。
10.3.2 具体小鸟子类的方法
fly() 和 call():重写基类的方法,根据不同小鸟的特点进行个性化实现,展示不同小鸟的飞行和叫声差异,体现了多态性。
10.3.3 Obstacle 类的方法
be_attacked(bird):接收一个小鸟对象作为参数,根据小鸟的类型计算伤害,并更新障碍物的强度。通过判断障碍物的强度是否小于等于 0,输出障碍物是否被摧毁的信息,实现了障碍物与小鸟之间的交互逻辑。
通过这样的类和方法设计,整个游戏模拟程序具有良好的扩展性和可维护性,方便后续添加更多类型的小鸟和障碍物,以及实现更复杂的游戏逻辑。
10.4 代码实现

定义鸟类基类

class Birds:
def init(self, name, color, skill_description):
self.name = name
self.color = color
self.skill_description = skill_description

def fly(self):
    print(f"{self.name} 正在飞行...")

def call(self):
    print(f"{self.name} 发出叫声...")

def use_skill(self):
    print(f"{self.name} 使用了技能:{self.skill_description}")

定义红鸟子类

class RedBirds(Birds):
def init(self):
super().init(“红火”, “红色”, “撞击前方障碍物,造成大量伤害”)

def fly(self):
    print("红火以稳定的速度向前飞行...")

def call(self):
    print("红火发出 'wei呀....' 的叫声")

定义黄鸟子类

class YellowBirds(Birds):
def init(self):
super().init(“小黄”, “黄色”, “瞬间加速,穿透薄障碍物”)

def fly(self):
    print("小黄快速向前飞行...")

def call(self):
    print("小黄发出 '啾啾啾....' 的叫声")

定义蓝鸟子类

class BlueBirds(Birds):
def init(self):
super().init(“小蓝”, “蓝色”, “分裂成三只小鸟,分散攻击”)

def fly(self):
    print("小蓝优雅地向前飞行...")

def call(self):
    print("小蓝发出 '叽叽叽....' 的叫声")

定义障碍物类

class Obstacle:
def init(self, name, strength):
self.name = name
self.strength = strength

def be_attacked(self, bird):
    print(f"{bird.name} 冲向了 {self.name}")
    bird.use_skill()
    if isinstance(bird, RedBirds):
        damage = 80
    elif isinstance(bird, YellowBirds):
        damage = 50
    elif isinstance(bird, BlueBirds):
        damage = 30 * 3  # 分裂成三只,每只造成 30 点伤害
    self.strength -= damage
    if self.strength <= 0:
        print(f"{self.name} 被摧毁了!")
    else:
        print(f"{self.name} 还剩余 {self.strength} 点强度")

模拟游戏过程

if name == “main”:
# 创建不同颜色的小鸟
red_bird = RedBirds()
yellow_bird = YellowBirds()
blue_bird = BlueBirds()

# 创建障碍物
obstacle1 = Obstacle("木头堡垒", 100)
obstacle2 = Obstacle("石头塔楼", 200)

# 红鸟攻击木头堡垒
obstacle1.be_attacked(red_bird)

# 黄鸟攻击石头塔楼
obstacle2.be_attacked(yellow_bird)

# 蓝鸟攻击石头塔楼
obstacle2.be_attacked(blue_bird)

相关文章:

  • SvelteKit 最新中文文档教程(16)—— Service workers
  • 【Unity】记录TMPro使用过程踩的一些坑
  • SpringBoot整合LogStash,LogStash采集服务器日志
  • vue 4 组件通信
  • C语言字符串处理相关函数详解
  • T11 TensorFlow入门实战——优化器对比实验
  • NE 综合实验3:基于 IP 配置、链路聚合、VLAN 管理、路由协议及安全认证的企业网络互联与外网访问技术实现(H3C)
  • Spring Data JPA方法命名规则的完整总结,按场景分类整理
  • 解决在pycharm下载的python在cmd命令行无法识别的问题
  • 蓝桥杯最后十天冲刺day 1
  • mysql表连接方式
  • MSYS2学习笔记
  • Unity 2022.3.x部分Android设备播放视频黑屏问题
  • 华为三进制逻辑与高维量子计算的对比分析
  • 微服务面试题:配置中心
  • Docker学习--容器生命周期管理相关命令--start/stop/restart命令
  • 装饰器模式:如何用Java打扮一个对象?
  • 安卓应用开发学习:查看手机传感器信息
  • 流量监控工具iptraf-ng学习
  • cisco单臂路由配置
  • 怎样做网站后台/seo怎么优化排名
  • 网站开发体会/百度怎么创建自己的网站
  • 网站开发商城图片上传/sns营销
  • 500m网站空间/下百度安装
  • 怎么建立滚动网站/宁波网站seo诊断工具
  • 个人网站源码下载/外贸平台