在基于文本的冒险游戏中,如何防止长期混淆的条件代码?

Ali*_*ter 9 c++ algorithm

我正在创建一个基于文本的,用C++选择你自己的冒险游戏.

在这个游戏中,你会选择去哪里,你选择做什么等等.

我的问题是,如何防止这种情况变得极为混乱.

例:

让我们说,在游戏中的某一点,你可以被问到是去森林还是沙漠.如果你选择沙漠,那就是完全不同于森林的故事情节.

那么我如何阻止我的代码看起来像这样.

if (player goes to the desert)advice? { 
    /*Whole story line of the desert*/
else if (player goes to the forest) {
    /*Whole story line of the forest */
Run Code Online (Sandbox Code Playgroud)

在这些故事情节中会有更多这样的条件,以及更精细的故事情节,所以有什么办法可以在一个单独的文件中编写一个故事线的代码,然后只为该条件运行该文件?无论如何我可以单独做,而不是在条件内写出一切?如果我这样做,代码会很快变得冗长而且难以查看/编辑.

我在想这样做头,使该写出来的故事线的头内部的功能,所以我只需要键入出来的功能,但如果我这样做,那么我不可能获得在游戏中的全局变量,如playerNameplayerRace等等

任何和所有建议都表示赞赏.我是C++的新手所以请原谅我,如果我错过了一些非常明显的东西.

eav*_*dan 1

可能是基于类的解决方案。这个问题很广泛,所以不太确定哪种设计模式适合。但是,示例类可能CrossroadsDesicision会导出选项["Go to desert", "Go to city", ...]并具有一个方法apply,该方法应该从数组接收选项并返回下一步的相关决策类

编辑: 基类应包含:

  • possibleDecisions - 一组可能的决策(您可以在此处使用选项类,由名称(字符串或枚举 - 您应该在此处使用模板)和描述组成)

  • apply - 接收决策、对其采取行动并返回下一个决策的函数