2017-08-11 3 views
1

プログラミングに慣れていないので、プログラミングの練習に非常に単純なRPGバトルシミュレータを作ろうとしており、文字を作成するときに問題が発生しました。メインプログラムで自分のキャラクターを作っても、うまく動作します。私はそれらを使用することはできませんしかし文字を作成するメソッド

class Create 
{ 
    public static void Characters() 
    { 
     Hero Dash = new Hero("Dash", 3, 10); 

     Bandit Keith = new Bandit("Keith", 1, 5); 
     Bandit Leader = new Bandit("Bandit Leader", 2, 8); 

     Knight Leeroy = new Knight("Leeroy" , 3, 12); 
     Knight Seth = new Knight("Seth", 5, 15); 

     Dragon BlueDrag = new Dragon("Blue Dragon", 7, 20, 2); 
     Dragon RedDrag = new Dragon("Red Dragon", 8, 20, 3); 
     Dragon BlackDrag = new Dragon("BlackDrag", 10, 25, 4); 
    } 
} 

:それはので、私の考えはidは私のためにすべての文字を作成する方法を持っているということでしたが、メインプログラムは非常に醜いに見えるのです。たとえば、攻撃方法を使用してDash攻撃を試みると、Dashは現在のコンテキストに存在しないと表示されます。なぜこれが起こるのですか?ありがとうございました。これは本当にばかな質問であれば申し訳ありません。

+3

可変スコープについていくつか検索します。 –

答えて

2

下記のコードを試してください。おそらく、文字ごとに変数を作成するのではなく、文字列名で文字を検索できる辞書を作成する方がよいでしょう。

 static void Main(string[] args) 
     { 
      Create.Characters(); 
      Dragon BlackDrag = Create.BlackDrag; 
     } 
    } 
    public class Create 
    { 
     public static Hero Dash { get; set; } 

     public static Bandit Keith { get; set; } 
     public static Bandit Leader { get; set; } 

     public static Knight Leeroy { get; set; } 
     public static Knight Seth { get; set; } 

     public static Dragon BlueDrag { get; set; } 
     public static Dragon RedDrag { get; set; } 
     public static Dragon BlackDrag { get; set; } 

     public static void Characters() 
     { 
      Dash = new Hero("Dash", 3, 10); 

      Keith = new Bandit("Keith", 1, 5); 
      Leader = new Bandit("Bandit Leader", 2, 8); 

      Leeroy = new Knight("Leeroy", 3, 12); 
      Seth = new Knight("Seth", 5, 15); 

      BlueDrag = new Dragon("Blue Dragon", 7, 20, 2); 
      RedDrag = new Dragon("Red Dragon", 8, 20, 3); 
      BlackDrag = new Dragon("BlackDrag", 10, 25, 4); 
     } 
    } 
2

あなたのスコープ/コンテキスト{ }のため、簡単に説明できません。

例を見てみましょう:

void Main() 
{ 
    string one = "Hello"; 

    { 
     string two = " World"; 
    } 

    Console.WriteLine(one + two); // will not work 
} 

あなたはそれの外にアクセスできなくなり{ }内の新しいオブジェクトを囲むときに、この理由はあります。

関連する問題