0

我一直在用 C# 制作文本冒险游戏(以了解有关字符串等的更多信息)。在您开始的 10 个基本场景之后,我会触发大约 3 个随机场景。其中之一是猴庙。“菜单”类有两个参数,MainArgs 和takedDump。在这些场景中,您可以选择进行转储,如果 takeDump 为真(布尔值),则会说“您旁边有一个便便”。如果您使用无法识别的命令,MainArgs 用于返回相同的场景。

public void ConScen1()  
{  
    string MainArgs;  
    bool takenDump; // Available commands are: "hit monkey talk to monkey suicide go inside"  
    string conchoice1;  
    Console.WriteLine("You arrive at a temple dedicated to the monkey god.");  
    Console.WriteLine("Outside is a monkey, presumably guarding the place.");  
    Console.WriteLine("What do you do?");  
    Console.Write(">");  
    conchoice1 = Console.ReadLine();  
    if (conchoice1.Contains("hit monkey"))  
    {  
        Console.WriteLine("You hit the monkey. He draws a knife.");  
        Console.WriteLine("He stabs you in the eye. You bleed to death.");  
        Console.WriteLine(" -- Game Over --");  
        Console.WriteLine("Press any key to start over..");  
        Console.ReadKey();  
        takenDump = false;  
        MainArgs = "null";  
        TextAdventure1.AdventureTime.Menu(MainArgs, takenDump);  
    }  
}

这里的问题是“字符串 MainArgs;” 线。我需要它用“null”调用 Menu() 来重新开始。但是,工作室说它没有被使用(即使它在 if 语句中使用)。有什么方法可以禁用警告或解决问题?如果我删除该行,它会给我一个关于未声明 MainArgs 的错误(在 if 语句中)。

4

1 回答 1

1

这里的问题是“字符串 MainArgs;” 线。我需要它用“null”调用 Menu() 来重新开始。

不,你真的没有。你也不需要takenDump。您可以将调用更改为:

TextAdventure1.AdventureTime.Menu("null", false);

需要传入一个带有值的字符串是很奇怪的"null"......

我还强烈建议您在首次使用时声明变量,因此请conchoice1在此处声明:

string conchoice1 = Console.ReadLine();

(我也会重命名它......以及你的方法。你到处都有奇怪的名字。命名很重要而且很难。)

请注意,您的程序在“重新启动”的方式上也很奇怪——它通过再次调用自身来实现(我假设这Menu是一些最终可以调用的顶级方法ConScen1。想想你的执行堆栈将看起来像用户失败了几次......你不想以这种方式递归。目前还不清楚你的程序控制流一般是什么样的,但你应该改变游戏的状态并注意到更高的,而不是这种方法。

于 2013-10-04T14:36:31.200 回答