- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试用 JavaScript 构建一个扫雷游戏,但我一直坚持添加垂直炸弹威胁。
这是我的代码:
const generateBoardForPlay = function () {
const gameBoard = [
[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, 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]
]
function getRandomInt(max) {
return Math.floor(Math.random() * Math.floor(max));
}
const generateBombs = function () {
return [
[getRandomInt(9), getRandomInt(9)],
[getRandomInt(9), getRandomInt(9)],
[getRandomInt(9), getRandomInt(9)],
[getRandomInt(9), getRandomInt(9)],
[getRandomInt(9), getRandomInt(9)],
[getRandomInt(9), getRandomInt(9)],
[getRandomInt(9), getRandomInt(9)],
[getRandomInt(9), getRandomInt(9)],
[getRandomInt(9), getRandomInt(9)],
[getRandomInt(9), getRandomInt(9)]
]
}
const bombArr = generateBombs()
const addBombsToBoard = function (gameBoard) {
for (let x of bombArr) {
gameBoard[x[0]][x[1]] = "99"
}
return gameBoard
}
const board = addBombsToBoard(gameBoard)
// return board;
const addWarnings = function (array) {
for (let x in array) {
if (array[x] === '99' && x > 0 && array[x - 1] !== "99") {
array[x - 1] += 1
}
}
for (let i = array.length; i > 0; i--) {
if (array[i] === '99' && i < 9 && array[i + 1] !== "99") {
array[i + 1] += 1
}
}
return array
}
addWarnings(board[0])
addWarnings(board[1])
addWarnings(board[2])
addWarnings(board[3])
addWarnings(board[4])
addWarnings(board[5])
addWarnings(board[6])
addWarnings(board[7])
addWarnings(board[8])
addWarnings(board[9])
const addVerticalWarning = function (board) {
// THIS IS WHERE I'M STUCK
}
return board;
}
这是输出
[
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 1, '99', '99', '99', 1, 0, 0],
[0, 0, 1, '99', 1, 0, 0, 0, 0, 0],
[0, 1, '99', 1, 0, 0, 0, 1, '99', 1],
[0, 1, '99', 1, 0, 1, '99', 1, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 1, '99', 1, 0, 0, 0, 0, 0],
[1, '99', 1, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
]
我收到了水平炸弹威胁,但两个循环的复杂性阻止了我弄清楚水平炸弹威胁。我这样做是为了一项作业,所以我不想只是从其他地方复制并粘贴它。如果有一种方法可以完成代码,那就太棒了,如果没有,我想为我指明了正确的方向。
最佳答案
您的游戏板由嵌套在父数组中的 10 个并行数组组成。
这应该可以帮助您了解如何使用并行嵌套数组来访问彼此对应的值:
// Defines the gameBoard
let gameBoard = makeGameBoard();
// Loops through rows of the gameBoard
for (let rowIndex = 0; rowIndex < gameBoard.length; rowIndex++) {
// Defines the current row and its neighbors
let currentRow, previousRow, nextRow;
currentRow = gameBoard[rowIndex];
if(rowIndex > 0){ previousRow = gameBoard[rowIndex - 1]; }
if(rowIndex < gameBoard.length - 1){ nextRow = gameBoard[rowIndex + 1]; }
// Loops through the current row
for(let colIndex = 0; colIndex < currentRow.length; colIndex++){
// Logs what is in this column for this row and neighbors...
console.log(`row ${rowIndex}, col ${colIndex}: ${gameBoard[rowIndex][colIndex]}`);
if (previousRow){ console.log(`in square above: ${previousRow[colIndex]}`); }
else{ console.log("no square above first row"); }
if(nextRow) {console.log(`in square below: ${nextRow[colIndex]}`); }
else{console.log("no square below last row"); }
console.log("");
}
}
function makeGameBoard() {
return [
[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, 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],
];
}
关于javascript - 扫雷炸弹威胁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59851350/
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
请原谅这个有趣的标题,我用它来比喻“zip bomb”。是否可以创建一个 Scala 源文件,该文件在编译时会生成大量类文件(或非常大的单个类文件)?有什么办法可以让类文件的大小比源文件的大小线性增长
我玩 Unix 有一段时间了,我刚刚发现了一段可爱的代码,每个人都称之为 fork 炸弹::(){ :|:& };:。我想尝试一下,但我知道它会像疯了一样滞后我的计算机,所以我只是想知道是否有人可以给
如果您已经登录系统,如何阻止 fork 炸弹? 最佳答案 斯雷, 如果您在 shell 中仍然拥有“控制权”,则可以尝试使用 ps 和 grep,以及一些 awk,然后是一个循环,以关闭包括父进程在内
可以使用 fork 炸弹(无限 fork )进行拒绝服务攻击。进程表很快就会满,系统就会崩溃。 在线编译器(如编程竞赛)如何处理此类代码。他们有时间限制吗?如果某些程序有几秒的时间限制,它们的进程表将
This question关于 zip 炸弹自然而然地把我带到了 Wikipedia page关于这个话题。文章提到了一个 45.1 kb 的 zip 文件解压缩到 1.3 艾字节的示例。 首先用于创
我正在学习C,遇到了一个小问题。在维基百科和 StackOverflow 上阅读了有关 fork() 炸弹的内容后。我想实现相同的功能,但使用命令行参数。 我想无休止地调用 firefox/chrom
我正在使用 XercesDOMParser 在 linux (c++) 中读取 xml 文件,我想防止 xml 炸弹(Billion 笑)所以我设置了这些属性: parser->setDoNamesp
`#include #include int main(int argc, char **argv){ int pid = 0; int forever; static c
我写了一些这样的代码: std::vector unzip(std::vector const& compressed) { std::vector decompressed; boost
当我有时使用 Apache POI 创建 xlsx 文件时(当文件很大时),它会创建这样一个文件,该文件无法由同一个 Apache POI 打开,而 MS Excel 或 LibreOffice Ca
我使用 Nodejs 应用程序(expressjs、request 等)在网络主机上托管一个网站。 Web 主机有一个 apache 终端,我可以从其中调用 node app.js & 或 forev
代码如下 XmlDocument xdoc = new XmlDocument(); String xml = @"" + "" +
我是一名优秀的程序员,十分优秀!