java如何将游戏升级到下一个级别
在我的项目中,我正在设计一个有三个关卡的游戏,每个关卡都以数组的形式排列。完成每一关后,游戏将自动进入下一关。我现在让它从第1级升级到第2级,但在完成第2级后,它只是再次加载第2级。我的老师说我应该使用一个变量来确定我当前的等级,并在我进入下一个等级时递增,我正在这样做,所以我不确定为什么游戏会停留在等级2上。他提到我应该使用一个静态变量,但我不明白这与我目前所做的有什么不同
{
private char[][] level1 = {
{'#', '#', '#', '#', ' ', ' ', ' ', ' ', ' ', ' '},
{'#', ' ', '|', '#', ' ', ' ', ' ', ' ', ' ', ' '},
{'#', ' ', ' ', '#', '#', '#', ' ', ' ', ' ', ' '},
{'#', ' ', '@', ' ', ' ', '#', ' ', ' ', ' ', ' '},
{'#', ' ', ' ', '$', ' ', '#', ' ', ' ', ' ', ' '},
{'#', ' ', ' ', '#', '#', '#', ' ', ' ', ' ', ' '},
{'#', '#', '#', '#', ' ', ' ', ' ', ' ', ' ', ' '}
};
private char[][] level2 = {
{'#', '#', '#', '#', '#', ' ', ' ', ' ', ' '},
{'#', '@', ' ', ' ', '#', ' ', ' ', ' ', ' '},
{'#', ' ', '$', '$', '#', ' ', '#', '#', '#'},
{'#', ' ', '$', ' ', '#', ' ', '#', '|', '#'},
{'#', '#', '#', ' ', '#', '#', '#', '|', '#'},
{' ', '#', '#', ' ', ' ', ' ', ' ', '|', '#'},
{' ', '#', ' ', ' ', ' ', '#', ' ', ' ', '#'},
{' ', '#', ' ', ' ', ' ', '#', '#', '#', '#'},
{' ', '#', '#', '#', '#', '#', ' ', ' ', ' '},
};
private char[][] level3 = {
{'#', '#', '#', '#', '#', '#', ' '},
{'#', ' ', ' ', ' ', ' ', '#', ' '},
{'#', ' ', '#', '@', ' ', '#', ' '},
{'#', ' ', '$', '*', ' ', '#', ' '},
{'#', ' ', '|', '*', ' ', '#', ' '},
{'#', ' ', ' ', ' ', ' ', '#', ' '},
{'#', '#', '#', '#', '#', '#', ' '},
};
public void act() {
\\game code here
if (testLevelComplete() == true) {
levelComplete();
}
}
public void levelComplete()
{
int currentLevel = 0;
currentLevel = currentLevel + 1;
showWarning("Level Complete! Current level is " + currentLevel);
if (currentLevel == 1) {
loadLevel(level1);
} else {
if (currentLevel == 2) {
loadLevel(level2);
} else {
if (currentLevel == 3) {
loadLevel(level3);
} else {
if (currentLevel > 3) {
showWarning("Level Complete! No more levels.");
}}}}
}
}```
# 1 楼答案
与大多数主流编程语言一样,变量在Java中的作用域是的。 通常,大括号
{
开始或结束一个作用域所以每次调用
levelComplete
,都从零开始由于关卡是游戏状态的一部分,因此应将其上移为游戏对象的属性。这些属性与对象的寿命一样长,例如:
# 2 楼答案
调用levelComplete方法时,变量currentLevel将再次分配给0
如果要保持变量状态,应将currentLevel变量设置为类的成员变量
# 3 楼答案
检查下一个级别时,将重新启动到0,然后重新添加1,因为
currentLevel
变量是include in method我建议你这样做:
此外,与其使用
else { if(...) }
,不如使用else if(...)