Группировка переменных в С#?

Я новичок в C #, недавно начал, и у меня возникла идея сделать небольшую текстовую ролевую игру, я использую Visual Studio 2017. Я хочу иметь несколько разных файлов, в том числе один, который отмечает все различные типы враги в игре, какой урон наносит одна из их атак, их защита и сколько у них здоровья. У меня пока так:

        string rat;
        int enemyHealth;
        int enemyAtkDmg;
        int enemyDef;

Но потом я начал задаваться вопросом, как я мог бы сгруппировать «веревочную крысу»; а остальные вместе, например:

Крыса - 10 здоровья, 2 урона от атаки, 0 защиты.

Любые предложения о том, как я могу это сделать? Спасибо.


person Anthony P    schedule 03.04.2017    source источник
comment
Я рекомендую изучить классы :)   -  person Gilad Green    schedule 03.04.2017
comment
Пожалуйста, ознакомьтесь с базовым учебником по C#. Хорошо, что вы начинаете с побочного проекта (это самый быстрый способ научиться), но сначала необходимо получить некоторые базовые знания.   -  person SteppingRazor    schedule 03.04.2017
comment
Я бы также порекомендовал занятия... и пошел немного дальше, чем рекомендует Саджитаран (хотя это простой подход). Создайте класс баса под названием mob или аналогичный. Затем создайте подкласс с различными типами мобов (крысы, пауки, бандиты). Используйте хорошие имена для ваших свойств классов, и это продлит вам долгий путь к хорошей организации вашего кода, облегчив его написание и понимание.   -  person Eric Burdo    schedule 03.04.2017
comment
То, что описывает Эрик, называется Наследование.   -  person PJvG    schedule 03.04.2017
comment
@энтони ты нашел ответ   -  person Sajeetharan    schedule 04.04.2017
comment
@Sajeetharan Извините за поздний ответ, я до сих пор не понял, как сделать код, который вы предложили ниже. Как вы думаете, вы могли бы объяснить это немного? снова простите.   -  person Anthony P    schedule 05.04.2017
comment
@AnthonyP вы изучали такие классы, как предложенный Гиладом? Он должен предоставить вам более чем достаточно информации о том, как заставить работать решение Саджитарана...   -  person PJvG    schedule 05.04.2017


Ответы (2)


Вы можете создать класс с произвольным именем и добавить его как свойства внутри

 public class MyClass
    {
        public string rat { get; set; }
        public int enemyHealth { get; set; }
        public int enemyAtkDmg { get; set; }
        public int enemyDef { get; set; }           

    }

тогда ,

        MyClass myObj = new MyClass();
        myObj.rat = "sample";
        myObj.enemyAtkDmg = 10;
        ....
        etc
person Sajeetharan    schedule 03.04.2017
comment
Хотя это действительно отвечает на вопрос, я не думаю, что string rat действительно то, что я ожидал бы от этого класса. Я думаю, вы слишком буквально понимаете этот вопрос (да, все заявленные поля сгруппированы, но действительно ли это лучшее решение проблемы?). Этот класс должен быть своего рода врагом, мобом или монстром. Конечно, вы можете назвать его MyClass и включить string rat, но это не очень описательно и/или полезно. Лучше вызовите класс Enemy и имя свойства string или удалите свойство string, если оно не используется. - person PJvG; 03.04.2017

Кроме того, вы можете использовать структуры

Тип структуры — это тип значения, который обычно используется для инкапсуляции небольших групп связанных переменных, таких как координаты прямоугольника или характеристики предмета в инвентаре.

public struct Rat
{
    public int enemyHealth;
    public int enemyAtkDmg;
    public int enemyDef
}

Вот «обсуждение» о структурах и классах.

person Ello    schedule 03.04.2017
comment
Структуры - это PITA, если вам нужно изменить значения, и я почему-то чувствую, что враг/крыса изменит свою позицию/здоровье/урон/и т. д. Структура вероятно не то, что нужно OP. - person Default; 03.04.2017
comment
структуры будут проблематичными при работе с событиями из-за их неизменной природы. Не лучшее предложение в этом случае. - person Cleptus; 03.04.2017
comment
ну, согласно вопросу, он изначально присвоил значения один раз, например, конфиг, поэтому неизменный здесь не проблема, но да, классы были бы лучше, поэтому есть дополнительно, так как он все еще учится и хочет знать, возможно, об обоих - person Ello; 03.04.2017