玩家无法踩砖的网格拼图-处理

时间:2018-10-16 12:51:47

标签: processing

与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}来弄清这部分。

1 个答案:

答案 0 :(得分:0)

尝试以下概念: 将所有块都按true开始,因为在播放器中仍可以踩到它们。 将每个块的计数器设置为零。 如果玩家踩到方块且计数器为零,则该方块的计数器将增加为1。 然后,当玩家离开该块且计数器为1时,计数器将移至2并将该块设置为false,这意味着如果玩家再次踏上该块,则级别将重置。 重置级别时,将所有块重置为true,并将所有计数器设置为零。要击败游戏,请检查是否每个区块都设置为false。