迷路の垂直壁と水平壁を参照して、2 セットのブール配列で構成される 2D 迷路を作成しました。この迷路は現在 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 つの異なる手順を示してください。最初の画像は開始点であり、必要に応じて描画されていますが、ユーザーの円を線の周りに移動し始めると、正しく描画されません。
最後に、Waze の壁を描画するために使用している現在のブール配列を以下に示します。
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 }
};
前もって感謝します