我有一个用Java编写的“级别”类,但是它可以是任何面向对象的语言。

在该类中,我有2个静态变量:

int ID;
int STARSREWARD;


在游戏中,玩家每次完成一个关卡,都会获得一定数量的星星,这取决于STARSREWARD的值。

例如:


对于1级,STARSREWARD = 1
对于级别2,STARSREWARD = 3
对于级别3,STARSREWARD = 2


等等

在我的代码中,只要播放器开始播放某个级别,就设置STARSREWARD的值,即当播放器仅开始播放级别1时,未设置级别10的STARSREWARD的值。但是,每个STARSREWARD值都是静态的,并且已经写入到码。

有没有一种方法可以直接计算所有级别的恒星总数?
在我的示例中为1 + 3 + 2 = 6。

最佳答案

将这些STARSREWARD值存储在数组中将是最有意义的。这将使访问每个级别STARSREWARD变得容易,并且您可以遍历数组并将所有值相加以获得所有级别的星总数。

static int[] STARSREWARDS = new int[numLevels];
STARSREWARDS[0] = 1; // level 1
STARSREWARDS[1] = 3; // level 2
STARSREWARDS[2] = 2; // level 3
// etc...


像这样访问:

// subtract 1, since the indices start at 0, and level starts at 1
STARSREWARDS[currentLevel - 1];


得到这样的总和:

int sum = 0;
for(int i = 0; i < STARSREWARDS.length; i++) {
    sum += STARSREWARDS[i];
}


附加说明:如果多次获得总和,则可以将该循环放入函数中。同样,如果可以在首次初始化原始的级别数组之后添加更多级别,则可以使用ArrayList代替Array。另外,您可以创建一个函数来根据级别获取星星数,因此您不必担心每次获取级别的星星数时都会从级别数中减去1(该函数可以处理为了你)。

07-24 20:29