Как создать новую функцию и выполнить ее во время игры? - PullRequest
0 голосов
/ 22 января 2019

Я делаю игру с Cocos2d-x v3.17.

Я хочу, чтобы игрок написал свой код на игровой сцене, затем он нажал Submit и игра его запустила.

Я думаю о том, чтобы сохранить их код в файле и вызвать из него функцию, поэтому я создаю 2 файла, например:

//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. Даже если файл .cpp изменяется каждый раз, когда они нажимают Submit, программа просто запускает код из первого старого файла.

Вот и вся моя проблема, пожалуйста, помогите мне решить ее или помогите мне, если вы знаете другой способ сделать эту функцию.

Спасибо.

1 Ответ

0 голосов
/ 22 января 2019

C ++ - это скомпилированный язык, означающий, что вы не читаете напрямую исходный файл во время выполнения. Неважно, если вы измените исходный код во время работы приложения, так как вы его не скомпилировали.

Одна вещь, которую вы могли бы попробовать, это использовать язык сценариев и сделать его встроенным в ваш c ++. Затем игрок может написать скрипт на этом языке, и вы сможете запустить скрипт.

Популярным выбором для написания сценариев в игре является язык LUA.

Я предлагаю вам взглянуть на книгу по написанию игр на C ++, например Game Coding Complete, Четвертое издание

...