如何在游戏 运行 时创建新函数并执行它?
How to create new function and excute it while the game is running?
我正在使用 Cocos2d-x v3.17 制作游戏。
我希望玩家在游戏场景中编写他们的代码,然后他们按下提交,然后游戏执行它。
我想将他们的代码保存到一个文件中并从中调用一个函数,所以我创建了 2 个这样的文件:
//PlayerCode.h
#pragma once
int PlayerFunction(int a, int b);
//PlayerCode.cpp
#include "PlayerCode.h"
int PlayerFunction(int a, int b){ return 0;}
而我运行游戏
在主场景中,当玩家按下提交时,我根据他们的代码重写.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。即使每次按下提交时 .cpp 文件都发生变化,程序也只是 运行 来自第一个旧文件的代码。
这就是我的全部问题,请帮助我解决它,或者如果您知道其他方法可以使用此功能,请指导我。
谢谢。
C++ 是一种编译语言,这意味着您不会在 运行 时直接读取任何源文件。如果您在应用程序 运行ning 时更改源代码并不重要,因为您还没有编译它。
您可以尝试的一件事是使用脚本语言并将其嵌入到您的 C++ 中。然后玩家可以使用该语言编写脚本,您可以 运行 编写脚本。
在游戏中编写脚本的流行选择是 LUA 语言。
我建议你看一本用C++写游戏的书,比如Game Coding Complete, Fourth Edition
我正在使用 Cocos2d-x v3.17 制作游戏。
我希望玩家在游戏场景中编写他们的代码,然后他们按下提交,然后游戏执行它。
我想将他们的代码保存到一个文件中并从中调用一个函数,所以我创建了 2 个这样的文件:
//PlayerCode.h
#pragma once
int PlayerFunction(int a, int b);
//PlayerCode.cpp
#include "PlayerCode.h"
int PlayerFunction(int a, int b){ return 0;}
而我运行游戏
在主场景中,当玩家按下提交时,我根据他们的代码重写.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。即使每次按下提交时 .cpp 文件都发生变化,程序也只是 运行 来自第一个旧文件的代码。
这就是我的全部问题,请帮助我解决它,或者如果您知道其他方法可以使用此功能,请指导我。
谢谢。
C++ 是一种编译语言,这意味着您不会在 运行 时直接读取任何源文件。如果您在应用程序 运行ning 时更改源代码并不重要,因为您还没有编译它。
您可以尝试的一件事是使用脚本语言并将其嵌入到您的 C++ 中。然后玩家可以使用该语言编写脚本,您可以 运行 编写脚本。
在游戏中编写脚本的流行选择是 LUA 语言。
我建议你看一本用C++写游戏的书,比如Game Coding Complete, Fourth Edition