processing - 玩家无法在瓷砖上重踩的网格拼图 - 处理
问题描述
与 Pokemon Sapphire/Ruby/Emerald 中的 Sootopolis Gym 的概念相同,即一旦踩到一块瓷砖,它就会改变颜色,如果所有的瓷砖都被踩到,你就通关了;但是,如果您的角色再次踩到它,则瓷砖会破裂并且级别会重置。
这是我的级别功能中的内容:
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;
}
under 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;
}
}
}
但只要最后一个瓦片(最右下角)被踩到,它就会返回真,不管它是第一个还是最后一个。
我已经在这 3 天尝试了不同的方法,但没有任何效果。任何帮助将不胜感激。
编辑:因为设法通过为每个图块设置一个计数器来解决这部分问题,并在 keypressed() 中实现 if(stepped){ trigger reset}。
解决方案
试试这个概念:在真实的情况下启动所有块,因为玩家仍然可以踩到它们。将每个块的计数器设置为零。如果玩家踩到块并且计数器为零,则该块的计数器上升到一。然后当玩家离开方块并且计数器为 1 时,计数器变为 2 并将方块设置为 false,这意味着如果玩家再次踩到该方块,关卡将重置。当级别重置时,将所有块重置为真并将所有计数器设置为零。为了击败游戏,检查是否每个块都设置为 false。
推荐阅读
- django - Django 导入导出外键
- javascript - 如何跟踪 Wikipedia 页面中以文本格式给出的 DOB 并断言一个 DOB 大于另一个使用 cypress 的 DOB?学习柏树
- django - 在 docker 容器中编辑 Django 包
- arrays - 在 MongoDB 中复制键和值
- java - 添加SplashScreen后,应用程序崩溃
- python - 熊猫 1 分钟时间序列变成 10 分钟平均每 15 分钟
- python - Blender 找不到 python 模块'openpyxl'
- python - 如何将部分 Excel 文件名存储在 Python 整数变量中
- matplotlib - 绘制和保存多个图表时撤消 plt.gcf().subplots_adjust
- javascript - 从文本文件中收集数据并解析收集的数据以创建对象数组