Как выбрать имя, которое должен иметь экземпляр, не создавая его напрямую? - PullRequest
0 голосов
/ 21 декабря 2018

Когда я столкнулся с этой проблемой, я пытался создать простую RPG-игру, как мне решить, что мне следует указать в аргументе функции EquipWeapon(), когда я создаю экземпляр Weapon, не назначая ему"name" / "identifier":

    public static void CreateWeapon( string name, int attack, int defense)
    {
        Weapon created_weapon = new Weapon(name, attack, defense);
        weapon_list.Add(created_weapon);
    }

Он находится внутри класса "Weapon", а внутри класса "Player" - в другом файле.

    public static void EquipWeapon(Weapon weapon)
    {
        Console.WriteLine("Stats:");
        Weapon.CompareWeaponStats(weapon, Player.equipped_weapon);
        Console.WriteLine("Are you sure you want to equip this weapon?") ;
        if (QuestionPrompt() == true)
        {
            Console.WriteLine("Equipped weapon!");
            ChangeWeapon(weapon);
        }
        else
        {
            Console.WriteLine("You will continue with the same weapon, the new one was discarded.");
        }
    }

ТакжеЕсть ли более простой способ добавить вновь созданный экземпляр в список weapon_list и получить к нему доступ с помощью «кода» или «имени» оружия?

Я новичок в C #, поэтомупожалуйста, объясните мне так, чтобы я мог понять.Я пытался найти это решение везде, но не нашел его.Если есть какой-либо пропущенный код, необходимый для решения проблемы, я опубликую его здесь, если это необходимо.

1 Ответ

0 голосов
/ 21 декабря 2018

Ребята Мне удалось обойти проблему, оснастив оружие его именем, а не его "идентификатором" (idk, как оно называется).

        public static void EquipWeapon(string weapon_name)
        {
            Weapon weapon_to_equip = new Weapon("Test Weapon", 0, 0);

            bool WeaponExists()
            {
                foreach (Weapon weapon in Weapon.weapon_list)
                {
                    if (weapon.name == weapon_name)
                    {
                        weapon_to_equip = weapon;
                        return true;
                    }
                    else
                    {
                        continue;
                    }
                }
                return false;
            }

            if (WeaponExists())
            {
                Console.WriteLine("Stats:");
                Weapon.CompareWeaponStats(weapon_to_equip, Player.equipped_weapon);
                Console.WriteLine("Are you sure you want to equip this weapon?");
                if (QuestionPrompt() == true)
                {
                    Console.WriteLine("You equipped the weapon!");
                    ChangeWeapon(weapon_to_equip);
                }
                else
                {
                    Console.WriteLine("You will continue with the same weapon, the new one was discarded.");
                }
            }
            else
            {
                Console.WriteLine("The weapon you want to equip doesn't exist!");
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...