代码拉取完成,页面将自动刷新
<?php
$num = 9;
$leiNum = 10;
$map = initMap($num, $leiNum);
foreach ($map as $line) {
echo join(', ', $line) . PHP_EOL;
}
function initMap($num, $leiNum) {
$map = array_fill(0, $num, array_fill(0, $num, 0));
$cache = [];
for ($i = 0; $i < $leiNum; $i++) {
while (true) {
$x = random_int(0, $num - 1);
$y = random_int(0, $num - 1);
if (isset($cache[$x][$y])) {
continue;
}
// 缓存
$cache[$x][$y] = true;
break;
}
$map[$x][$y] = -1;
// 设置周围的数字加一
_setNum($map, $x, $y, $num);
}
return $map;
}
function _setNum(&$map, $x, $y, $num) {
$flag1 = $x - 1 >= 0;
$flag2 = $y - 1 >= 0;
$flag3 = $x + 1 < $num;
$flag4 = $y + 1 < $num;
// 上
if ($flag1 && $map[$x - 1][$y] >= 0) {
$map[$x - 1][$y]++;
}
// 左
if ($flag2 && $map[$x][$y - 1] >= 0) {
$map[$x][$y - 1]++;
}
// 下
if ($flag3 && $map[$x + 1][$y] >= 0) {
$map[$x + 1][$y]++;
}
// 右
if ($flag4 && $map[$x][$y + 1] >= 0) {
$map[$x][$y + 1]++;
}
// 左上
if ($flag1 && $flag2 && $map[$x - 1][$y - 1] >= 0) {
$map[$x - 1][$y - 1]++;
}
// 右上
if ($flag1 && $flag4 && $map[$x - 1][$y + 1] >= 0) {
$map[$x - 1][$y + 1]++;
}
// 左下
if ($flag3 && $flag2 && $map[$x + 1][$y - 1] >= 0) {
$map[$x + 1][$y - 1]++;
}
// 右下
if ($flag3 && $flag4 && $map[$x + 1][$y + 1] >= 0) {
$map[$x + 1][$y + 1]++;
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。