简体   繁体   中英

Passing data into constructor class

I am create a console application that can create a Character, modify a character, as well as equip a weapon and display user enter character data. My first question is. How do I go about capturing my users entries and passing those values to my constructor. I have a character class created and also created my constructor variables. I've also included getters and setters in my character class. To add, how would I go about equipping a weapon to this character?

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

//My Character Class

    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;

I'm assuming that your code is in C#, if so you could change your player class to use properties instead of getters/setters. Changing from getter/setters to properties is not something that's required

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

To get your program class to create a character your could add the following modifications to your code. I've tried to explain as much as I can in the code snippet but feel free to comment should you have a question

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM