2016-04-25 12 views
-1

私は非常に単純な多肢選択コンソールゲームを作っています。私はenumを使って有限状態機械を作りました。それ以外の場合はすべてwhileループ内にあります(game = trueの間)。C#でクラス外の変数を変更するにはどうすればよいですか?

問題は、クラスレベル。レベル1(レベル情報を含む)内で、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

レベルのクラスにゲームオブジェクトを渡すか、いくつかの静的変数を作成する必要があります:あなたはここに完全なコードを見ることができます。

私は最初のゲームを行い、メインによって作成されたGameEngineクラスを持ち、ゲームの全体的な状態を維持します。 SetStateメソッド(またはStateプロパティ)を持つことができます。 GameEngineオブジェクトを作成するときにレベルにGameEngineオブジェクトを渡します。

+0

完璧、ありがとうございます! – MajorMoj0

0

プログラミングチュートリアルの基本的な紹介から始めることをお勧めします。 C#の方があまりに悪くはありません:https://msdn.microsoft.com/en-us/library/aa664628(v=vs.71).aspx

あなたは多くの基本的な概念を欠いています。完全なチュートリアルを試してみると、ここで個々の質問をするよりもはるかに簡単です。

+0

私は現在コースをやっていて、これを使って私が使ったことを学びました。この1つの問題は、私が以前に扱っていたことではありません。 – MajorMoj0

関連する問題