当前位置:首页 > 代码 > 正文

扫雷java代码(简单扫雷源代码java)

admin 发布:2022-12-19 17:56 165


今天给各位分享扫雷java代码的知识,其中也会对简单扫雷源代码java进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

用java怎么写扫雷程序

首先要写一个UI,也就是操作界面,使用java.swing.*内的东西就可以搞定;

其次写一个hander,也就是具体的按钮响应,UI的初始化(哪里有雷),怎么触发雷和其他的;

一般来说简单的扫雷模型就好了,如果需要更有意思点,可以写一些数据库的操作内容的tool类具体的就是处理历史操作记录,场均数据或多人竞技的特点。

如果你是说你没有设计思路,我可以给你个提示:递归算法是触发扫雷的方法,初始化用随机数来做。

求一个java扫雷游戏的程序源代码,尽量多点注释,要确实可用的!急急急急急急急急急急急急!!!!!

import java.awt.BorderLayout;

import java.awt.Container;

import java.awt.Font;

import java.awt.GridLayout;

import java.awt.Insets;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JPanel;

import javax.swing.Timer;

public class ScanLei1 extends JFrame implements ActionListener{

private static final long serialVersionUID = 1L;

private Container contentPane;

private JButton btn;

private JButton[] btns;

private JLabel b1;

private JLabel b2;

private JLabel b3;

private Timer timer;

private int row=9;

private int col=9;

private int bon=10;

private int[][] a;

private int b;

private int[] a1;

private JPanel p,p1,p2,p3;

public ScanLei1(String title){

super(title);

contentPane=getContentPane();

setSize(297,377);

this.setBounds(400, 100, 400, 500);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

timer =new Timer(1000,(ActionListener) this);

a = new int[row+2][col+2];

initGUI();

}

public void initGUI(){

p3=new JPanel();

b=bon;

JMenuBar menuBar=new JMenuBar();

JMenu menu1=new JMenu("游戏");

JMenu menu2=new JMenu("帮助");

JMenuItem mi1=new JMenuItem("初级");

JMenuItem mi2 = new JMenuItem("中级");

JMenuItem mi3 =new JMenuItem("高级");

mi1.addActionListener(this);

menu1.add(mi1);

mi2.addActionListener(this);

menu1.add(mi2);

mi3.addActionListener(this);

menu1.add(mi3);

menuBar.add(menu1);

menuBar.add(menu2);

p3.add(menuBar);

b1=new JLabel(bon+"");

a1=new int[bon];

btn =new JButton("开始");

btn.addActionListener(this);

b2=new JLabel("0");

b3=new JLabel("");

btns=new JButton[row*col];

p=new JPanel();

p.setLayout(new BorderLayout());

contentPane.add(p);

p.add(p3,BorderLayout.NORTH);

//combo=new JComboBox(new Object[]{"初级","中级","高级"} );

//加监听

/*combo.addItemListener(new ItemListener(){

}});*/

p1=new JPanel();

//在那个位置

//(( FlowLayout)p1.getLayout()).setAlignment( FlowLayout.RIGHT);

p1.add(b1);

p1.add(btn);

p1.add(b2);

p1.add(b3);

p.add(p3,BorderLayout.NORTH);

p.add(p1,BorderLayout.CENTER);

p2=new JPanel();

p2.setLayout(new GridLayout(row,col,0,0));

for(int i=0;irow*col;i++){

btns[i]=new JButton("");

btns[i].setMargin(new Insets(0,0,0,0));

btns[i].setFont(new Font(null,Font.BOLD,25));

btns[i].addActionListener(this);

btns[i].addMouseListener(new NormoreMouseEvent());

p2.add(btns[i]);

}

contentPane.add(p,BorderLayout.NORTH);

contentPane.add(p2,BorderLayout.CENTER);

}

public void go(){

setVisible(true);

}

public static void main(String[] args){

new ScanLei1("扫雷").go();

}

public void out(int[][] a,JButton[] btns,ActionEvent e,int i,int x,int y){

int p=1;

if(a[x][y]==0){

a[x][y]=10;

btns[i].setEnabled(false); //33

for(int l=y-1;l=y+1;l++){

int m=x-1-1;

int n=l-1;

p=1;

System.out.println(a[1][2]);

if(n-1ncolm-1mrow)

{

for(int q=0;qrowp==1;q++){//col--row;

if(((n+col*q)=(m*col))((n+col*q)(m+1)*col)){

if(a[x-1][l]!=0a[x-1][l]!=10){

btns[n+col*q].setText(a[x-1][l]+"");

a[x-1][l]=10;

btns[n+col*q].setEnabled(false);

}

else if(a[x-1][l]==0){

//a[x-1][l]=10;

btns[n+col*q].setEnabled(false);

out(a,btns,e,n+col*q,x-1,l); ////55////

a[x-1][l]=10;

btns[n+col*q].setEnabled(false);

}

p=0;

}

}

}

p=1;

m=x;

if(n-1ncolm-1mcol)

{

for(int q=0;qrowp==1;q++){

if(((n+col*q)=(m*col))((n+col*q)(m+1)*col)){

if(a[x+1][l]!=0a[x+1][l]!=10){

btns[n+col*q].setText(a[x+1][l]+"");

a[x+1][l]=10;

btns[n+col*q].setEnabled(false);

}

else if(a[x+1][l]==0){

out(a,btns,e,n+col*q,x+1,l);///55////

a[x+1][l]=10;

btns[n+col*q].setEnabled(false);

}

p=0;

}

}

}

}

int m=x-1;

int n=y-1-1;

p=1;

if(n-1ncolm-1mcol)

{

for(int q=0;qrowp==1;q++){

if(((n+col*q)=(m*col))((n+col*q)(m+1)*col)){

if(a[x][y-1]!=0a[x][y-1]!=10){

btns[n+col*q].setText(a[x][y-1]+"");

a[x][y-1]=10;

btns[n+col*q].setEnabled(false);

}

else if(a[x][y-1]==0){

out(a,btns,e,n+col*q,x,y-1);

a[x][y-1]=10;

btns[n+col*q].setEnabled(false);

}

p=0;

}

}

}

p=1;

m=x-1;

n=y+1-1;

if(n-1ncolm-1mcol)

{

for(int q=0;qrowp==1;q++){

if(((n+col*q)=(m*col))((n+col*q)(m+1)*col)){

if(a[x][y+1]!=0a[x][y+1]!=10){

btns[n+col*q].setText(a[x][y+1]+"");

a[x][y+1]=10;

btns[n+col*q].setEnabled(false);

}

else if(a[x][y+1]==0){

out(a,btns,e,n+col*q,x,y+1);

a[x][y+1]=10;

btns[n+col*q].setEnabled(false);

}

p=0;

}

}

}

}

}

public void actionPerformed(ActionEvent e) {

if(e.getActionCommand()=="初级"){

row=9;

col=9;

bon=10;

a1=new int[bon];

b=bon;

//setSize(297,377);

a = new int[row+2][col+2];

this.remove(p2);

timer.stop();

b1.setText("10");

b2.setText("0");

b3.setText("");

btns=new JButton[row*col];

p2=new JPanel();

p2.setLayout(new GridLayout(row,col,0,0));

for(int i=0;irow*col;i++){

btns[i]=new JButton(" ");

btns[i].setMargin(new Insets(0,0,0,0));

btns[i].setFont(new Font(null,Font.BOLD,25));

btns[i].addActionListener(this);

btns[i].addMouseListener(new NormoreMouseEvent());

p2.add(btns[i]);

}

contentPane.add(p2,BorderLayout.CENTER);

//setSize(297,377);

this.pack();

for(int i=0;irow*col;i++){

btns[i].setText(" ");

btns[i].setEnabled(true);

}

for(int i=0;irow+2;i++){

for(int j=0;jcol+2;j++){

a[i][j]=0;

}

}

}else if(e.getActionCommand()=="中级"){

row=16;

col=16;

bon=40;

//setSize(33*col,33*row+80);

a1=new int[bon];

a = new int[row+2][col+2];

b=bon;

this.remove(p2);

timer.stop();

b1.setText("40");

b2.setText("0");

b3.setText("");

btns=new JButton[row*col];

p2=new JPanel();

p2.setLayout(new GridLayout(row,col,0,0));

for(int i=0;irow*col;i++){

btns[i]=new JButton(" ");

btns[i].setMargin(new Insets(0,0,0,0));

btns[i].setFont(new Font(null,Font.BOLD,25));

btns[i].addActionListener(this);

btns[i].addMouseListener(new NormoreMouseEvent());

p2.add(btns[i]);

}

contentPane.add(p2,BorderLayout.CENTER);

this.pack();

//setSize(33*col,33*row+80);

for(int i=0;irow*col;i++){

btns[i].setText("");

btns[i].setEnabled(true);

}

for(int i=0;irow+2;i++){

for(int j=0;jcol+2;j++){

a[i][j]=0;

}

}

}else if(e.getActionCommand()=="高级"){

row=16;

col=32;

bon=99;

setSize(33*col,33*row+80);

a1=new int[bon];

a = new int[row+2][col+2];

b=bon;

this.remove(p2);

timer.stop();

b1.setText("99");

b2.setText("0");

b3.setText("");

btns=new JButton[row*col];

p2=new JPanel();

p2.setLayout(new GridLayout(row,col,0,0));

for(int i=0;irow*col;i++){

btns[i]=new JButton(" ");

btns[i].setMargin(new Insets(0,0,0,0));

btns[i].setFont(new Font(null,Font.BOLD,25));

btns[i].addActionListener(this);

btns[i].addMouseListener(new NormoreMouseEvent());

p2.add(btns[i]);

}

contentPane.add(p2,BorderLayout.CENTER);

//setSize(33*col,33*row+80);

this.pack();

for(int i=0;irow*col;i++){

btns[i].setText("");

btns[i].setEnabled(true);

}

for(int i=0;irow+2;i++){

for(int j=0;jcol+2;j++){

a[i][j]=0;

}

}

}

if(e.getSource()==btn){

timer.start();

b=bon;

b3.setText("");

//System.out.println(bon);

//清空

for(int i=0;irow*col;i++){

btns[i].setText("");

btns[i].setEnabled(true);

}

for(int i=0;irow+2;i++){

for(int j=0;jcol+2;j++){

a[i][j]=0;

}

}

//产生随机数

for(int i=0;ibon;i++)

{ int p=1;

int m=(int)(Math.random()*row*col);

while(p==1){

int l=1;

int j;

for( j=0;jil==1;j++){

if(a1[j]==m){

m=(int)(Math.random()*row*col);

l=0;

}

}

if(j==i){

a1[i]=m;

p=0;

}

}

}

b1.setText(bon+"");

b2.setText("0");

//布雷

for(int i=0;ibon;i++){

int x=(a1[i]/col+1);

int y=(a1[i]%col+1);

a[x][y]=100;

}

for(int i=0;irow+2;i++){

for(int j=0;jcol+2;j++){

if(i==0||j==0||i==row+1||j==col+1){

a[i][j]=0;

}

}

}

for(int i=1;i=row;i++){

for(int j=1;j=col;j++){

if(a[i][j]!=100){

for(int l=j-1;l=j+1;l++){

if(a[i-1][l]==100){

a[i][j]++;

}

if(a[i+1][l]==100){

a[i][j]++;

}

}

if(a[i][j-1]==100){

a[i][j]++;

}

if(a[i][j+1]==100){

a[i][j]++;

}

}

}

}

}

if(e.getSource()==timer)

{

String time=b2.getText().trim();

int t=Integer.parseInt(time);

//System.out.println(t);

if(t=600){

timer.stop();

}else{

t++;

b2.setText(t+"");

}

}

for(int i=0;icol*row;i++){

if(btns[i].getText()!="★")

{

int x=i/col+1;

int y=i%col+1;

if(e.getSource()==btns[i]a[x][y]==100){

btns[i].setText("★");

btns[i].setEnabled(false);

a[x][y]=10;

for(int k=0;kcol*row;k++){

int m1=k/col+1;

int n1=k%col+1;

if(a[m1][n1]!=10btns[k].getText()=="★"){

btns[k].setText("*o*");

}

}

for(int j=0;jcol*row;j++){

int m=j/col+1;

int n=j%col+1;

if(a[m][n]==100){

btns[j].setText("★");

btns[j].setEnabled(false);

b3.setText("你输了 !!");

}

btns[j].setEnabled(false);

a[m][n]=10;

}

timer.stop();

}

else if(e.getSource()==btns[i]){

if(a[x][y]==0){

out(a,btns,e,i,x,y);

a[x][y]=10;

btns[i].setEnabled(false);

}

if(a[x][y]!=0a[x][y]!=10){

btns[i].setText(a[x][y]+"");

btns[i].setEnabled(false);

a[x][y]=10;

}

}

}else if(btns[i].getText()=="★"){

}

}

}

class NormoreMouseEvent extends MouseAdapter{

public void mouseClicked(MouseEvent e) {

System.out.println(b);

for(int i=0;icol*row;i++){

int x1=i/col+1;

int y1=i%col+1;

if(e.getSource()==btns[i]btns[i].getText()!="★"a[x1][y1]!=10)

{

if(e.getButton()==MouseEvent.BUTTON3){

btns[i].setText("★");

b--;

if(b==0){

int flag=0;

for(int j=0;jcol*row;j++){

int x=j/col+1;

int y=j%col+1;

if(a[x][y]==100btns[j].getText()=="★"){

flag++;

}

}

if(flag==bon){

timer.stop();

b3.setText("你赢了!");

}

}

b1.setText(b+"");

}

}else if(e.getSource()==btns[i]btns[i].getText()=="★"a[x1][y1]!=-1){

if(e.getButton()==MouseEvent.BUTTON3){

btns[i].setText("");

b++;

if(bbon){

b1.setText(bon+"");

}

else{

b1.setText(b+"");

}

btns[i].setEnabled(true);

}

}

}

}

}

}

求高手帮忙一个“扫雷”游戏的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;

}

}

运行在Eclipse环境下的java扫雷游戏的初级代码是什么?

import java.awt.Button;\x0d\x0aimport java.util.Set;\x0d\x0a// 每一个小方块类\x0d\x0apublic class Diamond extends Button {\x0d\x0aprivate Diamond[] diamonds;\x0d\x0a\x0d\x0a// 该小方块周围的八个方向上的小方块\x0d\x0aprivate Diamond east;\x0d\x0aprivate Diamond north;\x0d\x0aprivate Diamond northEast;\x0d\x0aprivate Diamond northWest;\x0d\x0aprivate Diamond south;\x0d\x0aprivate Diamond southEast;\x0d\x0aprivate Diamond southWest;\x0d\x0aprivate Diamond west;\x0d\x0a\x0d\x0aprivate boolean isBomb;// 是否是雷\x0d\x0aprivate boolean isChange;// 又没有被翻过\x0d\x0aprivate int no;// 产生的方块的编号\x0d\x0a\x0d\x0a// 持有所有小方块的引用,方便进行操作\x0d\x0apublic Diamond(Diamond[] diamonds) {\x0d\x0athis.diamonds = diamonds;\x0d\x0a}\x0d\x0a\x0d\x0a// 按键时方块发生改变\x0d\x0apublic boolean change() {\x0d\x0athis.isChange = true;// 说明已经翻过了\x0d\x0aif(isBomb) {// 触雷\x0d\x0a//this.setBackground(Color.red);\x0d\x0areturn true;\x0d\x0a} else {// 不是雷,就显示周围雷的数目\x0d\x0a//this.setLabel(this.getNearBombNo() + "");\x0d\x0athis.setLabel(this.getNearBombNo() + "");\x0d\x0a//if(this.getNearBombNo() == 0) {\x0d\x0a//this.moveon();\x0d\x0a//}\x0d\x0areturn false;\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0a// 获得该小方块周围雷的数量\x0d\x0apublic int getNearBombNo() {\x0d\x0aint no = 0;\x0d\x0aif(this.northWest != null this.northWest.isBomb) no++;\x0d\x0aif(this.north != null this.north.isBomb) no++;\x0d\x0aif(this.northEast != null this.northEast.isBomb) no++;\x0d\x0aif(this.east != null this.east.isBomb) no++;\x0d\x0aif(this.southEast != null this.southEast.isBomb) no++;\x0d\x0aif(this.south != null this.south.isBomb) no++;\x0d\x0aif(this.southWest != null this.southWest.isBomb) no++;\x0d\x0aif(this.west != null this.west.isBomb) no++;\x0d\x0a\x0d\x0areturn no;\x0d\x0a}\x0d\x0a\x0d\x0a// 获得该小方块周围的小方块\x0d\x0apublic Diamond getNearDimaond(int i) {\x0d\x0aint index = -1;\x0d\x0aswitch (i) {\x0d\x0acase 1:// 1表示西北,2,表示北,以此类推\x0d\x0aindex = no - 10;\x0d\x0aif(index return null;\x0d\x0a} else {\x0d\x0areturn diamonds[index];\x0d\x0a}\x0d\x0acase 2:\x0d\x0aindex = no - 9;\x0d\x0aif(index return null;\x0d\x0a} else {\x0d\x0areturn diamonds[index];\x0d\x0a}\x0d\x0acase 3:\x0d\x0aindex = no - 8;\x0d\x0aif(index return null;\x0d\x0a} else {\x0d\x0areturn diamonds[index];\x0d\x0a}\x0d\x0acase 4:\x0d\x0aindex = no + 1;\x0d\x0aif(no == 9 || no == 18 || no == 27 || no == 36 || no == 45 || no == 54 || no == 63 || no == 72 || no == 81) {\x0d\x0areturn null;\x0d\x0a} else {\x0d\x0areturn diamonds[index];\x0d\x0a}\x0d\x0acase 5:\x0d\x0aindex = no + 10;\x0d\x0aif(index = 81 ||no == 9 || no == 18 || no == 27 || no == 36 || no == 45 || no == 54 || no == 63 || no == 72 || no == 81) {\x0d\x0areturn null;\x0d\x0a} else {\x0d\x0areturn diamonds[index];\x0d\x0a}\x0d\x0acase 6:\x0d\x0aindex = no + 9;\x0d\x0aif(index 81) {\x0d\x0areturn null;\x0d\x0a} else {\x0d\x0areturn diamonds[index];\x0d\x0a}\x0d\x0acase 7:\x0d\x0aindex = no + 8;\x0d\x0aif(index = 81 || no==1 || no == 10 || no == 19 || no == 28 || no == 37 || no == 46 || no == 55 || no == 64 || no == 73) {\x0d\x0areturn null;\x0d\x0a} else {\x0d\x0areturn diamonds[index];\x0d\x0a}\x0d\x0acase 8:\x0d\x0aindex = no - 1;\x0d\x0aif(no==1 || no==10 || no == 19 || no == 28 || no == 37 || no == 46 || no == 55 || no == 64 || no == 73) {\x0d\x0areturn null;\x0d\x0a} else {\x0d\x0areturn diamonds[index];\x0d\x0a}\x0d\x0a}\x0d\x0areturn null;\x0d\x0a}\x0d\x0a\x0d\x0a// 递归,set是用来装已经翻过的小方块的,不然会死循环,为什么用set,因为set是不重复的\x0d\x0apublic void moveon(Set set) {\x0d\x0a\x0d\x0aset.add(this);// 先把自己加上\x0d\x0aif(this.getNorthWest() != null this.getNorthWest().isBomb == false) {\x0d\x0athis.getNorthWest().change();\x0d\x0a\x0d\x0aif(this.getNorthWest().getNearBombNo() == 0) {\x0d\x0aif(set.contains(this.getNorthWest()) == false)\x0d\x0athis.getNorthWest().moveon(set);\x0d\x0a}\x0d\x0a\x0d\x0aset.add(this.getNorthWest());\x0d\x0a}\x0d\x0a\x0d\x0aif(this.getNorth() != null this.getNorth().isBomb == false) {\x0d\x0athis.getNorth().change();\x0d\x0aif(this.getNorth().getNearBombNo() == 0) {\x0d\x0aif(set.contains(this.getNorth()) == false)\x0d\x0athis.getNorth().moveon(set);\x0d\x0a}\x0d\x0a\x0d\x0aset.add(this.getNorth());\x0d\x0a} \x0d\x0a\x0d\x0aif(this.getNorthEast() != null this.getNorthEast().isBomb == false) {\x0d\x0athis.getNorthEast().change();\x0d\x0aif(this.getNorthEast().getNearBombNo() == 0) {\x0d\x0aif(set.contains(this.getNorthEast()) == false)\x0d\x0athis.getNorthEast().moveon(set);\x0d\x0a}\x0d\x0a\x0d\x0aset.add(this.getNorthEast());\x0d\x0a} \x0d\x0a\x0d\x0aif(this.getEast() != null this.getEast().isBomb == false) {\x0d\x0athis.getEast().change();\x0d\x0aif(this.getEast().getNearBombNo() == 0) {\x0d\x0aif(set.contains(this.getEast()) == false)\x0d\x0athis.getEast().moveon(set);\x0d\x0a}\x0d\x0a\x0d\x0aset.add(this.getEast());\x0d\x0a} \x0d\x0a\x0d\x0aif(this.getSouthEast() != null this.getSouthEast().isBomb == false) {\x0d\x0athis.getSouthEast().change();\x0d\x0aif(this.getSouthEast().getNearBombNo() == 0) {\x0d\x0aif(set.contains(this.getSouthEast()) == false)\x0d\x0athis.getSouthEast().moveon(set);\x0d\x0a}\x0d\x0a\x0d\x0aset.add(this.getSouthEast());\x0d\x0a} \x0d\x0a\x0d\x0aif(this.getSouth() != null this.getSouth().isBomb == false) {\x0d\x0athis.getSouth().change();\x0d\x0aif(this.getSouth().getNearBombNo() == 0) {\x0d\x0aif(set.contains(this.getSouth()) == false)\x0d\x0athis.getSouth().moveon(set);\x0d\x0a}\x0d\x0a\x0d\x0aset.add(this.getSouth());\x0d\x0a} \x0d\x0a\x0d\x0aif(this.getSouthWest() != null this.getSouthWest().isBomb == false) {\x0d\x0athis.getSouthWest().change();\x0d\x0aif(this.getSouthWest().getNearBombNo() == 0) {\x0d\x0aif(set.contains(this.getSouthWest()) == false)\x0d\x0athis.getSouthWest().moveon(set);\x0d\x0a}\x0d\x0a\x0d\x0aset.add(this.getSouthWest());\x0d\x0a} \x0d\x0a\x0d\x0aif(this.getWest() != null this.getWest().isBomb == false) {\x0d\x0athis.getWest().change();\x0d\x0aif(this.getWest().getNearBombNo() == 0) {\x0d\x0aif(set.contains(this.getWest()) == false)\x0d\x0athis.getWest().moveon(set);\x0d\x0a}\x0d\x0a\x0d\x0aset.add(this.getWest());\x0d\x0a} \x0d\x0a}\x0d\x0a\x0d\x0a/*public Diamond[] getDiamonds() {\x0d\x0areturn diamonds;\x0d\x0a}*/\x0d\x0a\x0d\x0apublic Diamond getEast() {\x0d\x0areturn east;\x0d\x0a}\x0d\x0a\x0d\x0apublic int getNo() {\x0d\x0areturn no;\x0d\x0a}\x0d\x0a\x0d\x0apublic Diamond getNorth() {\x0d\x0areturn north;\x0d\x0a}\x0d\x0a\x0d\x0apublic Diamond getNorthEast() {\x0d\x0areturn northEast;\x0d\x0a}\x0d\x0a\x0d\x0apublic Diamond getNorthWest() {\x0d\x0areturn northWest;\x0d\x0a}\x0d\x0a\x0d\x0apublic Diamond getSouth() {\x0d\x0areturn south;\x0d\x0a}\x0d\x0a\x0d\x0apublic Diamond getSouthEast() {\x0d\x0areturn southEast;\x0d\x0a}\x0d\x0a\x0d\x0apublic Diamond getSouthWest() {\x0d\x0areturn southWest;\x0d\x0a}\x0d\x0a\x0d\x0apublic Diamond getWest() {\x0d\x0areturn west;\x0d\x0a}\x0d\x0a\x0d\x0apublic boolean isBomb() {\x0d\x0areturn isBomb;\x0d\x0a}\x0d\x0a\x0d\x0apublic boolean isChange() {\x0d\x0areturn isChange;\x0d\x0a}\x0d\x0a\x0d\x0apublic void setBomb(boolean isBomb) {\x0d\x0athis.isBomb = isBomb;\x0d\x0a}\x0d\x0a\x0d\x0apublic void setChange(boolean isChange) {\x0d\x0athis.isChange = isChange;\x0d\x0a}\x0d\x0a\x0d\x0apublic void setDiamonds(Diamond[] diamonds) {\x0d\x0athis.diamonds = diamonds;\x0d\x0a}\x0d\x0a\x0d\x0apublic void setEast(Diamond east) {\x0d\x0athis.east = east;\x0d\x0a}\x0d\x0a\x0d\x0apublic void setNo(int no) {\x0d\x0athis.no = no;\x0d\x0a}\x0d\x0a\x0d\x0apublic void setNorth(Diamond north) {\x0d\x0athis.north = north;\x0d\x0a}\x0d\x0a\x0d\x0apublic void setNorthEast(Diamond northEast) {\x0d\x0athis.northEast = northEast;\x0d\x0a}\x0d\x0a\x0d\x0apublic void setNorthWest(Diamond northWest) {\x0d\x0athis.northWest = northWest;\x0d\x0a}\x0d\x0a\x0d\x0apublic void setSouth(Diamond south) {\x0d\x0athis.south = south;\x0d\x0a}\x0d\x0a\x0d\x0apublic void setSouthEast(Diamond southEast) {\x0d\x0athis.southEast = southEast;\x0d\x0a}\x0d\x0a\x0d\x0apublic void setSouthWest(Diamond southWest) {\x0d\x0athis.southWest = southWest;\x0d\x0a}\x0d\x0a\x0d\x0apublic void setWest(Diamond west) {\x0d\x0athis.west = west;\x0d\x0a}\x0d\x0a\x0d\x0a}

求解,这是一个JAVA扫雷游戏,可是代码中没有雷,请问雷的那段代码是什么,高手指教

这个类就是雷的代码,它把雷当成一个对象,在其它地方调用,每次new Block(),就是创建一颗雷的。

下面给你加个测试方法,你慢慢看吧。

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.GridLayout;

import java.awt.Point;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import javax.swing.BorderFactory;

import javax.swing.Icon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.SwingUtilities;

public class Block extends JButton implements MouseListener

{

public static void main(String[] args) {

JFrame jf = new JFrame();

jf.setLayout(new GridLayout(3,3));

Block b1 = new Block();

Block b2 = new Block();

b2.设置是否是雷(true);

Block b3 = new Block();

Block b4 = new Block();

b4.设置是否是雷(true);

Block b5 = new Block();

Block b6 = new Block();

b6.设置是否是雷(true);

Block b7 = new Block();

Block b8 = new Block();

Block b9 = new Block();

b1.setText(""+b1.获取周围的雷数());

b2.setText(""+b2.获取周围的雷数());

b3.setText(""+b3.获取周围的雷数());

b4.setText(""+b4.获取周围的雷数());

b5.setText(""+b5.获取周围的雷数());

b6.setText(""+b6.获取周围的雷数());

b7.setText(""+b7.获取周围的雷数());

b8.setText(""+b8.获取周围的雷数());

b9.setText(""+b9.获取周围的雷数());

jf.add(b1);

jf.add(b2);

jf.add(b3);

jf.add(b4);

jf.add(b5);

jf.add(b6);

jf.add(b7);

jf.add(b8);

jf.add(b9);

jf.setSize(300, 300);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

jf.setVisible(true);

}

boolean 雷=false,

周围无雷=true;

int 周围的雷数=0;

int 探雷标记=-1;

JLabel label;

Point p;

public Block()

{

label=new JLabel();

setBorder(BorderFactory.createMatteBorder(1,

1,

0,

0,

Color.lightGray));

label.setBorder(BorderFactory.createMatteBorder(1,

1,

0,

0,

Color.lightGray));

label.setHorizontalAlignment(JLabel.CENTER);

label.setLayout(new BorderLayout());

label.add(this,BorderLayout.CENTER);

p=new Point(0,0);

addMouseListener(this);

}

public void 设置是否是雷(boolean b)

{

雷=b;

}

public boolean 判断是否是雷()

{

return 雷;

}

public void 设置是雷时的图标(Icon icon)

{

label.setIcon(icon);

}

public void 设置周围无雷时的图标(Icon icon)

{

label.setIcon(icon);

}

public void 设置周围有雷时的名字(String name)

{

label.setText(name);

}

public String 获取名字()

{

return label.getText();

}

public void 设置周围的雷数(int n)

{

周围的雷数=n;

}

public int 获取周围的雷数()

{

return 周围的雷数;

}

public void 设置在雷区中的位置(int i,int j)

{

p=new Point(i,j);

}

public Point 获取在雷区中的位置()

{

return p;

}

public int 获取探雷标记()

{

return 探雷标记;

}

public void mousePressed(MouseEvent e)

{

boolean right=SwingUtilities.isRightMouseButton(e);

if((right==true)(this.isOpaque()==true))

{

探雷标记=(探雷标记+1)%3;

repaint();

}

}

public void paintComponent(Graphics g)

{

super.paintComponent(g);

if(探雷标记==0)

{

g.setColor(Color.red);

g.fillRect(6,4,8,6);

g.drawLine(13,10,14,18);

}

if(探雷标记==1)

{

g.setColor(Color.blue);

g.drawString("?",6,15);

}

}

public void mouseEntered(MouseEvent e)

{}

public void mouseReleased(MouseEvent e)

{}

public void mouseExited(MouseEvent e)

{}

public void mouseClicked(MouseEvent e)

{}

}

JAVA 扫雷的一段代码求解释

int BombNum, BlockNum; // 当前雷数,当前方块数

int rightBomb, restBomb, restBlock; // 找到的地雷数,剩余雷数,剩余方块数

JButton start = new JButton(" 开始 ");

JPanel MenuPamel = new JPanel(); //新建一个区域,看名字是放菜单.但是打错字了.

JPanel bombPanel = new JPanel();//新建一个区域,雷区,由于雷是按钮,这里面应该都是按钮(JButton).

Bomb[][] bombButton; 2维组数,放地雷.

class Bomb extends JButton {

int num_x, num_y; // 第几号方块

int BombRoundCount; // 周围雷数

boolean isBomb; // 是否为雷

boolean isClicked; // 是否被点击

int BombFlag; // 探雷标记

boolean isRight; // 是否点击右键

public Bomb(int x, int y) {

num_x = x; //雷的位置 x,不解释

num_y = y; //雷的位置 y,不解释.获得是参数的值,所new Bomb的时候传入雷的位置,套嵌2个for循环.

BombFlag = 0; //是不是被插旗了

BombRoundCount = 9; //环绕数

isBomb = false; //是雷

isClicked = false; //被点

isRight = false; //是真的.( 以上都很好理解,直译^_^)

}

}

/* 计算方块周围雷数 */

public void CountRoundBomb() {

for (int i = 0; i (int) Math.sqrt(BlockNum); i++) { //开方 障碍数

for (int j = 0; j (int) Math.sqrt(BlockNum); j++) { //同上,我判断,设计的雷区是正方形,

//这里是找完所有的坐标.

int count = 0;

// 当需要检测的单元格本身无地雷的情况下,统计周围的地雷个数

if (bombButton[i][j].isBomb != true) { //如果不是雷

for (int x = i - 1; x i + 2; x++) { //从左边1个,到右边1个,一共3个

for (int y = j - 1; y j + 2; y++) { //我不知道,java y坐标是上还是下,总之

//邻近的上中下.(这里会多找一个自己)

if ( (x = 0) (y = 0)

(x ( (int) Math.sqrt(BlockNum)))

(y ( (int) Math.sqrt(BlockNum)))) { //因边前面 x=i-1,所以排除超出边界

//的情况

if (bombButton[x][y].isBomb == true) { //如果是雷;

count++; //加一个

}

}

}

}

bombButton[i][j].BombRoundCount = count; //设置该Bomb环绕数的值

}

}

}

}

总之就是,建个一个Bomb类. 别外有一个方法统计那些不是雷的地方,的周围有几颗雷,到时候点开,显示出来.

扫雷java代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于简单扫雷源代码java、扫雷java代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/16287.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载