Примечание: Я немного начинаю с C#.Назначить несколько значений одному объекту (?)
Я работаю над небольшой игрой, которая будет иметь кучу разных уровней. Каждый уровень имеет свой собственный класс, который содержит переменные (и другой нерелевантный код). Поскольку мне нужно передать эти значения в основной класс (моя форма), я превратил их всех в методы, которые возвращают значение, которое я хочу (поскольку я не могу придумать лучшее решение). Пример:
class Level01
{
public int Boxes() { return 3; }
public int MaxPoints() { return 46; }
public int Health() { return 63; }
public int[,] SolidBoxes()
{
int[,] position = new int[Boxes(), Boxes()];
position[1, 1] = 1;
return position;
}
}
Когда я доступ к этим значениям из моего класса формы я
int boxes;
int maxPoints;
int health;
int[,] solidBoxes;
void readLevelData() //Starts each new level
{
//Reads the correct level
switch (levelNo)
{
case 1:
setValues(Lvl01.Boxes(), Lvl01.MaxPoints(), Lvl01.Health(), Lvl01.SolidBoxes());
break;
//The same case 2:, 3: for Level02,03..
}
}
void setValues(int getBoxes, int getMaxPoints, int getHealth, int[,] getSolidBoxes)
{
boxes = getBoxes;
maxPoints = getMaxPoints;
health = getHealth;
solidBoxes = getSolidBoxes;
}
Я знаю, что там, наверное, миллион вещей в моем коде здесь, что можно сделать лучше, и я с удовольствием слушаю, если у вас есть предложения, но я хочу спросить:
Как я могу получить все значения из каждого класса, используя, возможно, только одно имя? Ex. Вместо того, чтобы делать, как я делаю сейчас, есть способ, так что я могу сделать что-то похожее на это:
case 1:
setValues(Lvl01.Values);
break;
Проблема здесь заключается в методе setValues, некоторые из уровней имеет довольно много настроек, которые я хочу но я сомневаюсь, что метод захочет взять 15 параметров, и я не уверен, что делать, когда некоторые уровни не используют настройки, используемые другими уровнями.
Как мне изменить код, поэтому мне не нужно использовать каждое значение в качестве параметра?
Просто вызывать действительно важное различие между этим и исходным кодом; методы были реорганизованы в * auto-properties *; который, безусловно, правильный путь, но изменение не может быть очевидным, если вы не обращали внимания. – BradleyDotNET
Спасибо, что позвонили. –
Спасибо. Я не уверен, как используется Словарь, поэтому я посмотрю, как это сделать. У меня есть два вопроса: 1. Не потребовалось бы, чтобы я назначил каждое значение в классе формы? 2. Что делать, если у меня есть уровень, который не используется, скажем, MaxPoints. – Jokuc