我现在搜索了很多内容,但我发现的所有内容都是使用C++的Lua的"Hello World"示例.
情况:游戏,大型游戏.有一个游戏控制台,目前用C++(面向对象和所有)硬编码,有很多if-else-if-else ...块来检查用户在控制台中输入的命令.每个命令可以改变其他类的游戏的部件(像命令"速度5"改变可变double speed中class Car通过调用Car::setSpeed(5)),并且还给出了一个输出回到约结果控制台.还有一些命令可以在"幕后"执行,而不仅仅是更改变量,这也应该由Lua完成,并且只有最终结果传回C++代码(控制台输出+正确类中的变更变量).
在哪里/如何/我应该开始将此控制台命令功能后面的代码转换为Lua?像这样:用户在控制台中输入"speed 5",然后Lua调用Car::setSpeed(5),然后Lua报告回C++控制台.而不是硬编码命令背后的代码,而应该用Lua编写,但游戏的其余部分应该保留在C++中(就像我的类和成员以及控制台框架一样).
有什么好的教程吗?任何提示从哪里开始?分享一些经验?
提前致谢
我目前正试图让Netbeans使用Git插件.如果我想从Netbeans中克隆我的git存储库,我会收到错误消息:
reject hostKey: [repository url]
克隆中止.
这是什么意思,我该如何解决?
如果我选择"Eclipse MingW Makefile"或"Eclipse Unix Makefile",那么在使用cmake和eclipse以及MingW的Windows上会有什么不同?
使用MingW,我总是会遇到"sh.exe"的错误(如果我重新点击"Configure"就会消失),使用Unix,我总是需要手动指定windres,因为cmake无法找到它.
这对Eclipse或其他东西有什么影响吗?
两个生成的Makefile都与Eclipse和MingW一起工作并编译我的项目.
我应该选择什么Makefile?为什么?
在Eclipse CDT中,大纲甚至代码窗口是否可以显示类的继承成员?这样我就可以全面了解派生类的功能.
class Derived : public Base {}
Run Code Online (Sandbox Code Playgroud)
如果我在Derived.cpp/h中,我想在大纲中看到Base.cpp/h中的继承成员(或者在其他地方,可能直接在代码窗口中显示为灰色).
将它放在自动完成列表中是很好的,但是还有一个完整的概述会更好.
这有点可能吗?
在C++中,列出Windows上所有目录文件的最佳方法是什么?
在Linux或Windows上使用gcc(例如MingW),使用dirent.h很容易,但是当dirent.h不可用时(例如Visual Studio),在Windows上执行此操作的最佳方法是什么?
我是否应该强制人们向他们的Visual Studio添加一个免费的dirent.h实现?或者我应该写一个替代代码来读取文件?如果这样,那么最好的代码是什么?
谢谢.
如何在C++程序中正确实现Lua?我下载的Lua源,把我的src文件夹中的.c文件和.h文件在我的包含文件夹,包含在我的程序的源代码lua.h(用EXTERN当然"C" {}),并点击"Build" .
这就是所有教程告诉我将Lua与C++项目一起使用的方法.
但现在我得到错误"main的多重定义"和Lua代码中的一些无法解析的符号.我理解第一个错误意味着什么(冲突因为Lua有一个主要而我的程序也有一个),但我怎么解决呢?
或者我是否理解在C++程序中实现Lua的完全错误?
我在MingW遇到这些错误:
undefined reference to `libiconv_close'
undefined reference to `libiconv_open'
undefined reference to `libiconv'
Run Code Online (Sandbox Code Playgroud)
我安装了MingW的libiconv软件包.是什么造成的?如果这具有一定的重要性,我正在尝试使用tinygettext.
将变量放入给定范围的最快方法是什么?例如,确保角度"double alpha"始终在(0.0,2*Pi)内.
我自己找到了两个解决方案,其中一个解决方案速度慢得多,而另一个解决方案看起来很容易复杂.必须有更好的方式,不是吗?
//short, but very slow (so it's a no-go);
return asin(sin(alpha));
//much faster, but seems ugly (two while loops to change a variable? come on!)
while (alpha < 0.0)
{
alpha += 2.0 * M_PI;
}
while (alpha >= 2.0 * M_PI)
{
alpha -= 2.0 * M_PI;
}
return alpha;
Run Code Online (Sandbox Code Playgroud) 可以#define"覆盖"一个const变量,反之亦然?或者它会导致编译器错误?
//ONE
#define FOO 23
const int FOO = 42;
//TWO
const int FOO = 42;
#define FOO 23
Run Code Online (Sandbox Code Playgroud)
FOO在两种情况下都有什么价值,42或23?