与Pokemon Sapphire / Ruby / Emerald中的Sootopolis健身房的概念相同,即,一旦踩下瓷砖,它就会改变颜色,如果所有瓷砖都踩到了,您就可以清除难题;但是,如果您的角色再次踩到它,则磁贴会破裂,并且级别会重置。
这是我的关卡功能中的内容:
for (int i = 0; i < icePuzzle1.length; i++) {
for (int j = 0; j < icePuzzle1.length; j++) {
//Sets colour to cyan
fill(0, 255, 255);
//Changes corresponding boolean when stepped on
if (characterPosX == i*rectWidth && characterPosY == j*rectWidth) {
stepped[i][j] = true;
}
//Changes colour if stepped on
if (stepped[i][j] == true) {
fill(255);
}
//Tile details
stroke(100, 100, 100, 30);
rect(i*rectWidth, j*rectWidth, rectWidth, rectWidth);
}
}
我尝试添加此内容
if (characterPosX == i*rectWidth && characterPosY == j*rectWidth){
characterPosX = 0;
characterPosY = 0;
}
在if (stepped[i][j] == true)
下,这使我的角色在走到迷宫的瓷砖上时立即传送到起点。
我如何更改它,以便只要他不踩踏台阶砖就可以继续穿过迷宫?
编辑:很难弄清楚如何检查所有图块是否也都被踩过。尝试过使用
boolean allValuesInArrayAreTrue = true;
boolean [][] sth = {{false,false,false},{false,false,true}};
for(int i = 0; i < sth.length; i++) {
for (int k = 0; k < sth[i].length; k++) {
if(!sth[i][k]) {
allValuesInArrayAreTrue = false;
}
}
}
,但只要踩到最后一个图块(最右下角),它就会返回true,无论它是踩在第一个还是最后一个上。
我已经尝试了3天,尝试了不同的方法,但是没有任何效果。任何帮助将不胜感激。
编辑:由于设法通过为每个图块设置一个计数器并在keypressed()中实现if(stepped){trigger reset}来弄清这部分。
答案 0 :(得分:0)
尝试以下概念: 将所有块都按true开始,因为在播放器中仍可以踩到它们。 将每个块的计数器设置为零。 如果玩家踩到方块且计数器为零,则该方块的计数器将增加为1。 然后,当玩家离开该块且计数器为1时,计数器将移至2并将该块设置为false,这意味着如果玩家再次踏上该块,则级别将重置。 重置级别时,将所有块重置为true,并将所有计数器设置为零。要击败游戏,请检查是否每个区块都设置为false。