2016-04-25 40 views
-1

我正在做一個非常簡單的多選控制檯遊戲。我創建了一個使用枚舉的有限狀態機,如果其他狀態在while循環中(while game = true)。如何在C#中的類之外更改變量?

問題是,在class.level1(包含關卡信息)內部,它需要將myState更改爲主程序中的新狀態,但它不會影響它。任何想法如何做到這一點?我很難過。

 var game = true; 
     while (game = true) 
     { 

      State myState = State.intro; 
      //first level 
      if (myState == State.intro) 
      { 
       level.Intro(); 
      } 
      else 
      { 
       if (myState == State.contact1) 
       { 
        Console.WriteLine("Wroked"); 
       } 
關卡類

 Console.WriteLine(name + " What are you doing, I need your help!"); 
     Thread.Sleep(1000); 
     Console.WriteLine("\nA. Who is this? \nB. How are you doing this?\nC. How do you know my name?"); 
     var res = Console.ReadLine(); 
     char response = res[0]; 
     switch (response) 
     { 
      case 'a': 
       State myState = State.contact1; 
       break; 
      case 'b': 
       Console.WriteLine("\nright"); 
       break; 
      case 'c': 
       Console.WriteLine("\nleft"); 
       break; 

     } 

有明顯比這更多的代碼,但是這是重要的組成部分。你可以看到完整的代碼在這裏: https://gist.github.com/MajorMojo/700936c02f1430de44b4559f0579917d https://gist.github.com/MajorMojo/5bba21cb977a4b768029e765a0d74886

回答

0

您可能需要一個遊戲對象傳遞到一級類或做一些靜態變量。

我會做第一個,並有一個由main創建的GameEngine類,並維護遊戲的整體狀態。它可以有一個SetState方法(或State屬性)。在創建它時將GameEngine對象傳遞到關卡中。

+0

完美,謝謝! – MajorMoj0

0

我會建議從編程教程的基本介紹開始。 C#之一不是太糟糕:https://msdn.microsoft.com/en-us/library/aa664628(v=vs.71).aspx

你錯過了很多基本概念。通過完成一個完整的教程,而不是通過在這裏提出個別問題,您可以更容易地選擇它們。

+0

我目前正在學習一門課程,並且正在建立這個課程來把我學會使用的東西。這個問題不是我以前必須處理的。 – MajorMoj0