我正在用 C++ 为 NDS 编码。我正计划编写一个游戏,其中事件按顺序发生并根据玩家的选择而变化,就像决策树一样。例子:
===地点===
- 走廊:玩家可以通过的两扇门
- 浴室:地下室有秘密入口
- 地下室:通往走廊
- 卧室:通往浴室
===顺序===
在每个房间里,都会不断检查按键。所以这是编码我最初想到的序列的基本且通常不好的方法:
void drawText()
{
//writes the specified text to the screen depending on the room
}
void playGame()
{ //This function gets called to play through the whole game
drawText();
while(1)
{
updateKeys();
if (newPress()) //New key is pressed
{
if (getButtonInt()==BATHROOM_INT)
bathroom(); //it will launch the basement function as a subroutine
else //Bedroom
bedroom(); //it will launch the bathroom function as a subroutine
drawText();
}
//When returning from room function, the
}
}
这种方法的许多缺点中的一些是:
- 几乎不可能实现多人游戏,因为一切都需要不断更新
- 几乎不可能更新其他功能(例如帧/时间跟踪器)
- 添加在房间之间移动的选项会导致递归并可能导致内存溢出
所以,问题是:解决这些缺点的最佳选择是什么?
是的,我可以在 switch 语句中编写所有内容,并在 playGame 函数之外使用一个变量来跟踪 switch 语句中的位置,但结构似乎不可读或不合逻辑。