(恶棍版本的笔记——即不好好说话的笔记)
状态模式是一种内部状态的转换。
神奇。
我一开始以为 状态模式就是藏着switch的情况。但是关键是它如何隐藏自己的外壳被调用。
就是调用者调用各种状态的情况。要达成这一点,需要
- 各种状态需要知道调用者
- 各种状态需要知道其他状态(可以建立它们)
- 存在一个抽象状态,【⚪】它表示所有状态的当前选择。它的信用有:所有未来、过去、现在状态能够满足它的规格。
流程
调用者直接对【⚪】进行各种消息的处理。这些消息会直接进入调用者绑定的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()
本文深入探讨了状态模式的概念,解释了其如何通过隐藏内部状态转换,实现调用者与多种状态的交互。通过实例分析,展示了状态模式在游戏角色AI设计中的应用,强调了状态之间的切换机制与设计原则。

被折叠的 条评论
为什么被折叠?



