Answer the question
In order to leave comments, you need to log in
How to execute pseudocode?
I am developing a game on unity in which you need to compose an algorithm from the available commands (the mechanics of compiling an algorithm are taken from these games: 7 Billion Humans or Human Resource Machine). When building an algorithm, the pseudocode of the algorithm is written to the file; it contains both methods, loops and branches. How to execute this pseudocode in c#.
a:
if s != worker or
sw != worker:
step s
jump a
endif
b:
takefrom s
if myitem < 50:
giveto sw
step e
jump b
else:
step w
step w
endif
c:
step n
jump c
Answer the question
In order to leave comments, you need to log in
Use the Composite + Interpreter pattern from the Gang of Four pattern set.
You describe the basic interface for the runtime and for the command:
//окружение хранит текущее состояние программы плюс предоставляет средства взаимодействия с "окружающим миром".
public interface IProgramEnvironment
{
Dictionary<str, int> Variables {get;} //хранилище переменных
IProgramOperator CurrentOperator {get; set;} //текущая команда - нужно для переходов
//ну и что там ещё тебе может потребоваться? Операции ввода-вывода, и т.п.
}
//просто составной оператор
public interface ICompoundOperator: IList<IProgramOperator>
{
void ExecuteAll(IProgramEnvironment env); //выполнить дочерние команды
string ToString(); //для отладки
}
//абстрактный оператор, его будут реализовывать классы операторов
public interface IProgramOperator
{
int LineNumber; //номер строки, для удобства обозначения
IReadOnlyList<ICompoundOperator> ChildrenBlocks {get;} //списки дочерних команд, если они есть
void Execute(IProgramEnvironment env); //выполняем команду в окружении. Может потребоваться возвращать значение
string ToString(); //для отладки
void Render(); //для отображения на экране?
}
IEnumerable<object> Execute(IProgramEnvironment env)
How to execute this pseudocode in c#.
If you have any ideas how you can transfer the algorithm from the game to the code avoiding pseudocode, please share.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question