이것은 처음으로 코드를 작성하는 데 너무 복잡하여 문제가 발생했습니다. 그래서 Visual Studio를 사용하여 시각적 인 C#에서 매우 기본적인 텍스트 기반 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
}
지금. 스위치 밖으로 플레이어를 호출하려고하면 작동하지 않습니다. 내가 볼 수있는 유일한 해결책은 각각의 경우에 한 번 코드를 3 번 사용하는 것입니다. 나는 어쨌든 1000 % 확실하지 않다. 제안 사항이 있으십니까?
변수는 스위치 케이스에 대해 로컬입니다. 스위치 외부에 있으면 자동으로 파괴됩니다. 스위치 외부에서 사용하려면 스위치 외부에서 선언해야합니다. – Steve