我有一个用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(该函数可以处理为了你)。