JavaScript开发数独游戏(二)

本文介绍了在JavaScript中开发数独游戏的第二部分,包括创建9x9矩阵、随机算法、检查算法的实现,以及界面设计。通过makeRow和makeMatrix函数生成矩阵,并使用洗牌算法打乱数字。检查算法确保每行、每列和每个宫的数字唯一。界面设计分为标题、九宫格和底部按钮,九宫格的构造函数着重处理宫的边框。最后,文章提到了使用gulp工具进行编译。
摘要由CSDN通过智能技术生成

JavaScript开发数独游戏(一)中已经介绍了项目的框架搭建过程,下面讲讲数独游戏实现。

首先是要创建一个9x9的矩阵用数组表示。创建的方式有很多种,但是我们最终要定位到每一个单元格中,这里用行作为第一维数组由9个数组组成,每个数组作为第二维。
先用函数生成行数组,如下:
function makeRow(v = 0) {
const array = new Array(9);
array.fill(v);
return array;
}
再生成一个数组然后把行数组作为参数传递,如下:
function makeMatrix(v = 0) {
return Array.from({length: 9}, () => makeRow(v));
}
这里用到伪数组,如果makeMatrix()直接用相同方法生成数组,更改一个值的时候所有相同下标二维数组对应的值都会改变,因为makeRow()函数只调用一次。解决的方法是构造一个伪数组将数组每个元素进行映射。

这里还要介绍一下几个算法:
随机算法
需要将整个矩阵的数字打乱,采用经典洗牌算法实现:
function shuffle(array) {
const endIndex = array.length - 2;
for (let i = 0; i <= endIndex; i++) {
const j = i + Math.floor(M

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值