Bases de la POO : Héritage

Apprentissage des principes de la programmation orientée objet.

Encapsulation, héritage, abstraction et polymorphisme.

Exemple d’héritage:

namespace Heritage
{
    class Program
    {
        static void Main(string[] args)
        {
            CharacterClass newCharacter = new CharacterClass();
            
        }
    }
}

namespace Heritage
{
    public abstract class Entity
    {
        protected int strength;
        protected int dexterity;
        protected int willpower;
        protected int healthPoints;
        protected string name;
        protected string classType;
    }
}

namespace Heritage
{
    public class Character : Entity
    {
        private int level;
        private int experience;

        public Character()
        {
            classType = ClassName();
            level = 1;
            experience = 0;
            name = CharacterName();
            strength = CharacterStrength();
            dexterity = CharacterDexterity();
            willpower = CharacterWillpower();
            healthPoints = 5;
            //Console.WriteLine(Stats());
        }

        public static string CharacterName()
        {
            var random = new Random();

            var firstName = new List<string> { "Gordon", "John", "Kaneda", "François"};
            var lastName = new List<string> { "Freeman", "Carter", "Shotaro", "Deschamps"};

            int index1 = random.Next(firstName.Count);
            int index2 = random.Next(lastName.Count);

            string name = firstName[index1] + " " + lastName[index2];
            return name;
        }

        public static int CharacterStrength()
        {
            var random = new Random();
            int strength = random.Next(1, 4);
            return strength;
        }

        public static int CharacterDexterity()
        {
            var random = new Random();
            int dexterity = random.Next(1, 4);
            return dexterity;
        }

        public static int CharacterWillpower()
        {
            var random = new Random();
            int willpower = random.Next(1, 4);
            return willpower;
        }

        private string ClassName()
        {
            var random = new Random();
            var classes = new List<string> { "Wizard", "Thief", "Fighter" };
            int index = random.Next(classes.Count);
            string classType = classes[index];
            return classType;
        }

        public string Stats()
        {
            return $"Name: {name}\n" +
                   $"Class: {classType}\n" +
                   $"Level: {level}\n" +
                   $"XP: {experience}\n" +
                   $"STR: {strength}\n" +
                   $"DEX: {dexterity}\n" +
                   $"WIL: {willpower}\n" +
                   $"HP: {healthPoints}\n";
        }
    }
}

namespace Heritage
{
    public class CharacterClass : Character
    {
        public CharacterClass()
        {
            switch (classType)
            {
                case "Wizard":
                    willpower += 5;
                    break;
                case "Thief":
                    dexterity += 4;
                    healthPoints += 1;
                    break;
                case "Fighter":
                    strength += 3;
                    healthPoints += 3;
                    break;
            }
            Console.WriteLine(Stats());
        }
    }
}

Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *