简单的扫雷游戏制作

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
.box{
position:relative;
}
.father{
position: relative;
}
.box div{
width:20px;
height:20px;
background-color: #ccc;
border:2px solid #666;
border-top-color: #fff;
border-left-color: #fff;
position:absolute;
text-align: center;
}
.shadow{
position:absolute;
top:0;
left:0;
background-color: rgba(0,0,0,.5);
display: none;
text-align: center;
}
.btn{
margin-top:100px;
width:80px;
height:30px;
}
.win{
position:absolute;
top:0;
left:0;
background-color: rgba(0,0,0,.5);
display: none;
text-align: center;
color:#fff;
}
</style>
</head>
<body>
<section class="father">
<div class="box"></div>
<div class="shadow">
<input type="button" class = "btn" value="再来一次"/>
</div>
<div class="win">
<p>少年恭喜过关</p>
<input type="button" class = "btn1" value="再来一次"/>
</div>
</section>

</body>
<script type="text/javascript">
// 计算雷点
var index = 0;
// 生成页面
page(10,10);
state();
leiClick();
leiM();
leiOpen();
More();
rightClick();
//封装界面初始值
function state(){
// 设置界面宽度
var dives = document.querySelectorAll('.box div');

var box = document.querySelector('.box');

var shadow = document.querySelector('.shadow');

var win1 = document.querySelector('.win');

box.style.width = dives.length/10*24 + 'px';

box.style.height = dives.length/10*24 + 'px';

shadow.style.width = dives.length/10*24 + 'px';

shadow.style.height = dives.length/10*24 + 'px';
win1.style.width = dives.length/10*24 + 'px';

win1.style.height = dives.length/10*24 + 'px';
}
// 封装生成页面函数
function page(row,con){

var box = document.querySelector('.box');

var html = '';

for(var i =0;i<row;i++){

for(var j =0;j<con;j++){

html += '<div style="top:'+i*24+'px;left:'+j*24+'px;"></div>';

}
}
box.innerHTML = html;
}
// 给雷点添加点击事件
function leiClick(){
// 设置雷点
var dives = document.querySelectorAll('.box div');

var num = 10;

var arr = [];

for(var i =0;i<num;i++){

var n =Math.floor(Math.random()*dives.length);


var onOff = false;

for(var j =0;j<arr.length;j++){

if(n==arr[j]){
onOff = true;
break;
}
}
if(!onOff){
arr.push(n);
}else{
i--;
}
}
// 布置雷点
for(var i =0;i<arr.length;i++){
dives[arr[i]].className = 'lei';
}
for(var i =0;i<arr.length;i++){

dives[arr[i]].onclick = function(){
if (this.onOff) return;
var lei = document.querySelectorAll('.lei');

var shadow = document.querySelector('.shadow');

shadow.style.display = 'block';

fn(0);

function fn(num){
setTimeout(function(){

lei[num].style.backgroundColor = 'red';

lei[num].innerHTML = '雷';

if(num+1<lei.length){

fn(num+1);

}
},200)
}

}
}
}
// 计算雷点个数
function leiM(){
var dives = document.querySelectorAll('.box div');

for(var i =0;i<dives.length;i++){

if(dives[i].className=='lei') continue;

var num = 0;
// 上
if(dives[i-10]&&dives[i-10].className=='lei'){
num++;
}
//下
if(dives[i+10]&&dives[i+10].className=='lei'){
num++;
}
if(i%10!=0){
// 左
if(dives[i-1]&&dives[i-1].className=='lei'){
num++;
}
//左上
if(dives[i-11]&&dives[i-11].className=='lei'){
num++;
}
//左下
if(dives[i+9]&&dives[i+9].className=='lei'){
num++;
}
}
if(i%10!=9){
// 右
if(dives[i+1]&&dives[i+1].className=='lei'){
num++;
}
// 右上
if(dives[i-9]&&dives[i-9].className=='lei'){
num++;
}
// 右下
if(dives[i+11]&&dives[i+11].className=='lei'){
num++;
}
}
if(num>0){
dives[i].num = num;
}

}
}
//打开空雷点
function leiOpen(){
var dives = document.querySelectorAll('.box div');

for(var i =0;i<dives.length;i++){

if(dives[i].className!='lei'){

dives[i].index = i;

dives[i].onclick = function(){
var winGame = document.querySelector('.win')
findLei(dives,this.index);
if(index==90){
winGame.style.display = 'block';
win();
}
}
}
}
}
// 再玩一次
function More(){
var btn = document.querySelector('.btn');
btn.onclick = function(){
index = 0;
var shadow = document.querySelector('.shadow');
shadow.style.display = 'none';
// 生成页面
page(10,10);
state();
leiClick();
leiM();
leiOpen();
rightClick();

}
}
function win(){
var btn = document.querySelector('.btn1');
btn.onclick = function(){
index = 0;
var win1 = document.querySelector('.win');
win1.style.display = 'none';
// 生成页面
page(10,10);
state();
leiClick();
leiM();
leiOpen();
rightClick();

}
}

function findLei(dives,i){
if(dives[i].onOff) return;

dives[i].onOff = true;
if(dives[i].onOff) index++;
console.log(index);
dives[i].style.border = '1px solid #ccc';

dives[i].innerHTML = dives[i].num||'';

dives[i].style.backgroundColor = '#f1f1f1';

dives[i].style.width = '22px';

dives[i].style.height = '22px';

if(!dives[i].num){

if(dives[i-10]&&dives[i-10].className!='lei'){

findLei(dives,i-10);
}
//下
if(dives[i+10]&&dives[i+10].className!='lei'){

findLei(dives,i+10);

}
if(i%10!=0){
// 左
if(dives[i-1]&&dives[i-1].className!='lei'){

findLei(dives,i-1);
}
//左上
if(dives[i-11]&&dives[i-11].className!='lei'){

findLei(dives,i-11);

}
//左下
if(dives[i+9]&&dives[i+9].className!='lei'){

findLei(dives,i+9);

}
}
if(i%10!=9){
// 右
if(dives[i+1]&&dives[i+1].className!='lei'){

findLei(dives,i+1);

}
// 右上
if(dives[i-9]&&dives[i-9].className!='lei'){

findLei(dives,i-9);

}
// 右下
if(dives[i+11]&&dives[i+11].className!='lei'){

findLei(dives,i+11);

}
}
}


}

function rightClick(){
var dives = document.querySelectorAll('div');
for(var i =0;i<dives.length;i++){
dives[i].οncοntextmenu=function(ev){
var ev = ev||event;
ev.preventDefault();
if(!this.onOff){
this.style.backgroundColor = 'blue';
this.onOff = true;
}else{
this.style.backgroundColor = '';
this.onOff = false;
}

}
}
}

</script>
</html>

WEB前端学习交流群21 598399936

 

转载于:https://www.cnblogs.com/luludehuhuan/p/8109228.html

### 回答1: 要制作一个扫雷游戏图片,在Excel中可以通过以下步骤实现: 1. 打开Excel,创建一个新的工作表。 2. 在表格中选择合适的大小,可以根据实际需要自行调整。 3. 使用表格工具栏中的“绘图”功能,在工作表中绘制游戏地图的框架。你可以使用矩形工具来绘制游戏的每个方块。 4. 然后,使用其他绘图工具(如画笔、线条、填充)在方块中绘制雷和数字等游戏元素。可以使用不同的颜色和样式来区分不同类型的方块。 5. 如果需要,可以使用文本工具来添加数字或文字标签,用于显示雷和周围方块中的数字。 6. 当绘制完整的游戏地图后,可以根据自己的喜好进行美化。可以调整方块的大小、颜色、字体样式等等。 总结起来,要制作扫雷游戏图片,你只需要在Excel中利用表格和绘图工具绘制游戏地图的框架,然后使用其他绘图工具绘制游戏元素,如雷和数字。最后,可以美化图片以增加视觉效果。希望这些步骤对你有所帮助! ### 回答2: 要制作Excel中的扫雷游戏,首先需要了解扫雷游戏的基本规则和游戏界面。下面是制作扫雷游戏图片的步骤: 1. 打开Excel并创建一个新的工作表。 2. 使用绘图工具栏上的形状工具,绘制一个正方形或矩形,这将是游戏的主要游戏区域。 3. 在游戏区域中,使用线条工具或形状工具绘制水平和垂直的线条,将游戏区域分割成小方块。这些小方块的数量和大小应根据实际需要进行调整。 4. 在小方块中,使用绘图工具绘制雷的图标。可以使用闪电形状或任何其他形状来表示雷。 5. 使用Excel的插入图片功能,插入不同颜色或图案的旗子图标,用于标记玩家已经发现的雷。 6. 在游戏区域的边缘或其他适当位置,使用绘图工具绘制数字。这些数字将表示相邻方块中的雷的数量。 7. 使用填充颜色或纹理,给游戏区域、雷和数字方格添加一些装饰效果。 8. 可以通过在Excel中添加按钮,为游戏添加重置和退出功能。 9. 最后,根据需要调整游戏区域的大小和比例。 完成上述步骤后,你就可以在Excel中制作一个简单扫雷游戏图片了。你可以根据实际需要进一步修改和完善游戏界面,添加其他功能,使得游戏更加有趣。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值