gpt4 book ai didi

c++ - C++ 中类似 GameMaker 的功能

转载 作者:行者123 更新时间:2023-11-30 04:32:03 26 4
gpt4 key购买 nike

在我年轻的时候,我经常使用一种叫做 Game Maker 的工具。我开始从中学习编程。我现在远远不止于此,但回过头来看,它的一些功能和设计还是很有趣的。我想知道 - 我将如何使用 C++ 实现类似于此工具的功能?我想知道:

  • 对象/类

Game Maker 有一个你要创建的“对象”列表,它们本质上只是不同的类,所有类都派生自相同的基类(我现在将其称为 GameObject)和一个名为“instance_create”的系统函数,它需要作为参数的对象类型。在 C++ 中,这看起来像这样(尽管在语法上非常不正确):

class MyGameObject : GameObject
{
//...
}
GameObject instance_create(class objecttype)
{
objecttype newinstance = new objecttype();
return newinstance
}
GameObject* gameobjectinstance = instance_create(MyGameObject);

我将如何实现它?

  • 系统变量/函数

Game Maker 拥有可以从任何地方访问的系统变量和函数。时期。任何地方。我在考虑全局变量,但我知道那是糟糕的设计。我在考虑拥有一个全局类,并将变量/函数设置为静态,但它们无法更改。我该怎么做?

  • 变量

Game Maker 只有一种数据类型——var。它可以是字符串、整数、小数,任何东西。并且有用于在它们之间进行转换的系统函数。

最后,我如何在某种脚本中定义对象类型?比如,如果我想添加一种新类型的对象,创建一个新脚本?我不认为 C++ 可以在运行时创建对象类型,那么我该怎么做呢?

最佳答案

使用模板。

template<typename T> GameObject* instance_create()
{
return new T;
}
GameObject* gameobjectinstance = instance_create<MyGameObject>();

但是,您指定的设计非常值得怀疑(充其量)并且绝对不适合 C++。您应该努力实现一个设计良好且适合该语言的系统,而不是从过去重新创建一个系统。

我特别认为,既然你提到了脚本的运行时解释,那么实际上 GameMaker 类和 C++ 类之间没有任何关系。而且您肯定不能在运行时创建 C++ 类,也不能在运行时传递类型,也不能在运行时实例化模板。

您最适合简单地编写脚本语言(例如 Lua),并且只用 C++ 编写必要的高性能组件。

关于c++ - C++ 中类似 GameMaker 的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7933825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com