【发布时间】:2014-12-15 20:03:46
【问题描述】:
注意:我有点 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;
}
我知道我的代码中可能有一百万个地方可以做得更好,如果您有任何建议,我很乐意倾听,但我想问的是:
如何仅使用一个名称从每个类中获取所有值?前任。而不是像我现在做的那样,有没有办法让我可以做类似的事情:
case 1:
setValues(Lvl01.Values);
break;
这里的问题出在 setValues 方法中,一些关卡有很多我想使用的设置,但我怀疑该方法是否需要 15 个参数,我不知道该怎么做当某些关卡不使用其他关卡使用的设置时。
我应该如何更改我的代码,这样我就不必将每个值都用作参数?
【问题讨论】:
标签: c# variables parameters arguments