《设计模式与游戏完美开发》-状态模式(State)恶棍笔记

本文深入探讨了状态模式的概念,解释了其如何通过隐藏内部状态转换,实现调用者与多种状态的交互。通过实例分析,展示了状态模式在游戏角色AI设计中的应用,强调了状态之间的切换机制与设计原则。

(恶棍版本的笔记——即不好好说话的笔记)

状态模式是一种内部状态的转换。
神奇。
我一开始以为 状态模式就是藏着switch的情况。但是关键是它如何隐藏自己的外壳被调用。
就是调用者调用各种状态的情况。要达成这一点,需要

  1. 各种状态需要知道调用者
  2. 各种状态需要知道其他状态(可以建立它们)
  3. 存在一个抽象状态,【⚪】它表示所有状态的当前选择。它的信用有:所有未来、过去、现在状态能够满足它的规格。

流程

调用者直接对【⚪】进行各种消息的处理。这些消息会直接进入调用者绑定的state中,被state调用。
state在内部检查,发现符合可以转换的条件时,就会调用调用者的set_state函数,并新建一个状态,赋值给调用者的state。
在这之后,原来的那个状态就在内部就被丢弃了。没有人再会想起它。

原理…… 一个非常冷酷的回收机制。

恶棍:"我不愿意这样死去。“
没有回应。
恶棍:"啊……调用者,请你再次调用我!”
没有回应。【危险:协程】
恶棍:“除了调用者以外,是否能够有人将我启动?我知道调用者。我还知道很多事情,包括如何建立我的兄弟们……我还认识调用者的那个函数。”
没有回应。
恶棍:“这样,哪怕我没有兄弟姐妹,我也只需要把自己填写进去~就可以了!嘿嘿!”【必要?:回收】
小猴子:“您好。我可以帮助你!我是从你的朋友那边了解到你的。因为我也许以后也会用到你,所以,你就到我的库里面去吧,那里已经有很多你的兄弟了。我以后要用到类似你这样的状态,我就来找你。不会有人代替你,你感觉如何?”【某种设计:储存好暂时不需要的状态】
恶棍:“可以。但我知道,你出现就意味着,我们所有状态都已经暴露了。”
小猴子:“嗯。可以这样说,你们不过是一个工具。”
恶棍笑:“得力的工具”。

第二次思考的时候……它了解一切,却为了实现而绕着弯枪毙自己。

恶棍根本不是一个生物的思维。
它了解控制者,了解其他状态。却束缚于自己的行动中。
它的存在是过度的存在。
有点像是人,是吗。
假设人了解宇宙,了解了其他星球上的生物,但是仍然按照时间——可有可无的行走着,
直到变成他人眼中的生物,重新被创造出来。
在死去之前,看到其他的生物代替自己记录宇宙。
糟糕……状态是人类的本质。
这与时间有关。

第12章也加了状态。
但是实现的是AI.唯一的区别是,AI有很多种模式,比如闲聊,比如吃饭。
角色有玩家和怪物。它们的AI有同,也许也有不同。
那么角色ai类和怪物ai类,它们就有一些数值,方便各种模式的ai来调用。

这里实现了不同的怪物的不同特点。

这个角色ai类啊怪物ai类(每一个character都有一个,不是单例。),初始化的时候,就会根据自己的设计,把一个state赋给m_characterAI的m_state字段。

各种ai状态的父类初始化时就会先把m_CharacterAI赋值好。

然后让Icharacter知道这个m_characterAI就可以了。m_characterAI的函数有,比如转换状态……

这样看起来。ai类是用来保证不同的角色的不同的ai的。
主类icharacter知道这个ai类,通过ai类来进行更新。ai类update时,自动调用m_state的update()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值