我一直在编写一个文字冒险游戏。当程序运行时,调用Boot()
方法,读取%APPDATA%.ilan \ texert用于设置文件(同时只有username.txt)。在Boot()
之后,它会转到MainMenu()
,用户可以选择播放,转到选项或退出。当用户进入“选项”菜单并返回时,然后尝试播放游戏或返回选项菜单,游戏退出,这不应该发生。 Source
Boot()
=第455行
MainMenu()
=第579行
Main()
=第504行
我相信这是因为int
在方法本身中声明,并且因为多次调用该方法,int
变量保留其先前的值。有什么方法可以解决这个问题吗?
答案 0 :(得分:0)
在第610行,您检索MainMenu方法的结果,然后在第617行调用您的OptionMenu方法,但是一旦OptionMenu()方法触发,您就不会做任何其他事情来阻止您的应用程序在控制返回后停止Main()方法。即使您在OptionMenu()方法中调用MainMenu(),也没有评估该调用的结果,所以您只需将菜单写入控制台并返回Main()。你需要在Main()方法中放置一个循环,它将重复调用你的MainMenu()方法,评估所选的结果,其他菜单选项如OptionMenu()将返回到这个循环,而不是自己调用主菜单。像这样:
string whatToDo = "null";
bool exitApp = false;
while (!exitApp)
{
whatToDo = AdvTime.MainMenu();
if (whatToDo.Contains("play"))
{
Menu("null", false);
}
if (whatToDo.Contains("options"))
{
AdvTime.OptionMenu();
}
if (whatToDo.Contains("exit"))
{
exitApp = true;
}
if (whatToDo.Contains("null"))
{
AdvTime.MMError("OM");
}
}