Javascript 综合示例 网页扫雷游戏

---------------认定了的事情,只要是对的,干到底!

----------------------------------------------------------------------------------------------------------------------------------------------

分别建立 HTML CSS JS 三个文件

加上 保存好的图片

----------------------------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------------------------

HTML代码

----------------------------------------------------------------------------------------------------------------------------------------------

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <meta http-equiv="X-UA-Compatible" content="ie=edge">    <title>原生JS~扫雷</title>    <link rel="stylesheet" href="demo.css"></head><body>    <div class="wrapper">        <div class="btn" id="btn"></div>        <div class="box" id="box"></div>        <div class="flagBox" id="flagBox">            当前剩余雷数:            <span id="score">10</span>        </div>        <div class="alertBox" id="alertBox">            <div class="alertImg" id="alertImg">                <div class="close" id="close"></div>            </div>        </div>    </div>    <script src="demo.js"></script></body></html>

----------------------------------------------------------------------------------------------------------------------------------------------

CSS代码

----------------------------------------------------------------------------------------------------------------------------------------------

*{    margin:0;    padding:0;}.wrapper {    width:100%;    height:1000px;    position: fixed;    top:0;    left:0;    background-image: url(‘img/bg.jpg‘);    background-size: 100% 100%;}

.btn{    height:140px;    width:170px;    position:absolute;    left:50px;    background-image: url(‘img/startGame.png‘);    background-size: 100% 100%;    cursor: pointer;}

.box{    height:500px;    width:500px;    transform: perspective(800px) rotateX(45deg);    margin:20px auto;    border-top:1px solid #B25F27;    border-left:1px solid #B25F27;    box-shadow:  5px 5px 5px rgba(0,0,0,0.3);

display:none;}

.flagBox{    position:absolute;    top:50px;    left:50%;    width:200px;    height:50px;    margin-left:-100px;    color:#333;    font-size:20px;    font-weight: bolder;    display:none;}.alertBox{    display:none;    position:absolute;    width:100%;    height:100%;    left:0;    top:0;    background-color: rgba(0,0,0,0.2);}

.alertImg{    width:600px;    height:400px;    background-size: 100% 100%;    position:absolute;    left:0;    top:0;    right:0;    bottom:0;    margin:auto;    border-radius: 20px;}

.close{    position:absolute;    right:0;    top:0;    height:40px;    width:40px;    background-image: url(‘img/closeBtn.png‘);    background-size: 100% 100%;    cursor: pointer;

}

.block{    width:49px;    height:49px;    border-right:1px solid #B25F27;    border-bottom:1px solid #B25F27;    box-shadow: 0 0 4px #333 inset;    background-image: url(‘img/cao.jpg‘);    float: left;}

.show{    background-image: url(‘img/dilei.jpg‘);    background-size: 100% 100%;}

.num{    background:#ECD0A1;    font-size:18px;    font-weight:bold;    line-height: 49px;    text-align: center;}.flag{    background-image:url(‘img/hongqi.jpg‘);    background-size:100% 100%;}

----------------------------------------------------------------------------------------------------------------------------------------------

JS代码

----------------------------------------------------------------------------------------------------------------------------------------------

//点击开始游戏 -》 动态生成100个小格--》100div//leftClick  没有雷  --》显示数字(代表以当前小格为中心周围8个格的雷数) 扩散(当前周围八个格没有雷)//           有累 --》game Over//rightClick 没有标记并且没有数字--》进行标记。 有标记 --》取消标记 --》标记是否正确,10个都正确标记,提示成功//已经出现数字--》无效果

var startBtn = document.getElementById(‘btn‘);var box = document.getElementById(‘box‘);var flagBox = document.getElementById(‘flagBox‘);var alertBox = document.getElementById(‘alertBox‘);var alertImg = document.getElementById(‘alertImg‘);var closeBtn = document.getElementById(‘close‘);var score = document.getElementById(‘score‘);var minesNum;var mineOver;var block;var mineMap = [];var startGameBool = true;

bindEvent();function bindEvent() {    startBtn.onclick = function () {        if(startGameBool){            box.style.display = ‘block‘;            flagBox.style.display = ‘block‘;            init();            startGameBool = false;        }

}    box.oncontextmenu = function () {        return false;    }    box.onmousedown = function (e) {        var event = e.target;        if (e.which == 1) {            leftClick(event);        } else if (e.which == 3) {            rightClick(event);        }    }    closeBtn.onclick = function () {        alertBox.style.display = ‘none‘;        flagBox.style.display = ‘none‘;        box.style.display = ‘none‘;        box.innerHTML = ‘‘;        startGameBool = true;    }}

function init() {    minesNum = 10;    mineOver = 10;    score.innerHTML = mineOver;

for (var i = 0; i < 10; i++) {        for (var j = 0; j < 10; j++) {            var con = document.createElement(‘div‘);            con.classList.add(‘block‘);            con.setAttribute(‘id‘, i + ‘-‘ + j);            box.appendChild(con);            mineMap.push({ mine: 0 });        }    }    block = document.getElementsByClassName(‘block‘);    while (minesNum) {        var mineIndex = Math.floor(Math.random() * 100);        if (mineMap[mineIndex].mine === 0) {            mineMap[mineIndex].mine = 1;            block[mineIndex].classList.add(‘isLei‘);            minesNum--;        }    }}

function leftClick(dom) {    if(dom.classList.contains(‘flag‘)){        return;    }    var isLei = document.getElementsByClassName(‘isLei‘);    if (dom && dom.classList.contains(‘isLei‘)) {        for (var i = 0; i < isLei.length; i++) {            isLei[i].classList.add(‘show‘);        }        setTimeout(function () {            alertBox.style.display = ‘block‘;            alertImg.style.backgroundImage = ‘url("img/over.jpg")‘;        }, 800)    } else {        var n = 0;        var posArr = dom && dom.getAttribute(‘id‘).split(‘-‘);        var posX = posArr && +posArr[0];        var posY = posArr && +posArr[1];        dom && dom.classList.add(‘num‘);        for (var i = posX - 1; i <= posX + 1; i++) {            for (var j = posY - 1; j <= posY + 1; j++) {                var aroundBox = document.getElementById(i + ‘-‘ + j);                if (aroundBox && aroundBox.classList.contains(‘isLei‘)) {                    n++;                }            }        }        dom && (dom.innerHTML = n);        if (n == 0) {            for (var i = posX - 1; i <= posX + 1; i++) {                for (var j = posY - 1; j <= posY + 1; j++) {                    var nearBox = document.getElementById(i + ‘-‘ + j);                    if (nearBox && nearBox.length != 0) {                        if (!nearBox.classList.contains(‘check‘)) {                            nearBox.classList.add(‘check‘);                            leftClick(nearBox);                        }                    }                }            }        }    }}

function rightClick(dom){    if(dom.classList.contains(‘num‘)){        return;    }    dom.classList.toggle(‘flag‘);    if(dom.classList.contains(‘isLei‘) &&dom.classList.contains(‘flag‘)){        mineOver --;    }    if(dom.classList.contains(‘isLei‘) && !dom.classList.contains(‘flag‘)){        mineOver ++;    }

score.innerHTML = mineOver;    if(mineOver == 0){        alertBox.style.display = ‘block‘;        alertImg.style.backgroundImage = ‘url("img/success.png")‘;    }}

----------------------------------------------------------------------------------------------------------------------------------------------

图片文件

----------------------------------------------------------------------------------------------------------------------------------------------

     




原文地址:https://www.cnblogs.com/dealdwong2018/p/10147060.html

时间: 2024-10-05 20:31:07

Javascript 综合示例 网页扫雷游戏的相关文章

javascript模拟Windows系统下的扫雷游戏

javascript模拟Windows系统下的扫雷游戏. 说好的一周一篇随笔的,这才第三周就延迟交作业了,深深的自责中... 先玩一把 demo 很久以前写的 当时都没写注释的 刚加上了 (尼玛,好多自己都不认识了 ... ) 不足的敌方就是本来想写个游戏排名的统计的,等有空了再加上(好像每次都这么说 然后就等好久好久...) 还有就是没有实现:点击第一个格子不能是雷的功能 刚才在手机端 打开了下这篇文章 排版完全乱了... <style> ul{padding:0;list-style:no

javascript开发植物大战僵尸网页版游戏源代码下载

原文:javascript开发植物大战僵尸网页版游戏源代码下载 源代码下载:http://www.zuidaima.com/share/1550463429364736.htm javascrip实现的植物大战僵尸

原生javascript扫雷游戏

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>扫雷游戏</title> &l

利用 JavaScript SDK 部署网页版“Facebook 登录”

利用 JavaScript SDK 部署网页版"Facebook 登录" 通过采用 Javascript 版 Facebook SDK 的"Facebook 登录",用户可以使用 Facebook 凭据登录您的网页.即使您因为一些原因而无法使用我们的 JavaScript SDK,也一样可以实施"Facebook 登录". 要在不使用 JavaScript SDK 的情况下实施"Facebook 登录",请参阅手动构建登录流程

Spring MVC 学习总结(四)——视图与综合示例

一.表单标签库 1.1.简介 从Spring2.0起就提供了一组全面的自动数据绑定标签来处理表单元素.生成的标签兼容HTML 4.01与XHTML 1.0.表单标签库中包含了可以用在JSP页面中渲染HTML元素的标签.表单标记库包含在spring-webmvc.jar中,库的描述符称为spring-form.tld,为了使用这些标签必须在jsp页面开头处声明这个tablib指令. <%@ taglib prefix="form" uri="http://www.spri

用javascript实现2048的小游戏

前段时间,看了一个视频,用javascript实现的2048小游戏,发现不难,都是一些基出的语法和简单逻辑. 整个2048游戏没有很多的数据,所有,实现起来还是很有成就感的. 先上图,简直就和原版游戏一样一样的. 下面分享一下整个2048游戏的代码逻辑: 首先,搭建游戏框架 其次,开始我们的代码编写 index.html <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type"

【Android】自己动手做个扫雷游戏

1. 游戏规则 扫雷是玩法极其简单的小游戏,点击玩家认为不存在雷的区域,标记出全部地雷所在的区域,即可获得胜利.当点击不包含雷的块的时候,可能它底下存在一个数,也可能是一个空白块.当点击中有数字的块时,游戏会展现当前点击块所包含的数字.当点击空白块时,地图会展开,形成一个大小和形状不规则的图形,该图形的边界是数字块,也可以想成展开的是一个被数字包围着的不规则图形. 1.1 数字生成规则 扫雷游戏中是通过数字来判断雷的位置的,那么,数字的生成规则是什么呢?假设游戏中只有一个雷,那么,他的将被1这个

洛谷P2670 扫雷游戏

题目描述 扫雷游戏是一款十分经典的单机小游戏.在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格).玩家翻开一个非地雷格时,该格将会出现一个数字--提示周围格子中有多少个是地雷格.游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格. 现在给出n行m列的雷区中的地雷分布,要求计算出每个非地雷格周围的地雷格数. 注:一个格子的周围格子包括其上.下.左.右.左上.右上.左下.右下八个方向上与之直接相邻的格子. 输入输出格式 输入格式: 输入文件第一行是用一个

c++ 控制台版 扫雷游戏

白天看了一天书看累了,晚上瞅见扫雷游戏,就自己琢磨着做一个呗.想了一会,也没看别人怎么做的,大概1个多小时完成了这个简单版本的扫雷游戏,由于没怎么学过c#,界面的事情可能迟几天再做,明天要回家啦,哈哈! 先说思路,其实挺简单的. (1) 随机生成10个雷,标记到二维数组里,然后计算八个方向的雷的总数记录下来,这是预处理阶段. (2)输入要翻开的位置的坐标,如果是数字直接显示,是空白的话,这里采用bfs即宽度优先搜索解决,搜到最外层是数字(仅一层)时结束,具体详见代码. // 扫雷程序 #incl