问题描述
以我自己复杂的方式为一个班级项目制作扫雷器。设置我的div数组时,我正在检查“非炸弹”的div,如果附近的那些有矿井并计算该数字。
这就是我应该包括的所有内容,因为我创建游戏网格的功能非常强大。
每个div(可单击的正方形)具有x和y的属性,网格为20 x 20(0-19)X是垂直的Y是水平的-现在我说我需要对其进行修正以提高可读性。>
JS-创建网格后,检查附近的框
for (let i = 0; i < grid.length; i++) {
const gridX = parseInt(grid[i].attr("x"))
const gridY = parseInt(grid[i].attr("y"))
const gridXx = grid[i].attr("x")
const gridYy = grid[i].attr("y")
const $topLeftEdge = $('div[y="0"][x="0"]')
const $topRightEdge = $('div[y="19"][x="0"]')
const $bottomLeftEdge = $('div[y="0"][x="19"]')
const $topEdge = $(`div[x="0"][y=${gridYy}]`)
const $bottomEdge = $(`div[x="19"][y=${gridYy}]`)
const $rightEdge = $(`div[x=${gridXx}][y="0"]`)
const $leftEdge = $(`div[x=${gridXx}][y="19"]`)
const below = gridX + 1
const above = gridX - 1
const left = gridY - 1
const right = gridY + 1
let counter = 0
if (grid[i].hasClass('clear')) {
if (!grid[i].is($leftEdge) && !grid[i].is($rightEdge) && !grid[i].is($topEdge) && !grid[i].is($bottomEdge) && $(`div[x=${below}][y=${gridY}]`).hasClass('bomb')) { // squares not on an edge -- Works perfect in first Box but not second and other checkers are broken!?
counter++
}
if (!grid[i].is($leftEdge) && !grid[i].is($rightEdge) && !grid[i].is($topEdge) && !grid[i].is($bottomEdge) && $(`div[x=${above}][y=${gridY}]`).hasClass('bomb')) {
counter++
}
if (!grid[i].is($leftEdge) && !grid[i].is($rightEdge) && !grid[i].is($topEdge) && !grid[i].is($bottomEdge) && $(`div[x=${above}][y=${left}]`).hasClass('bomb')) {
counter++
}
if (!grid[i].is($leftEdge) && !grid[i].is($rightEdge) && !grid[i].is($topEdge) && !grid[i].is($bottomEdge) && $(`div[x=${above}][y=${right}]`).hasClass('bomb')) { // square up one right one
counter++
}
if (!grid[i].is($leftEdge) && !grid[i].is($rightEdge) && !grid[i].is($topEdge) && !grid[i].is($bottomEdge) && $(`div[x=${below}][y=${left}]`).hasClass('bomb')) {
counter++
}
if (!grid[i].is($leftEdge) && !grid[i].is($rightEdge) && !grid[i].is($topEdge) && !grid[i].is($bottomEdge) && $(`div[x=${below}][y=${right}]`).hasClass('bomb')) {
counter++
}
if (!grid[i].is($leftEdge) && !grid[i].is($rightEdge) && !grid[i].is($topEdge) && !grid[i].is($bottomEdge) && $(`div[x=${gridX}][y=${left}]`).hasClass('bomb')) {
counter++
}
if (!grid[i].is($leftEdge) && !grid[i].is($rightEdge) && !grid[i].is($topEdge) && !grid[i].is($bottomEdge) && $(`div[x=${gridX}][y=${right}]`).hasClass('bomb')) {
counter++
}
grid[i].attr('nearby',counter)
}
当我仅创建一个游戏网格时,此方法就完美无缺,但当我将一个玩家设为2 div时,计数器就混乱了–忽略了它的附带任务rn
但是,这不起作用,我应该检查上下边缘,因为我认为它们也不起作用。这会算在上面和下面但没有对角线或侧面炸弹的盒子吗?
if (grid[i].is($rightEdge) && (!grid[i].is($topEdge) || !grid[i].is($bottomEdge)) && $(`div[x=${gridX}][y=${gridX -1}]`).hasClass('bomb')) { // Right Edge work
counter++
}
if (grid[i].is($rightEdge) && (!grid[i].is($topEdge) || !grid[i].is($bottomEdge)) && $(`div[x=${above}][y=${left}]`).hasClass('bomb')) {
counter++
}
if (grid[i].is($rightEdge) && (!grid[i].is($topEdge) || !grid[i].is($bottomEdge)) && $(`div[x=${below}][y=${left}]`).hasClass('bomb')) {
counter++
}
if (grid[i].is($rightEdge) && (!grid[i].is($topEdge) || !grid[i].is($bottomEdge)) && $(`div[x=${above}][y=${gridY}]`).hasClass('bomb')) {
counter++
}
if (grid[i].is($rightEdge) && (!grid[i].is($topEdge) || !grid[i].is($bottomEdge)) && $(`div[x=${below}][y=${gridY}]`).hasClass('bomb')) {
counter++
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)