如何创建新功能并在游戏运行时执行它?

时间:2019-01-22 08:43:50

标签: c++ cocos2d-x-3.x

我正在用Cocos2d-x v3.17制作游戏。

我希望玩家在游戏场景中编写代码,然后按Submit(提交),然后游戏执行该代码。

我考虑将其代码保存到文件中并从中调用函数,所以我创建了2个这样的文件:

server.ssl.key-store=classpath:keystore.p12

然后我运行游戏。

在主场景中,当播放器按Submit时,我将根据他们的代码重写.cpp文件,并假设它变为:

//PlayerCode.h
#pragma once
int PlayerFunction(int a, int b);

//PlayerCode.cpp
#include "PlayerCode.h"
int PlayerFunction(int a, int b){ return 0;}

然后运行该代码以执行玩家代码

//PlayerCode.cpp
#include "PlayerCode.h"
int PlayerFunction(int a, int b){ return a+b;}

但是无论播放器写什么,结果始终为0。即使每次按Submit,.cpp文件都会更改,程序只会从第一个旧文件运行代码。

这就是我的全部问题,请帮助我解决它,或者如果您知道其他实现此功能的方法,请指导我。

谢谢。

1 个答案:

答案 0 :(得分:3)

C ++是一种编译语言,这意味着您不会在运行时直接读取任何源文件。应用程序运行时是否更改源代码并不重要,因为您尚未对其进行编译。

您可以尝试的一件事是使用脚本语言并将其嵌入到c ++中。然后播放器可以使用该语言编写脚本,然后您可以运行该脚本。

在游戏中编写脚本的流行选择是LUA语言。

我建议您看一本用C ++编写游戏的书,例如Game Coding Complete, Fourth Edition