HTML5小游戏-数独

自己用HTML5 Canvas,JavaScript写的数独游戏,挂在github page上,可以玩。

支持中英文,支持错误数字填入提示,支持在一个格中填入可能的小数字,支持计时功能,可以选择难度。

不足:数独题目生成算法无法保证唯一解。

代码地址:https://github.com/wangdong20/Html-Sudoku

点开即玩:https://wangdong20.github.io/Html-Sudoku/

效果图:

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
当然可以帮你写一个 HTML 数独小游戏!下面是一个简单的示例代码: ```html <!DOCTYPE html> <html> <head> <title>数独游戏</title> <style> table { border-collapse: collapse; } td { width: 30px; height: 30px; text-align: center; border: 1px solid black; } .highlight { background-color: yellow; } </style> </head> <body> <h1>数独游戏</h1> <table id="sudoku"> <tr> <td contenteditable="true"></td> <td contenteditable="true"></td> <td contenteditable="true"></td> <td contenteditable="true"></td> <td contenteditable="true"></td> <td contenteditable="true"></td> <td contenteditable="true"></td> <td contenteditable="true"></td> <td contenteditable="true"></td> </tr> <!-- 其他行省略 --> </table> <button onclick="solveSudoku()">解答</button> <button onclick="resetSudoku()">重置</button> <script> function solveSudoku() { // 获取表格元素 const table = document.getElementById("sudoku"); // 创建一个二维数组来存储数独的初始值 let sudoku = []; for (let i = 0; i < table.rows.length; i++) { sudoku[i] = []; for (let j = 0; j < table.rows[i].cells.length; j++) { const cell = table.rows[i].cells[j]; sudoku[i][j] = cell.innerText !== "" ? parseInt(cell.innerText) : 0; } } // 调用数独求解函数 solve(sudoku, 0, 0); // 将结果更新回表格 for (let i = 0; i < table.rows.length; i++) { for (let j = 0; j < table.rows[i].cells.length; j++) { const cell = table.rows[i].cells[j]; cell.innerText = sudoku[i][j]; } } } function solve(sudoku, row, col) { if (row === 9) { return true; } if (col === 9) { return solve(sudoku, row + 1, 0); } if (sudoku[row][col] !== 0) { return solve(sudoku, row, col + 1); } for (let num = 1; num <= 9; num++) { if (isValid(sudoku, row, col, num)) { sudoku[row][col] = num; if (solve(sudoku, row, col + 1)) { return true; } sudoku[row][col] = 0; } } return false; } function isValid(sudoku, row, col, num) { for (let i = 0; i < 9; i++) { if (sudoku[row][i] === num || sudoku[i][col] === num) { return false; } } const startRow = Math.floor(row / 3) * 3; const startCol = Math.floor(col / 3) * 3; for (let i = 0; i < 3; i++) { for (let j = 0; j < 3; j++) { if (sudoku[startRow + i][startCol + j] === num) { return false; } } } return true; } function resetSudoku() { const table = document.getElementById("sudoku"); for (let i = 0; i < table.rows.length; i++) { for (let j = 0; j < table.rows[i].cells.length; j++) { const cell = table.rows[i].cells[j]; cell.innerText = ""; } } } </script> </body> </html> ``` 这段代码创建了一个 9x9 的表格用于显示数独游戏的格子,单元格具有 `contenteditable` 属性,允许用户输入数字。在点击"解答"按钮后,使用回溯算法来求解数独并在表格中显示结果。点击"重置"按钮会清空表格内容。 请将上述代码保存为一个 HTML 文件,然后在浏览器中打开该文件,你就可以玩数独游戏了!希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值