我创建了一个控制台应用程序,可以创建角色,修改角色,装备武器并显示用户输入角色数据。我的第一个问题是。如何捕获用户条目并将这些值传递给构造函数。我创建了一个字符类,并创建了我的构造函数变量。我还在我的角色课程中加入了getter和setter。要添加,我将如何为这个角色配备武器?
static void CreateCharacter()
{
//Declare my variables
string charName;
int charBaseAttack;
int charHealth;
int charAge;
int charSaiyanLevel;
//Ask for user input
Console.Write("Please enter the name of your character");
charName = Console.ReadLine();
Console.Write("Thanks for that, now enter a Base Attack level please: ");
charBaseAttack = Convert.ToInt32(Console.ReadLine());
Console.Write("Thanks for that, now enter a Health level please: ");
charHealth = Convert.ToInt32(Console.ReadLine());
Console.Write("Thanks for that, now how old is your character: ");
charAge = Convert.ToInt32(Console.ReadLine());
Console.Write("Thanks for that, his or her Super Saiyan level please: ");
charSaiyanLevel = Convert.ToInt32(Console.ReadLine());
//Instantiate my person
Character userCharacter = new Character(charName, charBaseAttack, charHealth, charAge, charSaiyanLevel);
//我的角色类
private string mName;
private int mBaseAttack;
private int mHealth;
private int mAge;
private int mSaiyanLevel;
public Character(string _mName, int _mBaseAttack, int _mHealth, int _mAge, int _mSaiyanLevel)
{
//Initializing my member varaibles
mName = _mName;
mBaseAttack = _mBaseAttack;
mHealth = _mHealth;
mAge = _mAge;
mSaiyanLevel = _mSaiyanLevel;
}
public Character()
{
Character userCharacter = new Character();
}
public string getName()
{
return mName;
}
public int getBaseAttack()
{
return mBaseAttack;
}
public int getHealth()
{
return mHealth;
}
public int getAge()
{
return mAge;
}
public int getSaiyanLevel()
{
return mSaiyanLevel;
}
public void setName(string _mName)
{
mName = _mName;
}
public void setBaseAttack(int _mBaseAttack)
{
mBaseAttack = _mBaseAttack;
}
public void setHealth(int _mHealth)
{
mHealth = _mHealth;
}
public void setAge(int _mAge)
{
mAge = _mAge;
}
public void setSaiyanLevel(int _SaiyanLevel)
{
mSaiyanLevel = _SaiyanLevel;
答案 0 :(得分:0)
我假设您的代码在C#中,如果是这样,您可以更改您的播放器类以使用属性而不是getter / setter。从getter / setter更改为属性不是必需的
public class Character
{
public string Name { get; set; }
public int BaseAttack { get; set; }
public int Health { get; set; }
public int Age { get; set; }
public int SaiyanLevel { get; set; }
public Character(string _mName, int _mBaseAttack, int _mHealth, int _mAge, int _mSaiyanLevel)
{
//Initializing my member varaibles
Name = _mName;
BaseAttack = _mBaseAttack;
Health = _mHealth;
Age = _mAge;
SaiyanLevel = _mSaiyanLevel;
}
// The default constructor is just initializing a local variable userCharacter
// to a new Character() that will be destroyed once it goes out of scope.
// If you need some default initialization
// you could do:
public Character() : this(string.Empty, -1, -1, -1, -1) { }
// I've initialized all int fields to -1 since it's a value
// that none of these fields (hopefully) should ever have
// Original default constructor
//public Character()
//{
// Character userCharacter = new Character();
// Once the code reaches the } below, userCharacter will
// be destroyed
//}
// Overrode the ToString method so that you can print
// the characters to the console
public override string ToString()
{
return string.Concat("Character Name: ", Name, " Base Attack: ", BaseAttack, " Health: ", Health, " Age: ", Age, " Saiyan Level: ", SaiyanLevel);
}
}
要让您的程序类创建一个字符,您可以在代码中添加以下修改。我已尝试在代码段中尽可能多地解释,但如果您有问题,请随时发表评论
class Program
{
// If you want to use CreateCharacter() to return a newly created character,
// You could have CreateCharacter() return a Character
public static Character CreateCharacter()
{
//Declare my variables
string charName;
int charBaseAttack;
int charHealth;
int charAge;
int charSaiyanLevel;
//Ask for user input
Console.Write("Please enter the name of your character: ");
charName = Console.ReadLine();
Console.Write("Thanks for that, now enter a Base Attack level please: ");
charBaseAttack = Convert.ToInt32(Console.ReadLine());
Console.Write("Thanks for that, now enter a Health level please: ");
charHealth = Convert.ToInt32(Console.ReadLine());
Console.Write("Thanks for that, now how old is your character: ");
charAge = Convert.ToInt32(Console.ReadLine());
Console.Write("Thanks for that, his or her Super Saiyan level please: ");
charSaiyanLevel = Convert.ToInt32(Console.ReadLine());
//Instantiate my person
return new Character(charName, charBaseAttack, charHealth, charAge, charSaiyanLevel);
}
public static void Main(string[] Args)
{
// Two ways to instantiate a Character
// 1. Change the return type of CreateCharacter() to return a Character object instead of void
// 2. Copy & past the contents of CreateCharacter() into main
//Declare my variables
string charName;
int charBaseAttack;
int charHealth;
int charAge;
int charSaiyanLevel;
//Ask for user input
Console.Write("Please enter the name of your character: ");
charName = Console.ReadLine();
Console.Write("Thanks for that, now enter a Base Attack level please: ");
charBaseAttack = Convert.ToInt32(Console.ReadLine());
Console.Write("Thanks for that, now enter a Health level please: ");
charHealth = Convert.ToInt32(Console.ReadLine());
Console.Write("Thanks for that, now how old is your character: ");
charAge = Convert.ToInt32(Console.ReadLine());
Console.Write("Thanks for that, his or her Super Saiyan level please: ");
charSaiyanLevel = Convert.ToInt32(Console.ReadLine());
//Instantiate my person
Character userCharacter1 = new Character(charName, charBaseAttack, charHealth, charAge, charSaiyanLevel);
System.Console.WriteLine();
Character userCharacter2 = CreateCharacter();
// Print both characters to the console
System.Console.WriteLine();
System.Console.WriteLine("First character stats:");
System.Console.WriteLine(userCharacter1.ToString());
System.Console.WriteLine();
System.Console.WriteLine("Second character stats:");
System.Console.WriteLine(userCharacter2.ToString());
}
}