2017-08-11 115 views
1

我是編程新手,所以我正在嘗試爲編程練習製作一個非常簡單的RPG戰鬥模擬器,並且在創建角色時遇到了問題。當我在主程序中製作角色時,他們可以正常工作,我可以按照自己的想法與他們進行交互。它使主程序看起來很醜陋,但這樣我的想法是,ID都爲我創造的所有字符的方法:創建角色的方法

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); 
    } 
} 

但是我不能使用它們。例如,如果我嘗試使用我的攻擊方法使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 
} 

這樣做的原因是,當您奉上{ }就成了它無法訪問外內新對象。