-2
我正在嘗試構建一個小遊戲,當您完成前一個遊戲時,它會在各個級別之間進行轉換。無法使用多種方法更新變量
// The game starts at level 1.
public int levelCounter = 1;
//When levelComplete() executes it should increase the counter by 1.
public int levelComplete()
{
if (testLevelComplete())
{
showWarning("Level Complete!");
levelCounter += 1;
return levelCounter;
}
else
{
return levelCounter;
}
}
//This method should check levelCounter for the level number and load the
//appropriate level.
public void levelChange()
{
if(levelCounter == 2)
{
setLevel(level2, 2);
}
else if(levelCounter == 3)
{
setLevel(level3, 3);
}
}
我的代碼工作,產生2級,但之後當我完成2它只是重新加載2級水平,我似乎不能增加反過去2
我的代碼全部爲在一個循環
編輯執行:對不起你們,第一次海報,wasnt真的知道如何正確地提出我的問題
我testLevelComplete()方法完美的作品,它給了我,當我完成我的水平的警告框。我認爲問題在於兩種方法和我的變量之間的範圍。
private final char[][] level1 = {
{'#', '#', '#', '#', ' ', ' ', ' ', ' ', ' ', ' '},
{'#', ' ', '.', '#', ' ', ' ', ' ', ' ', ' ', ' '},
{'#', ' ', ' ', '#', '#', '#', ' ', ' ', ' ', ' '},
{'#', ' ', '@', ' ', ' ', '#', ' ', ' ', ' ', ' '},
{'#', ' ', ' ', '$', ' ', '#', ' ', ' ', ' ', ' '},
{'#', ' ', ' ', '#', '#', '#', ' ', ' ', ' ', ' '},
{'#', '#', '#', '#', ' ', ' ', ' ', ' ', ' ', ' '}
};
private final char[][] level2 = {
{'#', '#', '#', '#', '#', ' ', ' ', ' ', ' '},
{'#', '@', ' ', ' ', '#', ' ', ' ', ' ', ' '},
{'#', ' ', '$', '$', '#', ' ', '#', '#', '#'},
{'#', ' ', '$', ' ', '#', ' ', '#', '.', '#'},
{'#', '#', '#', ' ', '#', '#', '#', '.', '#'},
{' ', '#', '#', ' ', ' ', ' ', ' ', '.', '#'},
{' ', '#', ' ', ' ', ' ', '#', ' ', ' ', '#'},
{' ', '#', ' ', ' ', ' ', '#', '#', '#', '#'},
{' ', '#', '#', '#', '#', '#', ' ', ' ', ' '},
};
private final char[][] level3 = {
{'#', '#', '#', '#', '#', '#', ' '},
{'#', ' ', ' ', ' ', ' ', '#', ' '},
{'#', ' ', '#', '@', ' ', '#', ' '},
{'#', ' ', '$', '*', ' ', '#', ' '},
{'#', ' ', '.', '*', ' ', '#', ' '},
{'#', ' ', ' ', ' ', ' ', '#', ' '},
{'#', '#', '#', '#', '#', '#', ' '},
};
//This executes repeatedly
public void act()
{
direction();
levelComplete();
levelChange();
}
public void setLevel(char[][] level, int levelNum)
{
ClaraWorld nextLevel = new ClaraWorld(level, levelNum);
Greenfoot.setWorld(nextLevel);
}
public int levelCounter = 1;
public void levelChange()
{
if(levelCounter == 2)
{
setLevel(level2, 2);
}
else if(levelCounter == 3)
{
setLevel(level3, 3);
}
}
public int levelComplete()
{
if (testLevelComplete())
{
showWarning("Level Complete!");
levelCounter += 1;
return levelCounter;
}
else
{
return levelCounter;
}
}
方向()方法工作正常,它只是控制我的性格
的行爲表明,'testLevelComplete()'第一級之後返回false,所以你永遠不會遞增'levelCounter'一次。 – MadConan
看起來你在完成一個關卡時調用'levelComplete()'。在這種情況下,如果級別不增加,則表示您的'testLevelComplete()'方法返回false。您是否在任何地方看到「Level Complete!」警告?編輯你的問題,並添加它的'代碼,如果是這種情況,你無法弄清楚它爲什麼返回'false' –
'testLevelComplete()'做什麼? – vikingsteve