首页 > 其他分享 >简单写一个扫雷游戏脚本

简单写一个扫雷游戏脚本

时间:2024-09-04 17:38:01浏览次数:10  
标签:脚本 游戏 big 扫雷 && var id dataS dataH

    (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);

标签:脚本,游戏,big,扫雷,&&,var,id,dataS,dataH
From: https://www.cnblogs.com/mufuhu/p/18397016

相关文章

  • unity ui控件与C#脚本类对应表
    unityui控件与C#脚本类对应表原文中文C#--classesImage图像ImageText-TextMeshPro文本-TextMeshPrcTMP_TextRawImage原始图像RawImagePanel面板ImageToggle切换ToggleSlider滑动条SliderScrollbar滚动条ScrollbarScrollView滚动......
  • uniapp js 数独小游戏 写死的简单数独demo(优化完成) 数独 4.0
    <template> <viewclass="wrap">  <viewclass="timeGame">   <textclass="time">时间{{gameTime}}</text>  </view>  <viewclass="listWrap">   <view    ......
  • WebDriver API剖析----执行JavaScript脚本
    页面上的操作有时通过Selenium是无法实现的,如滚动条、时间控件等,此时就需要借助JavaScript来完成。WebDriver提供了一个内置方法来操作JavaScript,代码如下:driver.execute_script(self,script,args)可以通过两种方式在浏览器中执行JavaScript。1、在文档根级别执行JavaScr......
  • 简单可靠的SpringBoot Jar包启动和更新的Shell脚本
    能用脚本执行,就不用手动nohupjava-jar啦。1.参数说明最终代码实现如下,支持四个参数:●operation:start-启动新包/update-更新包●env_para:指定使用哪个配置文件,如test/prod/dev等●new_jar_package_name:新包的名称,这里必须要求脚本的位置在新,旧包的同一目......
  • openresty+redis配合 lua脚本封停 IP
    1.安装openresty-1.21.4.4tar-xzvfopenresty-1.21.4.4.tar.gzcdopenresty-1.21.4.4mkdirmodules#到github中下载ngx_cache_purge-2.3,解压后放到modules里面wgethttp://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz#编译安装openresty./configure--p......
  • 《黑shen话悟空》终极修改器和所有游戏资源一览,你全都知道吗?
    最近最受瞩目的热点话题,无疑是游戏《黑shen话:悟空》。作为我国首款3A大作,自从20号首次亮相以来,大家的关注度一路攀升。无论你是热爱美丽风景的观光党,还是喜欢深究剧情细节的考证党,或者是追求刺激战斗体验的玩家,都必定能在这款游戏中找到自己所钟爱的元素,尽情满足自己的期待。......
  • 超级快速搜索重复文件并批量删除重复文件的AutoHotkey辅助脚本 2024年9月4日
       超级快速搜索重复文件并批量删除重复文件的AutoHotkey辅助脚本 2024年9月4日   ;超级快速搜索重复文件并批量删除重复文件的AutoHotkey辅助脚本2024年9月4日/*用法:1、安装MasterSeeker1.5.1byDxCK或者安装UltraSearchProfessionalVersion4.2.0......
  • 油猴脚本自动填写vue页面登录表单,点击登录按钮值被清空了
    直接设置input的value是不行的,因为这个时候没有触发vue里的input事件,vue里绑定变量的值没变为什么?直接修改value应该是会触发@input的才对啊?inputEl.value='xxx'解决方案是:需要手动dispathinputletev=newEvent('input');inputEl.dispatchEvent(ev)示例:(function(......
  • 在 Python 脚本中处理错误
    在Python脚本中处理错误是确保程序稳健性的重要部分。通过处理错误,你可以防止程序因意外情况崩溃,并为用户提供有意义的错误消息。以下是我在Python中处理错误的常见方法和一些最佳实践:1、问题背景当运行pyblog.py时,遇到了以下错误:Traceback(mostrecentcalllast):File......
  • 康威生命游戏
    题目:康威生命游戏分类:数组、矩阵、模拟根据百度百科,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。给定一个包含m×n个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1即为活细胞(live),或0即为死细胞(d......