Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在游戏运行时创建新功能并执行它?_C++_Cocos2d X 3.x - Fatal编程技术网

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

C++ 如何在游戏运行时创建新功能并执行它?,c++,cocos2d-x-3.x,C++,Cocos2d X 3.x,我正在用Cocos2d-xv3.17做一个游戏 我希望玩家在游戏场景中编写他们的代码,然后他们按Submit,游戏执行它 我考虑将他们的代码保存到一个文件中并从中调用函数,因此我创建了两个文件,如下所示: //PlayerCode.h #pragma once int PlayerFunction(int a, int b); //PlayerCode.cpp #include "PlayerCode.h" int PlayerFunction(int a, int b){ return 0;

我正在用Cocos2d-xv3.17做一个游戏

我希望玩家在游戏场景中编写他们的代码,然后他们按Submit,游戏执行它

我考虑将他们的代码保存到一个文件中并从中调用函数,因此我创建了两个文件,如下所示:

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

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

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

//PlayerCode.cpp
#include "PlayerCode.h"
int PlayerFunction(int a, int b){ return a+b;}
然后运行此命令以执行玩家代码

try{
    int result = PlayerFunction(2,3);
    CCLOG("%d",result);
}
catch (string somethingError){
    CCLOG("%s",somethingError);
}
但不管玩家写什么,结果总是0。即使每次按Submit时.cpp文件都会更改,程序也只运行第一个旧文件中的代码

这都是我的问题,请帮助我解决它,或者指导我,如果你知道其他方法来做这个功能


谢谢。

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

你可以尝试使用脚本语言并将其嵌入到C++中。然后,玩家可以使用该语言编写脚本,您可以运行脚本

在游戏中编写脚本的常用选择是LUA语言


<>我建议你看一本用C++编写游戏的书,比如

C++是一种编译语言,意思是你在运行时没有直接阅读任何源文件。在应用程序运行时是否更改源代码并不重要,因为您尚未编译它

你可以尝试使用脚本语言并将其嵌入到C++中。然后,玩家可以使用该语言编写脚本,您可以运行脚本

在游戏中编写脚本的常用选择是LUA语言


我建议你看一本用C++编写游戏的书,比如

你的代码不是直接从文件中读取的,你的代码已经在这一点编译,在可执行文件里面。编辑文件不会做任何事情,因为它们不会读取您的代码不会直接从文件中读取,此时您的所有代码都已编译并在可执行文件中。编辑文件不会做任何事情,因为它们没有被读取