您的位置:

js版扫雷实现代码原理不错,js 扫雷

js版扫雷实现代码原理不错,js 扫雷

更新:

本文目录一览:

js实现网页版扫雷,新手,如何实现除显示当周边无雷时将周边的无雷区全部显示出来。

用递归啊。你肯定已经做了一个方法用来检测当前点周边8个点是否无雷了吧?对于无雷的点逐个再次调用该方法。

以下是伪码示例. isBad是用来检测指定的点是否是雷的方法

function checkRimPoint(x, y) {

    var points = [[x-1,y-1],[x,y-1],[x+1,y-1],[x-1,y],[x+1,y],[x-1,y+1],[x,y+1],[x+1,y+1];

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

        if (! isBad(points[i][0], points[i][1])) {

            showPoint(points[i][0], points[i][1]));//这个不是雷,调用方法显示这个点

            checkRimPoint(points[i][0], points[i][1])); //对该点递归处理

        }

    }

}

以上只是个思路,没有实际价值哦,我记得展开后的效果一种可能是到边界了,另一种可能就是显示周围有几个雷的那种数字框。不过核心就是递归处理。

如果有帮助的话望采纳

js编写扫雷中,用for(i

for(var i=0;i100;i++){

       odivs[j].indexs = i; 

     if(odivs[j].attri=='default')

         odivs[j].onclick= function(){

             this.style.background='#fff';

             rec(odivs[j].indexs+1);

         }

     else

         if(odivs[j].attri!='mine')

         {

             odivs[j].onclick=function(){

             this.innerHTML=this.attri;

             this.style.background='#fff';

         }

    }

}

扫雷点到空格时的算法 跪求

从手工点开的这个空格进行处理,按上右下左或你自己定义的一个顺序来判断相应位置的格式是否是空格且未被点开,如果不是,则跳过,如果是,则将其自动点开,同时把这几个位置加入队列后续处理。

简单的流程图示意:

当前位置是空白位置?----否--- 非空白的处理

        |

        | 是

        |

        V

    加入队列

        |

        V

+---队列为空?--------是--- 结束

|       |

|       |否

|       |

|       V

|  第一个元素出队

|       |

|       V

|  点开该元素所指的位置

|       |

|       V

|  上左下右的位置如果是空白且未点开则入队

|       |

--------+

上面是非递归的方案,递归方案则更容易了:

伪代码算法描述如下:

Click(pos)    // 点开 pos 这个位置

{

    // IsClicked() 判断是否是已经点开的格子

    if (IsClicked(pos))

        return;

    

    // IsBlank() 判断是否是空白格子

    if (! IsBlank(pos))

    {

        点开非空白格子的处理

    }

    

    // 下面是点开空白格子的处理

    ClickBlank(pos);

}

ClickBlank(pos)

{

    if (! IsBlank(pos))

        rerurn;

    

    if (IsClicked(pos))

        return;

    // 下面对四个方向的格子进行自动点开

    // 你需要计算四向的格子位置,无效的直接返回

     

    ClickBlank(pos上面的格子);

    ClickBlank(pos右面的格子);

    ClickBlank(pos下面的格子);

    ClickBlank(pos左面的格子);

}

求高手帮忙一个“扫雷”游戏的JAVA的程序代码

import javax.swing.ImageIcon; //程序入口

public class Block {

String name; //名字,比如"雷"或数字

int aroundMineNumber; //周围雷的数目

ImageIcon mineIcon; //雷的图标

boolean isMine=false; //是否是雷

boolean isMark=false; //是否被标记

boolean isOpen=false; //是否被挖开

public void setName(String name) {

this.name=name;

}

//设置周围的雷数

public void setAroundMineNumber(int n) {

aroundMineNumber=n;

}

//获得周围的雷数

public int getAroundMineNumber() {

return aroundMineNumber;

}

public String getName() {

return name;

}

//判断是否是雷

public boolean isMine() {

return isMine;

}

//设置是否为雷

public void setIsMine(boolean b) {

isMine=b;

}

//设置雷的图标

public void setMineIcon(ImageIcon icon){

mineIcon=icon;

}

//获得雷的图标

public ImageIcon getMineicon(){

return mineIcon;

}

//确定雷是否被挖开

public boolean getIsOpen() {

return isOpen;

}

//设置为已经被挖开

public void setIsOpen(boolean p) {

isOpen=p;

}

//返回此处是否已经被标记

public boolean getIsMark() {

return isMark;

}

//设置此处是否已经被标记

public void setIsMark(boolean m) {

isMark=m;

}

import javax.swing.*;

import java.awt.*;

public class BlockView extends JPanel{

JLabel blockNameOrIcon; //用来显示Block对象的name、number和mineIcon属性

JButton blockCover; //用来遮挡blockNameOrIcon.

CardLayout card; //卡片式布局

BlockView(){

card=new CardLayout();

setLayout(card);

blockNameOrIcon=new JLabel("",JLabel.CENTER);

blockNameOrIcon.setHorizontalTextPosition(AbstractButton.CENTER);

blockNameOrIcon.setVerticalTextPosition(AbstractButton.CENTER);

blockCover=new JButton();

add("cover",blockCover);

add("view",blockNameOrIcon);

}

//给出视觉效果变化

public void giveView(Block block){

// 如果是雷,将对应的图标和文字更改

if(block.isMine){

blockNameOrIcon.setText(block.getName());

blockNameOrIcon.setIcon(block.getMineicon());

}

else {

int n=block.getAroundMineNumber();

if(n=1)

blockNameOrIcon.setText(""+n);

else

blockNameOrIcon.setText(" ");

}

}

public void seeBlockNameOrIcon(){

card.show(this,"view");

validate();

}

public void seeBlockCover(){

card.show(this,"cover");

validate();

}

public JButton getBlockCover(){

return blockCover;

}

}

js版扫雷实现代码原理不错,js 扫雷

本文目录一览: 1、js实现网页版扫雷,新手,如何实现除显示当周边无雷时将周边的无雷区全部显示出来。 2、js编写扫雷中,用for(i 3、扫雷点到空格时的算法 跪求 4、求高手帮忙一个“扫雷”游戏的

2023-12-08
php做扫雷(php红包扫雷平台源码)

2022-11-09
java扫雷,Java扫雷脚本

2023-01-09
扫雷java,扫雷java大作业

2023-01-10
java扫雷,Java扫雷小游戏设计论文

2023-01-09
扫雷c语言课程设计,扫雷c语言程序设计

2023-01-06
c语言实现扫雷秒杀挂,c语言 扫雷

2022-11-23
c语言简单扫雷,用c语言写扫雷

2022-11-30
c语言扫雷函数功能,扫雷c语言最简单代码

2023-01-07
用Python编写扫雷游戏的教程

2023-05-21
扫雷编程c语言,c语言编写扫雷

2022-11-26
js制作2048小游戏代码下载(js做2048)

本文目录一览: 1、学习前端开发都学习什么内容? 2、有哪些足不出户,能用十天掌握的新技能? 3、如何在已有的iOS APP原生代码中整合React Native 4、我写2048网页版的游戏用jQu

2023-12-08
c语言大作业扫雷,c语言编扫雷小游戏

2023-01-03
fortify扫描js文件,fortify代码扫描

本文目录一览: 1、进行代码扫描用那个软件比较好? 2、Fortify扫面代码出现Log Forging错误怎么解决。 3、fortify 如何进行xlC编译器的扫描 4、fortify怎么扫描jav

2023-12-08
FMCW雷达测距原理详解

2023-05-21
js网页条码识别(js扫描条形码)

本文目录一览: 1、网页中如何用js实现微信中的长按识别二维码的功能吗 2、在手机浏览器里用javascript打开摄像头扫描条形码怎么做 3、如何用js实现调用手机摄像头扫描条形码然后带出条形码的值

2023-12-08
java实现js解析,js解析机制

2022-11-25
c语言地雷,c语言地雷游戏

2022-11-28
cf稀有js,cf稀有角色

本文目录一览: 1、CF稀有角色有那些? 2、CF中什么武器最好打JS?? 3、CF里面JS谁最好? 4、CF生化模式的JS有什么属性[所有的,包括终结者和普通的]?有5分哦 5、cf生化打JS技巧

2023-12-08
cesiumjs详细教程(cesium开发教程)

本文目录一览: 1、Cesium在js中调用entity的infobox单机事件 2、Cesium初始化选项 3、Cesium随笔:视锥绘制(上) 4、cesium如何搭建dat.gui 5、Cesi

2023-12-08