我正在创建一个基于网格的迷宫游戏,目前正在使用 10 x 10 2d 整数数组来处理迷宫绘制和简单的碰撞检测。
我的问题是,当使用嵌套 for 循环绘制网格时,它会按列绘制网格,并且绘制的迷宫会翻转。例如
int [][] map= {
{0,0,0,0,0,0,0,0,0,0,},
{0,0,0,0,0,0,0,0,0,0,},
{2,1,1,1,0,0,0,0,0,0,},
{0,0,0,1,0,0,0,1,1,2,},
{0,0,0,1,0,0,0,1,0,0,},
{0,0,0,1,0,0,0,1,0,0,},
{0,0,0,1,1,1,1,1,0,0,},
{0,0,0,0,0,0,0,0,0,0,},
{0,0,0,0,0,0,0,0,0,0,},
{0,0,0,0,0,0,0,0,0,0,}
};
for(int i=0;i<map.length;i++){
for(int j=0;j<map.length[0];j++){
switch(map[i][j]){
case 0:drawRect(i,j,width,height,blue);
break;
case 1:drawRect(i,j,width,height,white);
break;
case 2: drawRect(i,j,width,height,red);
break;
}
}
}
画这个
而不是
我目前解决这个问题的方法是翻转 i 和 j 值。但是有没有办法按照写出的方式绘制二维数组,或者甚至有更好的方法来创建仍然非常简单的网格迷宫?
最佳答案
它正在横向绘制你的 map ,因为你已经这样读取了 i/j 值。该循环获取左上角的值并在绘制时向下读取,然后进入下一列并再次向下绘制。这就是为什么翻转 i/j 可以修复它的绘制方式。
关于java - 使用具有相同布局的二维数组绘制迷宫,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16105252/