2 回答

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊
所以這真的像一個(gè)充洪問(wèn)題。您有一個(gè)固定的 2D 格網(wǎng)作為數(shù)組,并且您希望根據(jù) X/Y 坐標(biāo)填充特定區(qū)域。我簡(jiǎn)化了下面的實(shí)現(xiàn),以演示如何完成此操作。
const GRID_WIDTH = 10;
const GRID_HEIGHT = 10;
// Coordinates are described as [[y1, x1], [y2, x2]]
$coordinates = [[1,3], [3,3]];
// Create the grid
$grid = array_fill(0, GRID_WIDTH, array_fill(0, GRID_HEIGHT, '-'));
// Plot the coordinates on the grid
for ($y = 0; $y < GRID_WIDTH; $y++) { // plot Y
for ($x = 0; $x < GRID_HEIGHT; $x++) { // plot X
if ($y >= $coordinates[0][0] && $y <= $coordinates[0][1]) {
if ($x >= $coordinates[1][0] && $x <= $coordinates[1][1]) {
$grid[$y][$x] = 'X';
}
}
}
}
// Print the grid
foreach ($grid as $x => $y) {
foreach ($y as $plot) {
echo " $plot ";
}
echo "\n";
}
輸出應(yīng)如下所示:
- - - - - - - - - -
- - - X - - - - - -
- - - X - - - - - -
- - - X - - - - - -
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - -
在你的第一個(gè)例子中,它看起來(lái)像這樣:[0,1][1,2]
- X X - - - - - - -
- X X - - - - - - -
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - -
這里的關(guān)鍵是確保當(dāng)我們掃描網(wǎng)格(從X到Y(jié))時(shí),X1,Y1,X2和Y2的坐標(biāo)在光標(biāo)的范圍內(nèi)。這允許我們一次繪制一個(gè)單元格,只要我們?cè)谶@些邊界內(nèi)(包括)。這是通過(guò)檢查 和 來(lái)完成的。由于計(jì)算坐標(biāo)的寬度是不夠的(這就是上面的實(shí)現(xiàn)正在做的事情)。因?yàn)樗粯?biāo)識(shí)高度邊界。if ($y >= $coordinates[0][0] && $y <= $coordinates[0][1])if ($x >= $coordinates[1][0] && $x <= $coordinates[1][1])

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以使用已有的代碼(盡管不需要計(jì)算)迭代要繪制的矩形:$width
$rects = array(array(array(1, 3), array(3, 3)),
array(array(0, 1), array(1, 2))
);
$grid = array_fill(0, 10, array_fill(0, 10, '0'));
foreach ($rects as $r) {
list($upperLeftNode, $lowerRightNode) = $r;
for($x = $upperLeftNode[0]; $x <= $lowerRightNode[0]; $x++) {
for($y = $upperLeftNode[1]; $y <= $lowerRightNode[1]; $y++) {
$grid[$x][$y] = 'x';
}
}
}
foreach ($grid as $row) {
echo implode(' ', $row) . "\n";
}
輸出:
0 x x 0 0 0 0 0 0 0
0 x x x 0 0 0 0 0 0
0 0 0 x 0 0 0 0 0 0
0 0 0 x 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 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 0 0
- 2 回答
- 0 關(guān)注
- 126 瀏覽
添加回答
舉報(bào)