我创建了一个 2D 迷宫,它由 2 组布尔数组组成,指的是我的迷宫的垂直和水平墙。这个迷宫目前是 12 x 12,但我只想显示 5 x 5。
有没有办法将迷宫缩放到用户所在位置的 5 x 5 圆周,然后在每次移动时简单地显示下一个块,因此只显示 5 x 5。
理想情况下,我想坚持把整个东西画出来,然后简单地进行某种鸟瞰视图缩放(这将提高可用性并通常加快应用程序的速度)。
编辑 下面是我目前用来绘制迷宫的代码。但是,当我移动用户圈时,下面的代码似乎没有绘制正确的 v 和 hLines。
public void onDraw(Canvas canvas)
{
canvas.drawRect(0, 0, width, height, background);
mazeSizeX = 5 + maze.getCurrentX();
mazeSizeY = 5 + maze.getCurrentY();
for(int i = maze.getCurrentX(); i < mazeSizeX; i++)
{
for(int j = maze.getCurrentY(); j < mazeSizeY; j++){
float x = j * totalCellWidth;
float y = i * totalCellHeight;
if(j < mazeSizeX -1 && vLines[i][j]) {
//we'll draw a vertical line
canvas.drawLine(x + cellWidth, //start X
y, //start Y
x + cellWidth, //stop X
y + cellHeight, //stop Y
line);
}
if(i < mazeSizeY -1 && hLines[i][j]) {
//we'll draw a horizontal line
canvas.drawLine(x, //startX
y + cellHeight, //startY
x + cellWidth, //stopX
y + cellHeight, //stopY
line);
}
}
}
}
注意 - mazeSizeX 和 Y 最初设置为 5。任何关于我哪里出错的进一步指导将不胜感激。
编辑 2:请参阅下图以指示用户可能已采取的 3 个不同步骤来帮助进一步解释我遇到的问题。第一个图像是起点,并且已经按原样绘制,但是当我开始移动用户圆圈时,线条周围的绘制不正确。
最后,请看下面我用来绘制位智墙的当前布尔数组:
boolean[][] vLines = new boolean[][]{
{true ,false,false,false,true ,false,false},
{true ,false,false,true ,false,true ,true },
{false,true ,false,false,true ,false,false},
{false,true ,true ,false,false,false,true },
{true ,false,false,false,true ,true ,false},
{false,true ,false,false,true ,false,false},
{false,true ,true ,true ,true ,true ,false},
{false,false,false,true ,false,false,false}
};
boolean[][] hLines = new boolean[][]{
{false,false,true ,true ,false,false,true ,false},
{false,false,true ,true ,false,true ,false,false},
{true ,true ,false,true ,true ,false,true ,true },
{false,false,true ,false,true ,true ,false,false},
{false,true ,true ,true ,true ,false,true ,true },
{true ,false,false,true ,false,false,true ,false},
{false,true ,false,false,false,true ,false,true }
};
提前致谢