這是我第一次編寫如此複雜的代碼,我偶然發現了一個問題。 所以,我試圖在Visual C#中使用visual studio製作一個非常基本的基於文本的RPG遊戲。 我有3種形式,直到這一點。主菜單窗體(帶有播放和退出按鈕),角色選擇窗體(一旦你點擊播放就打開)以及遊戲窗體本身。 在角色選擇表單上,提示用戶選擇角色類別(法師,戰士,流氓)。 我創建了一個公共抽象類叫做實體:在switch語句中聲明類對象
public abstract class Entity
{
#region Attributes
protected string _name;
protected int _strength, _strengthModifier,
_magic, _magicModifier,
_luck, _luckModifier,
_defense, _defenseModifier,
_health, _healthModifier;
#endregion
#region Properties
public string Name
{
get { return _name; }
protected set { _name = value; }
}
public int Strength
{
get { return _strength; }
protected set { _strength = value; }
}
public int StrengthModifier
{
get { return _strengthModifier; }
protected set { _strengthModifier = value; }
}
public int Magic
{
get { return _magic; }
protected set { _magic = value; }
}
public int MagicModifier
{
get { return _magicModifier; }
protected set { _magicModifier = value; }
}
public int Luck
{
get { return _luck; }
protected set { _luck = value; }
}
public int LuckModifier
{
get { return _luckModifier; }
protected set { _luckModifier = value; }
}
public int Defense
{
get { return _defense; }
protected set { _defense = value; }
}
public int DefenseModifier
{
get { return _defenseModifier; }
protected set { _defenseModifier = value; }
}
public int Health
{
get { return _health; }
protected set { _health = value; }
}
public int HealthModifier
{
get { return _healthModifier; }
protected set { _healthModifier = value; }
}
#endregion
#region Constructor
public Entity()
{
Name = "";
Strength = 0;
Magic = 0;
Luck = 0;
Defense = 0;
Health = 0;
}
#endregion
#region Methods
#endregion
}
然後,我創建了武士階層,年齡組和流氓類從這一個繼承。
class Mage : Entity
{
public Mage(string name) : base()
{
_name = name;
#region Stats
_strength = 0;
_strengthModifier = 0;
_magic = 10;
_magicModifier = 3;
_luck = 3;
_luckModifier = 0;
_defense = 5;
_defenseModifier = 0;
_health = 100;
_healthModifier = 0;
#endregion
}
}
現在,我在遊戲窗體上創建類對象本身。從角色選擇表格我稱之爲遊戲表格,我將玩家名稱和類別作爲參數發送。
public Game(string name, string characterClass)
{
InitializeComponent();
#region CreateCharacter
switch (characterClass)
{
case "Mage":
{
Mage player = new Mage(name); // create player
#region PrintPicture
pbPlayer.Image = Image.FromFile("C:/Users/mircea/Documents/Visual Studio 2015/Projects/RPG/Artwork/Characters/Mage.png");
pbPlayer.BackgroundImageLayout = ImageLayout.Center;
pbPlayer.Size = new Size(145, 200);
#endregion
lblName.Text = player.Name.ToString(); // show player name
txtLog.Text += "Welcome to game title, " + name + "!"; // greet log
break;
}
case "Rogue":
{
Rogue player = new Rogue(name); // create player
#region PrintPicture
pbPlayer.Image = Image.FromFile("C:/Users/mircea/Documents/Visual Studio 2015/Projects/RPG/Artwork/Characters/Rogue.bmp");
pbPlayer.BackgroundImageLayout = ImageLayout.Center;
pbPlayer.Size = new Size(145, 200);
#endregion
lblName.Text = player.Name.ToString(); // show player name
txtLog.Text += "Welcome to game title, " + name + "!"; // greet log
break;
}
case "Warrior":
{
Warrior player = new Warrior(name); // create player
#region PrintPicture
pbPlayer.Image = Image.FromFile("C:/Users/mircea/Documents/Visual Studio 2015/Projects/RPG/Artwork/Characters/Warrior.png");
pbPlayer.BackgroundImageLayout = ImageLayout.Center;
pbPlayer.Size = new Size(145, 200);
#endregion
lblName.Text = player.Name.ToString(); //show player name
txtLog.Text += "Welcome to game title, " + name + "!"; // greet log
break;
}
}
#endregion
}
現在。如果我試圖在該開關外面打電話給玩家,它不會工作。我能看到的唯一解決方案是讓代碼有三次,每次都是一次。無論如何,我肯定不會這樣。 有什麼建議嗎?
變量對於開關盒來說是本地的。一旦在開關外面,它們就會自動銷燬。如果你想在交換機外部使用它們,你需要在交換機之外聲明它們 – Steve