Js 网页版扫雷游戏代码实现

  这个游戏是自己在大约一年前联系js熟练度时做的,用的都是基础的东西,最近比较忙没时间整理。直接发给大家,有兴趣的可以看一下。欢迎大家提出建议。如果你有什么新的想法也可以提出来,或者你并不擅长编程。你想做什么东西可以告诉我。我尽量帮你实现。
不要在意标点符号什么的,,哈哈

废话不说了上代码:

<!DOCTYPE html>
<html>

	<head>
		<meta charset="{CHARSET}">
		<title>zwcai pai bool</title>
		<style>
			.innerGrid {
				width: 20px;
				height: 20px;
				margin: 0;
				padding: 0;
				text-align: center;
				line-height: 20px;
				float: left;
				background-color: beige;
				border: solid burlywood 1px;
			}

			.clearBoth {
				clear: both;
			}

			.outGrid {
				filter: alpha(opacity=100);
				-moz-opacity: 1;
				-khtml-opacity: 1;
				opacity: 1;
				width: 20px;
				height: 20px;
				margin: 0;
				padding: 0;
				float: left;
				background-color: burlywood;
				border: solid beige 1px;
			}

			.disOutGrid {
				filter: alpha(opacity=0);
				-moz-opacity: 0.0;
				-khtml-opacity: 0.0;
				opacity: 0.0;
				width: 20px;
				height: 20px;
				margin: 0;
				padding: 0;
				float: left;
				background-color: burlywood;
				border: solid beige 1px;
			}

			.redOutGrid {
				guessOutGrid filter: alpha(opacity=100);
				-moz-opacity: 1;
				-khtml-opacity: 1;
				opacity: 1;
				width: 20px;
				height: 20px;
				margin: 0;
				padding: 0;
				float: left;
				background-color: red;
				color: white;
				text-align: center;
				line-height: 20px;
				border: solid beige 1px;
			}

			.guessOutGrid {
				filter: alpha(opacity=100);
				-moz-opacity: 1;
				-khtml-opacity: 1;
				opacity: 1;
				width: 20px;
				height: 20px;
				margin: 0;
				padding: 0;
				float: left;
				color: red;
				text-align: center;
				line-height: 20px;
				background-color: burlywood;
				border: solid beige 1px;
			}
		</style>
	</head>

	<body>
		<form action="javaScript:createContent()">
			<div id="message" style="color: red; display: none;">booNum must less than xyNum*xyNum</div>
			<br /> xyNum:
			<input id="xyNum" type="number" required="true" name="points" min="1" max="50" /> booNum:
			<input id="booNum" type="number" required="true" name="points" min="1" max="2500" />
			<input type="submit" value="OK" />
			<br /> 1. Input the width <br /> 2. Input the number of ray (ray number is less than the width * width) <br /> 3. Click ok <br />
			The right mouse button:<br />
			The first time: mark your guess<br />
			The second time: confirm your guess<br />
			The Third time: cancel the tag<br />
		</form>
		<div style="position: relative; margin: 20px 20px;">
			<div id="content"></div>
			<div id="outcontent" style="position: absolute;top: 0px;"></div>
		</div>
		<script>
			document.oncontextmenu = function(e) {
				e.preventDefault();
			};
			var xyNum = document.getElementById(‘xyNum‘),
				booNum = document.getElementById(‘booNum‘),
				message = document.getElementById(‘message‘),
				content = document.getElementById(‘content‘),
				outcontent = document.getElementById(‘outcontent‘),
				commonFunction = {
					getPromptArray: function(xyL, BIndex) {
						var resultArry = []; //["x1y1","x2y2","x3y3","x1y1"];BIndex:[[0,1],[3,1]]
						var resultObj = {};
						var bx = 0,
							by = 0;

						function calculateA(item) {
							bx = item[0];
							by = item[1];
							if (bx > 0) {
								resultArry.push(‘x‘ + (bx - 1) + ‘y‘ + (by));
							}
							if (bx < xyL - 1) {
								resultArry.push(‘x‘ + (bx + 1) + ‘y‘ + (by));
							}
							if (by > 0) {
								resultArry.push(‘x‘ + (bx) + ‘y‘ + (by - 1));
							}
							if (by < xyL - 1) {
								resultArry.push(‘x‘ + (bx) + ‘y‘ + (by + 1));
							}
							if (bx > 0 && by > 0) {
								resultArry.push(‘x‘ + (bx - 1) + ‘y‘ + (by - 1));
							}
							if (bx > 0 && by < xyL - 1) {
								resultArry.push(‘x‘ + (bx - 1) + ‘y‘ + (by + 1));
							}
							if (bx < xyL - 1 && by > 0) {
								resultArry.push(‘x‘ + (bx + 1) + ‘y‘ + (by - 1));
							}
							if (bx < xyL - 1 && by < xyL - 1) {
								resultArry.push(‘x‘ + (bx + 1) + ‘y‘ + (by + 1));
							}
						}

						function getResultObj(arr) {
							var obj = {};
							for (var ai = 0; ai < arr.length; ai++) {
								var item = arr[ai];
								if (obj[item] == null) obj[item] = 1;
								else obj[item] = obj[item] + 1;
							}
							return obj;
						}
						for (var bi = 0; bi < BIndex.length; bi++) {
							var Bitem = BIndex[bi]; //[0,1]
							calculateA(Bitem);
						}
						resultObj = getResultObj(resultArry);
						return resultObj;
					},
					getBIndex: function(xyn, boo) {
						var result = [];
						var xy = [];

						function canAddRes() {
							xy = result[result.length - 1];
							for (var l = 0; l < result.length - 1; l++) {
								if (result[l][0] == xy[0] && result[l][1] == xy[1]) {
									return false;
								}
							}
							return true;
						};
						for (var i = 0; i < boo; i++) {
							var x = parseInt(Math.random() * xyn);
							var y = parseInt(Math.random() * xyn);
							result[i] = [x, y];
							if (!canAddRes()) {
								i--;
							}
						}
						return result;
					},
					getInnerArea: function() {
						if (xyNum.value * xyNum.value < booNum.value) {
							message.style.display = ‘block‘;
							return false;
						} else {
							while (content.hasChildNodes()) {
								content.removeChild(content.firstChild);
							}
						}
						var oFrag = document.createDocumentFragment();
						var BIndex = [];
						BIndex = commonFunction.getBIndex(xyNum.value, booNum.value);
						for (var xi = 0; xi < xyNum.value; xi++) {
							var oLi = document.createElement("div");
							oLi.id = ‘x‘ + xi;
							for (var yi = 0; yi < xyNum.value; yi++) {
								var oDiv = document.createElement("div");
								oDiv.id = ‘x‘ + xi + ‘y‘ + yi;
								oDiv.className = ‘innerGrid‘;
								oLi.appendChild(oDiv);
								if (yi == xyNum.value - 1) {
									var endDiv = document.createElement("div");
									endDiv.className = "clearBoth";
									oLi.appendChild(endDiv);
								}
							}
							oFrag.appendChild(oLi);
						}
						content.appendChild(oFrag);
						var promptObj = commonFunction.getPromptArray(xyNum.value, BIndex); //{‘x1y1‘:2}
						for (var pItem in promptObj) {
							document.getElementById(pItem).textContent = promptObj[pItem];
						}
						for (var Bi = 0; Bi < BIndex.length; Bi++) {
							document.getElementById(‘x‘ + BIndex[Bi][0] + ‘y‘ + BIndex[Bi][1]).textContent = "b";
						}
						return true;
					},
					getOutArea: function() {
						while (outcontent.hasChildNodes()) {
							outcontent.removeChild(outcontent.firstChild);
						}
						var oFrag = document.createDocumentFragment();
						for (var xi = 0; xi < xyNum.value; xi++) {
							var oLi = document.createElement("div");
							oLi.id = xi;
							for (var yi = 0; yi < xyNum.value; yi++) {
								var oDiv = document.createElement("div");
								oDiv.id = xi + ‘y‘ + yi;
								oDiv.className = ‘outGrid‘;
								oLi.appendChild(oDiv);
								if (yi == xyNum.value - 1) {
									var endDiv = document.createElement("div");
									endDiv.className = "clearBoth";
									oLi.appendChild(endDiv);
								}
							}
							oFrag.appendChild(oLi);
						}
						outcontent.appendChild(oFrag);
					},
					checkEnd: function() {
						if (document.getElementsByClassName(‘outGrid‘).length > booNum.value) {
							return false;
						} else {
							return true;
						}
					},
					LClickButton: function(elem) {
						var result = false;
						var id = this.id;
						var interX = parseInt(id.split("y")[0]);
						var interY = parseInt(id.split("y")[1]);
						var doc = document.getElementById(‘x‘ + interX + ‘y‘ + interY);
						if (elem.button == 2) {
							if (this.className == ‘outGrid‘) {
								this.className = ‘guessOutGrid‘;
								this.textContent=‘?‘;
								result = false;
							}else if (this.className == ‘guessOutGrid‘) {
								this.className = ‘redOutGrid‘;
								this.textContent=‘7‘;
								result = false;
							}else if (this.className == ‘redOutGrid‘) {
								this.className = ‘outGrid‘;
								this.textContent=‘‘;
								result = false;
							}
						}else if (elem.button == 0) {
							if(this.className == ‘disOutGrid‘){
								result = false;
							}else if (this.className != ‘outGrid‘) {
								this.className = ‘outGrid‘;
								this.textContent=‘‘;
								return false;
							}else if (doc.textContent == ‘b‘) {
								alert(‘you are fail‘);
								while (outcontent.hasChildNodes()) {
									outcontent.removeChild(outcontent.firstChild);
								}
								result = false;
							} else if (doc.textContent != ‘‘) {
								this.className = ‘disOutGrid‘;
								result = true;
							} else {
								commonFunction.removeSplace(this)
								result = true;
							}
							if (result && commonFunction.checkEnd()) {
								while (outcontent.hasChildNodes()) {
									outcontent.removeChild(outcontent.firstChild);
								}
								alert(‘you are win‘)
							}
						}
						return result;
					},
					removeSplace: function removeS(elem) {
						if (elem.className == ‘disOutGrid‘) {
							return false;
						}
						var id = elem.id;
						var interX = parseInt(id.split("y")[0]);
						var interY = parseInt(id.split("y")[1]);
						var doc = document.getElementById(‘x‘ + interX + ‘y‘ + interY);
						if (doc.textContent != ‘b‘) {
							elem.className = ‘disOutGrid‘;
							if (doc.textContent != ‘‘) {
								return false;
							}
							if (interX > 0) {
								removeS(document.getElementById((interX - 1) + ‘y‘ + interY));
							}
							if (interX < xyNum.value - 1) {
								removeS(document.getElementById((interX + 1) + ‘y‘ + interY));
							}
							if (interY > 0) {
								removeS(document.getElementById((interX) + ‘y‘ + (interY - 1)));
							}
							if (interY < xyNum.value - 1) {
								removeS(document.getElementById((interX) + ‘y‘ + (interY + 1)));
							}
						}
					}
				},
				createContent = function() {
					if (commonFunction.getInnerArea()) {
						commonFunction.getOutArea();
						var outDiv = document.getElementsByClassName(‘outGrid‘);
						for (var i = 0; i < outDiv.length; i++) {
							outDiv[i].onmousedown = commonFunction.LClickButton;
						}
					};
				};
		</script>
	</body>

</html>

  直接将代码复制带一个文本中将后缀.txt改成.html即可。

《桃花庵--程序员版》
    原著:某网友
    改变:笑逗逗

写字楼里写字间,

写字间中程序员;

程序员来写程序,

又将程序换酒钱;

酒醒只在屏前坐,

酒醉还来屏下眠;

酒醉酒醒日复日,

屏前屏下年复年;

但愿醉游代码海,

不愿鞠躬人世间;

大富大贵勿牵往,

公交自行自相随;

别人笑我太疯癫,

我笑他人莫逍遥;

但见满街呆萌美,

哪个归得程序员。

时间: 2024-10-17 19:22:41

Js 网页版扫雷游戏代码实现的相关文章

CSS+js打造的网页版俄罗斯方块游戏

<HTML> <SCRIPT> parent.moveTo((screen.width-775)/2,(screen.height-540)/2); parent.resizeTo(775,540) </SCRIPT> <HEAD> <META NAME="Title" CONTENT="JScript Simple Tetris"> <TITLE>CSS+js打造的网页版俄罗斯方块游戏丨石家庄

wpf版扫雷游戏

近来觉得wpf做出来的界面很拉风,于是就去自学,发现感觉很不错,可是属性N多,太多了,而且质料也少,很多不会用,只会写基本的操作,样式直接百度黏贴在自己改改,于是属于自己的扫雷就出来了,也只能做这等游戏了,用的知识少,代码也不多,还能帮助自己提高熟练度,最后的感言还是多做才是王道啊,码农就是苦逼啊,wpf属性真是多啊,不过还是得学啊,下面也没什么好说的了,贴代码,扫雷也就一个递归而已 XAML 1 <Window x:Class="SweepMineUI.MainWindow"

c++ 控制台版 扫雷游戏

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

Weex 版扫雷游戏开发

扫雷是一个喜闻乐见的小游戏,今天在看 Weex 文档的过程中,无意中发现用 Weex 完全可以开发一个扫雷出来.当然这个扫雷和 Windows 那个有一点差距,不过麻雀虽小五脏俱全,随机布雷.自动挖雷.标雷那是必须有的. 最后的效果是这个样子的: 界面是简陋了一点,好歹是可以用的,要啥自行车.其实这个 demo 主要是为了实践几件事情: 1. 界面指示器2. 动态数据绑定3. 更复杂的事件 扫雷的布局里面只需要用上 repeat 指示器,表示元素的重复出现,比如说一个 9*9 的雷区,布局文件非

21款网页版html5小游戏源码

html5魅族创意的贪食蛇游戏源码下载 html5网页版打砖块小游戏源码下载 html5 3D立体魔方小游戏源码下载 html5网页版飞机躲避游戏源码下载 html5三国人物连连看游戏源码下载 js html5 2048数字游戏源码_2048网页版源码下载 html5盲打高手打飞字游戏下载_网页版英文打飞字游戏源码下载 jQuery flappy bird电脑版小游戏源码下载 网页版html5 3d俄罗斯方块游戏源码下载 jQuery html5迷宫游戏源码下载 html5网页游戏仿flappy

js选择颜色小游戏(随机生成不含重复数字的数组,通过数组中的数控制定义好的数组)

<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>js网页版小游戏</title> <style media="screen"> .wrap { width: 577px; outline: 1px solid hotpink; margin: 100px auto; box-shadow: 0 0 5px; } .

游戏——网页版别踩白块

一 项目简介 主要知识点:JavaScript.HTML.CSS这是一个主要用JS实现的网页版小游戏,游戏规则很简单,通过点击不断下落的黑块来消灭它并获取分数,如果不幸黑块掉落下来或点到了白色区域那么游戏就会终止.游戏截图如下: 二 游戏框架 整个游戏可分为以下几个步骤实现:1. HTML和CSS画出静态的游戏框架:2. DOM结构说明:游戏元素使用嵌套的div元素来实现,是一个4*4的方格地图:最外层容器main(一个) > 次外层容器container(一个) > 行容器row(四行) &

C++实现简单的扫雷游戏(控制台版)

C++新手的代码,请各位多包涵. 用C++写的一个简单的控制台版扫雷游戏.玩家通过输入方块的坐标来翻开方块. 只是一个雏形,能够让玩家执行翻开方块的操作并且判断输赢,还未添加标记方块.游戏菜单.记录游戏时间.重新开一局等等的功能. 玩家输入坐标的方式来翻开方块只适用于小型的“雷区”,若“雷区”大了,用坐标会变得很不方便. 代码片段扫雷V1.1 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

w_code - 网页版oi试题管理

这个是C_code的网页版,C_code代码过于简单,且个人认为意义不大,停止更新,取而代之的是网页版的W_code,比C_code更加好看使用简介方便 整个系统的代码已经在github上开源,我会经常维护,若有什么好点子,欢迎告诉我! 示例站点:https://rcxzsc.tk 原文地址:https://www.cnblogs.com/rcxzsc/p/9813601.html