- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关闭。这个问题是opinion-based .它目前不接受答案。
想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.
2年前关闭。
Improve this question
处理对象并使它们相互交谈的好方法是什么?
到目前为止,我所有的游戏爱好/学生都很小,所以这个问题通常以一种相当丑陋的方式解决,这导致紧密集成和循环依赖。这对于我正在做的项目规模来说很好。
然而,我的项目在规模和复杂性上变得越来越大,现在我想开始重用代码,让我的头脑变得更简单。
我遇到的主要问题通常是Player
需要了解的Map
Enemy
也是如此,这通常会导致设置大量指针并具有大量依赖项,这很快就会变得一团糟。
我已经按照消息样式系统的思路进行了思考。但我真的看不出这是如何减少依赖性的,因为我仍然会到处发送指针。
PS:我想这之前已经讨论过,但我不知道它叫什么,只是我的需要。
最佳答案
编辑:下面我描述了一个我反复使用的基本事件消息系统。我突然想到,这两个学校项目都是开源的,并且在网络上。您可以在 http://sourceforge.net/projects/bpfat/ 找到此消息传递系统的第二个版本(以及更多版本)。 .. 享受,并阅读下面的系统更详尽的描述!
我编写了一个通用的消息传递系统,并将其引入到一些已在 PSP 上发布的游戏以及一些企业级应用软件中。消息传递系统的重点是仅传递处理消息或事件所需的数据,具体取决于您要使用的术语,以便对象不必相互了解。
用于完成此操作的对象列表的快速纲要大致如下:
struct TEventMessage
{
int _iMessageID;
}
class IEventMessagingSystem
{
Post(int iMessageId);
Post(int iMessageId, float fData);
Post(int iMessageId, int iData);
// ...
Post(TMessageEvent * pMessage);
Post(int iMessageId, void * pData);
}
typedef float(*IEventMessagingSystem::Callback)(TEventMessage * pMessage);
class CEventMessagingSystem
{
Init ();
DNit ();
Exec (float fElapsedTime);
Post (TEventMessage * oMessage);
Register (int iMessageId, IEventMessagingSystem* pObject, FObjectCallback* fpMethod);
Unregister (int iMessageId, IEventMessagingSystem* pObject, FObjectCallback * fpMethod);
}
#define MSG_Startup (1)
#define MSG_Shutdown (2)
#define MSG_PlaySound (3)
#define MSG_HandlePlayerInput (4)
#define MSG_NetworkMessage (5)
#define MSG_PlayerDied (6)
#define MSG_BeginCombat (7)
#define MSG_EndCombat (8)
关于c++ - 游戏对象互相交谈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4574016/
我有一个应用需要检测用户何时与该应用通话。我不想有任何第三方 API。我用过 this turtorial,但我不得不将它转换为 swift 2。这是我正在使用的代码: import UIKit im
我有一个由 PNI Corp 开发的传感器,称为 spacepoint-fusion。我需要用 C++ 与这个设备进行交互,并不断地从设备中读取新数据。 当我将设备插入计算机时,我看到/dev/hid
我正在使用 kafka-python 为 Kafka 2.2.1 集群(来自 AWS 的 MSK 服务的托管集群实例)生成消息。我能够检索引导服务器并与它们建立网络连接,但没有消息通过。而是在类型 A
所以在我的应用程序中,我使用了 Storyboard,以及初始的 viewController是 UITabBarController .我想要做的是当应用程序启动时,我希望能够设置tabBarCon
Python版本:2.6.6 PySerial版本:2.5 Arduino 开发板:Duemilanove 328 我已经编写了一些代码来模拟我正在使用的一些硬件,并将其上传到 Arduino 板上。
有没有一种标准方法可以从 Scala 控制 Arduino?如果不是我有兴趣一起破解一个,但我不确定我应该从哪里开始。 Firmata 库似乎是可行的方法,但没有 Java 或 Scala 接口(in
我们正在尝试在无服务器中基于 Express 构建的 lambda 中连接到 AWS DocumentDB。为此,我们使用 Mongoose 和一个看起来像的连接函数 import mongoose
我想针对 Microsoft Exchange 2007(或 2010)网络服务测试一个简单的 SOAP 应用程序。互联网上有可用的演示服务器吗?我的问题是,我这里没有 64 位机器来为自己安装服务器
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
当我连接到 gtalk 时,我可以在 appspot 中与我的机器人交谈。但是当我登录到 jabber.org 时,我无法与我的机器人交谈?我需要配置什么吗? testetefsdf@appspot.
首先,我试图让 fabric 正常工作,但它一直要求我输入密码。 所以我正在努力减少这个问题。从 Python 创建 SSH 连接也许是一个很好的 POC。我发现 fabric 使用 parmiko
我刚开始使用 react.js,我喜欢组件的工作方式。我创建了一个 Card 组件,它会在点击时添加一个 css 类 expanded。这就像一个魅力。现在我希望所有其他卡片在单击另一张卡片后松开 e
一段时间以来,我一直在想最好的方法... 目前,为了获取 UIViewController 的 subview 的 subview 以向 UIViewController 发送消息,我将让二级 sub
我正在尝试遵循 MVP 模式。但是,我对如何处理此模式的适配器和 View 持有者有一些疑问。 我应该将适配器用作演示者吗?有业务逻辑? 或者我应该传递一个处理列表逻辑的呈现器实例,然后在与适配器元素
我试图连接到 AWS 使用 的实例码头机连接已完成,但出现错误 Error getting SSH command to check if the daemon is up: Something we
我在一个房间里有两台 Apple TV。一台新的开发者 Apple TV 和一台旧的 Apple TV 3。 我遇到的问题是要么同时远程控制两个设备。 有没有办法让 Remote 只与各自的设备通话?
我是一名优秀的程序员,十分优秀!