2013-10-05 17 views
0

我一直在編寫一個文本冒險遊戲,隨機場景之一就是在哪裏可以遇見一隻神奇寶貝並與之戰鬥。有一些選項(如查看庫存),需要你回到菜單(打架,跑步,物品,poké)。例如,如果您輸入錯誤的命令,那麼您應該回到菜單。然而,在該方法中,唯一的參數是hasEncountered,並且觸發,則隨機場景時,它的默認(布爾)假,這意味着在if語句中聲明字符串並在其外部使用它C#

 if (hasEncountered == false) 
     { 
      Console.WriteLine("While travelling you go through a patch of tall grass.."); 
      Thread.Sleep(2000); 
      Console.WriteLine("*pokemon music*"); 
      Thread.Sleep(1500); 
      Console.Clear(); 
      Console.WriteLine("You encounter a {0}!", pokemon1); 
     } 

被觸發。每當用戶輸入錯誤的命令時,都會調用該方法。我不希望用戶再次看到這個部分,所以我這樣做:

 else 
     { 
      Console.WriteLine(" < {0} >", pokemon1); 
     } 

然而,在if statement字符串「pokemon1」是未聲明的,雖然我的方法開始宣佈它。

public void ConScen3(bool hasEncountered) 
    { 
     string pokemon1; 
     TextAdventure1.ConjoinedScenarios.ConjoinedScenario conScen = new TextAdventure1.ConjoinedScenarios.ConjoinedScenario(); 
     if (hasEncountered == false) 
     { 
      Console.WriteLine("While travelling you go through a patch of tall grass.."); 
      Thread.Sleep(2000); 
      Console.WriteLine("*pokemon music*"); 
      Thread.Sleep(1500); 
      Console.Clear(); 
      Console.WriteLine("You encounter a {0}!", pokemon1); 
     } 
     else 
     { 
      Console.WriteLine(" < {0} >", pokemon1); 
     } 

如果我嘗試在if語句聲明pokemon1,它說,它已經宣佈。但是,如果我在開始時刪除了pokemon1字符串,則其餘代碼會抱怨它未聲明。有沒有什麼辦法解決這一問題?

+2

這不是抱怨它的未申報的,它的抱怨,它沒有分配的值。 – Silvermind

回答

1

聲明變量(這是string pokemon1;一樣),但你不分配值給它。

你必須給變量賦值,如pokemon1 = "Foo";

0

您需要分配一個值pokemon1:

public void ConScen3(bool hasEncountered) 
    { 
     string pokemon1 = "pikachu"; 
     TextAdventure1.ConjoinedScenarios.ConjoinedScenario conScen = new TextAdventure1.ConjoinedScenarios.ConjoinedScenario(); 
     if (hasEncountered == false) 
     { 
      Console.WriteLine("While travelling you go through a patch of tall grass.."); 
      Thread.Sleep(2000); 
      Console.WriteLine("*pokemon music*"); 
      Thread.Sleep(1500); 
      Console.Clear(); 
      Console.WriteLine("You encounter a {0}!", pokemon1); 
     } 
     else 
     { 
      Console.WriteLine(" < {0} >", pokemon1); 
     } 
    } 
相關問題