简单写一个扫雷游戏脚本

    (function () {
        h_lei = function (obj) {
            obj = obj == undefined ? {} : obj;
            var _this = this;
            _this.dataH = [];
            _this.dataS = [];
            _this.big = obj.big == undefined ? 10 : obj.big;
            _this.num = obj.num == undefined ? 10 : obj.num;
            _this.shengyu = _this.big * _this.big - _this.num;

            _this.dataH = new Array(_this.big);
            _this.dataS = new Array(_this.big);
            for (var i = 0; i < _this.big; i++) {
                _this.dataH[i] = new Array(_this.big).fill(0);
                _this.dataS[i] = new Array(_this.big).fill(-2);
            }
            _this.setlei = function (leishu) {
                var shengyu = 0;
                for (var i = 0; i < _this.big; i++) {
                    for (var j = 0; j < _this.big; j++) {
                        if (_this.dataH[i][j] != -1) {
                            shengyu += 1;
                        }
                    }
                }
                if (shengyu < leishu) {
                    alert("剩餘數量不夠了")
                    return;
                }
                if (leishu > 0) {
                    var a = Math.floor(Math.random() * _this.big);
                    var b = Math.floor(Math.random() * _this.big);
                    if (_this.dataH[a][b] != -1) {
                        _this.dataH[a][b] = -1;
                        leishu -= 1;
                    }
                    _this.setlei(leishu)
                }
            }
            _this.setnunm = function () {
                for (var i = 0; i < _this.big; i++) {
                    for (var j = 0; j < _this.big; j++) {
                        if (_this.dataH[i][j] == 0) {
                            var count = 0;
                            is = i - 1;
                            id = i + 1;
                            js = j - 1;
                            jd = j + 1;
                            if (is >= 0 && _this.dataH[is][js] == -1) count += 1;
                            if (is >= 0 && _this.dataH[is][j] == -1) count += 1;
                            if (is >= 0 && jd < _this.big && _this.dataH[is][jd] == -1) count += 1;
                            if (js >= 0 && _this.dataH[i][js] == -1) count += 1;
                            if (_this.dataH[i][j] == -1) count += 1;
                            if (jd < _this.big && _this.dataH[i][jd] == -1) count += 1;
                            if (id < _this.big && js >= 0 && _this.dataH[id][js] == -1) count += 1;
                            if (id < _this.big && _this.dataH[id][j] == -1) count += 1;
                            if (id < _this.big && jd < _this.big && _this.dataH[id][jd] == -1) count += 1;
                            _this.dataH[i][j] = count;
                        }
                    }
                }
                return _this.dataH;
            }
            _this.setlei(_this.num);
            _this.setnunm();
            _this.kailei = function (a, b) {
                if (a < 0 || b < 0 || a >= _this.big || b >= _this.big) {
                    return;
                }
                var jg = _this.dataH[a][b]
                if (jg == -1) {
                    _this.dataS = _this.dataH;
                    console.log('雷');
                    return -1;
                } else {
                    _this.dataS[a][b] = jg
                }
                _this.shuaxin()
                console.log(_this.shengyu)
                return 0;
            }
            _this.shuaxin = function () {
                var b = false;
                var shenyu = 0;
                for (var i = 0; i < _this.big; i++) {
                    for (var j = 0; j < _this.big; j++) {
                        if (_this.dataH[i][j] != -1 && _this.dataS[i][j] != _this.dataH[i][j]) {
                            shenyu += 1;
                        }
                        if (_this.dataS[i][j] == -2) {
                            is = i - 1;
                            id = i + 1;
                            js = j - 1;
                            jd = j + 1;
                            if ((is >= 0 && _this.dataS[is][js] == 0)
                                || (is >= 0 && _this.dataS[is][j] == 0)
                                || (is >= 0 && jd < _this.big && _this.dataS[is][jd] == 0)
                                || (js >= 0 && _this.dataS[i][js] == 0)
                                || (jd < _this.big && _this.dataS[i][jd] == 0)
                                || (id < _this.big && js >= 0 && _this.dataS[id][js] == 0)
                                || (id < _this.big && _this.dataS[id][j] == 0)
                                || (id < _this.big && jd < _this.big && _this.dataS[id][jd] == 0)) {
                                _this.dataS[i][j] = _this.dataH[i][j]
                                b = true;
                            }
                        }
                    }
                }
                if (b) {
                    _this.shuaxin()
                } else {
                    _this.shengyu = shenyu
                }
                return shenyu;
            }
        }
    })(jQuery);
   
   /*
   使用方法 初始化 默认是10*10 有10个雷
   var a = new h_lei()
   参数介绍
   var a = new h_lei({
		big:10, //生成 big * big 的格子
		num:10,//雷的数量
	})
	a.dataH //生成的最终数组  -1=雷 0-空 其他数值-具体周围雷的数量
	a.dataS //展示数组  -2=初始化值(未点击) -1=雷 0-空
	a.shengyu //剩余排查的数量
	a.kailei(x,y) //排雷 传递坐标数据返回 0-安全 1-雷
   */
posted @   mufuc  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示