java掃雷的主要代碼 java掃雷的主要代碼有哪些

JAVA,編一個(gè)游戲小游戲,比如掃雷,這個(gè)程序大概的代碼是什么,誰能教教我?我比較笨,但是我認(rèn)學(xué)。

import javax.swing.*;

我們提供的服務(wù)有:網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、花溪ssl等。為1000多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的花溪網(wǎng)站制作公司

import java.awt.*;

import java.awt.event.*;

public class Main

{

public static void main(String[] argus)

{

Landmine Zhang = new Landmine();

}

}

//

// Landmine類 主界面

class Landmine extends JFrame

{

static Resources resources = new Resources();

Playing listener = new Playing(this); //主要監(jiān)聽者,監(jiān)聽地雷面板的動(dòng)作

Help helpListener = new Help(this); //輔助監(jiān)聽者,監(jiān)聽“幫助”、“關(guān)于”

JPanel landminePanel = new JPanel(); //創(chuàng)建地雷面板

JPanel topPanel = new JPanel(); //創(chuàng)建頂部面板

JPanel lowerPanel = new JPanel(); //創(chuàng)建底部面板

public static MyButton [][] lei; //主區(qū)按鈕組

public static int numberOfUnflaged ; //剩余的雷數(shù),顯示在topPanel上,用于提示用戶

public static int numberOfClicked; //已經(jīng)翻開的格子數(shù),當(dāng)數(shù)字?jǐn)?shù)字到"總格子數(shù)—雷數(shù)"時(shí),即勝利

public static int usedTime; //已用時(shí)間

public static JLabel numberOfUnflagedLabel = new JLabel(); //創(chuàng)建剩雷數(shù)標(biāo)簽

public static JLabel timeLabel = new JLabel();//創(chuàng)建時(shí)間標(biāo)簽

public static Timer timer; //創(chuàng)建計(jì)時(shí)

Keylistener keyListener = new Keylistener(this);

public Landmine()

{

super("掃雷__1.2版__小老頭"); //標(biāo)題

setBounds(300,90,800,800); //設(shè)置窗口位置和大小

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//最大化、最小化、關(guān)閉按鈕

BorderLayout ff = new BorderLayout(); //創(chuàng)建布局管理器

setLayout(ff); //關(guān)聯(lián)布局管理器

setResizable(false); //禁止改變窗口大小

/*初始化一些數(shù)據(jù)*/

numberOfClicked = 0;

numberOfUnflaged = 40;

usedTime = 0;

/*設(shè)置頂部面板*/

numberOfUnflagedLabel.setText("剩余雷數(shù):"+numberOfUnflaged);//顯示剩余雷數(shù)

numberOfUnflagedLabel.setFont(resources.fontOne);//設(shè)置剩雷數(shù)標(biāo)簽字體

numberOfUnflagedLabel.setIcon(resources.bombIconForLabel);//剩雷數(shù)標(biāo)簽圖標(biāo)(地雷形)

topPanel.add(numberOfUnflagedLabel); //剩雷數(shù)標(biāo)簽加入topPanel

timeLabel.setText("用時(shí):" + usedTime); //顯示剩余時(shí)間

timeLabel.setFont(resources.fontOne); //設(shè)置時(shí)間標(biāo)簽字體

timeLabel.setIcon(resources.clockIcon); //設(shè)置時(shí)間標(biāo)簽圖標(biāo)

topPanel.add(timeLabel); //時(shí)間標(biāo)簽加入topPanel

add(topPanel,BorderLayout.NORTH); //加入主面板上部

timer = new Timer(1000,new TimerListener());//計(jì)算器注冊(cè)監(jiān)聽者

/*設(shè)置底部面板*/

JButton aboutJB = new JButton("關(guān)于"); //創(chuàng)建“關(guān)于”按鈕

JButton helpJB = new JButton("求救"); //創(chuàng)建“求救”按鈕

helpJB.addActionListener(helpListener); //"求救"按鈕加入監(jiān)聽者

aboutJB.addActionListener(helpListener);//"關(guān)于"按鈕加入監(jiān)聽者

helpJB.addKeyListener(keyListener);

aboutJB.addKeyListener(keyListener); //注冊(cè)按鍵監(jiān)聽

lowerPanel.add(aboutJB); //“關(guān)于”按鈕加入lowerPanel

lowerPanel.add(helpJB); //“幫助”按鈕加入lowerPanel

add(lowerPanel,BorderLayout.SOUTH);

/*設(shè)置地雷面板*/

GridLayout dd = new GridLayout(16,16);

landminePanel.setLayout(dd); //布局管理

lei = new MyButton[18][18];

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

{//創(chuàng)建下標(biāo)0—17的按鈕,18*18矩陣

for(int j=0; j18; ++j)

{

lei[i][j] = new MyButton(i,j);

}

}

for(int i=1; i17; ++i)

{//將下標(biāo)1-16的按鈕,加入面板、設(shè)置圖標(biāo)、翻開標(biāo)記為假、加入監(jiān)聽者

for(int j=1; j17; ++j)

{

landminePanel.add(lei[i][j]); //按鈕加入地雷面板

lei[i][j].setIcon(resources.smallIcon); //設(shè)置按鈕圖標(biāo)

lei[i][j].isClicked = false; //翻開標(biāo)記設(shè)置為 假lei[i][j].setIcon(dead);

lei[i][j].addActionListener(listener); //加入監(jiān)聽者

lei[i][j].addMouseListener(listener); //加入鼠標(biāo)事件監(jiān)聽者

lei[i][j].addKeyListener(keyListener); //按鈕注冊(cè)按鍵監(jiān)聽,當(dāng)焦點(diǎn)在按鈕上是能監(jiān)聽按鍵

}

}

add(landminePanel,BorderLayout.CENTER); //landminePanel加入主框架中央

addLandmine(); //布雷

timer.start(); //啟動(dòng)計(jì)時(shí)器

setVisible(true);//顯示之

}

/*布雷*/

public static void addLandmine()

{//隨機(jī)將40的按鈕的是否為雷的標(biāo)記isBomb設(shè)為真

for(int count = 0; count40; /*blank*/)

{

int i = (int)(Math.random()*100 % 16 +1 ) ;

int j = (int)(Math.random()*100 % 16 +1 ) ;

if(lei[i][j].isBomb == false)

{

lei[i][j].isBomb = true;

count++;

}

}

}

class TimerListener implements ActionListener

{//內(nèi)部類,時(shí)間監(jiān)聽

public void actionPerformed(ActionEvent e)

{

usedTime++;

timeLabel.setText("用時(shí):" + usedTime);

}

}

}

//

// Playing類 執(zhí)行主要游戲操作

class Playing implements ActionListener,MouseListener

{

static Resources resources = new Resources();

public static Landmine gui;

public Playing(Landmine in )

{

gui = in;

}

public void actionPerformed(ActionEvent event)

{

MyButton receive = (MyButton)event.getSource();

if(receive.isBomb)

{//如果翻到了雷。。

for(int i=1; i17; ++i)

{//將所有的雷圖標(biāo)設(shè)為 “地雷”

for(int j=1; j17; ++j)

{

if(gui.lei[i][j].isBomb)

gui.lei[i][j].setIcon(resources.bombIcon);

}

}

receive.setIcon(resources.deadIcon);//將踩到的地雷圖標(biāo)設(shè)為 “衰”

gui.timer.stop(); //停止計(jì)時(shí)器

JOptionPane.showMessageDialog(null,"小朋友,你掛了…","失??!",

JOptionPane.INFORMATION_MESSAGE,

resources.deadIcon);//提示失敗

int yourChose = JOptionPane.showConfirmDialog(null,"你可能是一不小心點(diǎn)錯(cuò)了,再來一局?" );

if(yourChose == JOptionPane.OK_OPTION)

{//點(diǎn)擊“是”時(shí)

replay();

}

else

{//點(diǎn)擊 “否” 或 “取消” 時(shí)退出程序

System.exit(0);

}

}

else if(receive.isClicked ==false)

{//未翻到雷

showBombNumber(receive);

}

}

public static void showBombNumber(MyButton in)

{//翻開點(diǎn)擊的按鈕

int numberOfLandmine = 0;//記錄雷的個(gè)數(shù)

in.isClicked = true; //翻開標(biāo)記設(shè)為真

/*檢測(cè)周圍8個(gè)方塊是否為雷*/

if(gui.lei[in.num_x-1][in.num_y-1].isBomb == true) numberOfLandmine++;//左上

if(gui.lei[in.num_x][in.num_y-1].isBomb == true) numberOfLandmine++; //上

if(gui.lei[in.num_x+1][in.num_y-1].isBomb == true) numberOfLandmine++;//右上

if(gui.lei[in.num_x+1][in.num_y].isBomb == true) numberOfLandmine++; //右

if(gui.lei[in.num_x+1][in.num_y+1].isBomb == true) numberOfLandmine++;//右下

if(gui.lei[in.num_x][in.num_y+1].isBomb == true) numberOfLandmine++; //下

if(gui.lei[in.num_x-1][in.num_y+1].isBomb == true) numberOfLandmine++;//左下

if(gui.lei[in.num_x-1][in.num_y].isBomb == true) numberOfLandmine++; //左

in.setIcon(new ImageIcon("images/"+numberOfLandmine+".png"));//根據(jù)周圍的雷數(shù)顯示數(shù)字圖標(biāo)

gui.numberOfClicked++;//翻開格子數(shù)+1

if(gui.numberOfClicked==216)

{//翻開216個(gè)格子時(shí)游戲成功,用戶選擇是否再來一局

int yourChoice = JOptionPane.showConfirmDialog(null,"恭喜你成功了!再來一盤嗎?");

if(yourChoice == JOptionPane.OK_OPTION)

replay();

else

System.exit(0);

}

if(numberOfLandmine==0)

{//如果周圍無雷,則將周圍未翻開格子的全部翻開

if(gui.lei[in.num_x-1][in.num_y-1].isClicked == false)

showBombNumber(gui.lei[in.num_x-1][in.num_y-1]);

if(gui.lei[in.num_x][in.num_y-1].isClicked == false)

showBombNumber(gui.lei[in.num_x][in.num_y-1]);

if(gui.lei[in.num_x+1][in.num_y-1].isClicked == false)

showBombNumber(gui.lei[in.num_x+1][in.num_y-1]);

if(gui.lei[in.num_x+1][in.num_y].isClicked == false)

showBombNumber(gui.lei[in.num_x+1][in.num_y]);

if(gui.lei[in.num_x+1][in.num_y+1].isClicked == false)

showBombNumber(gui.lei[in.num_x+1][in.num_y+1]);

if(gui.lei[in.num_x][in.num_y+1].isClicked == false)

showBombNumber(gui.lei[in.num_x][in.num_y+1]);

if(gui.lei[in.num_x-1][in.num_y+1].isClicked == false)

showBombNumber(gui.lei[in.num_x-1][in.num_y+1]);

if(gui.lei[in.num_x-1][in.num_y].isClicked == false)

showBombNumber(gui.lei[in.num_x-1][in.num_y]);

}

}

public static void replay()

{//重新開始

gui.dispose(); //釋放框架資源

gui.timer.stop(); //終止計(jì)時(shí)器

Landmine ff = new Landmine();//重新創(chuàng)建一個(gè)主類的實(shí)例

//這幾條語句實(shí)現(xiàn)了重新開始————關(guān)閉上一個(gè)窗口,重新開啟一個(gè)

//但是這種方法會(huì)造成內(nèi)存的浪費(fèi),一個(gè)改進(jìn)的方法是不關(guān)閉當(dāng)年窗口,而是將當(dāng)前窗口重新初始化

}

public void mousePressed(MouseEvent e)

{//當(dāng)鼠標(biāo)右鍵點(diǎn)擊時(shí)自動(dòng)調(diào)用此函數(shù)

int mods = e.getModifiers();

MyButton receive = (MyButton)e.getSource();

if((mods InputEvent.BUTTON3_MASK) != 0)

{//鼠標(biāo)右鍵

if(receive.isClicked == false)

{

receive.isRight = receive.isRight ? false : true;//改變r(jià)eceive.isRight的值

if(receive.isRight)

{//如果添加標(biāo)記,則剩余雷數(shù)-1,設(shè)置標(biāo)簽為“旗幟”

gui.numberOfUnflaged--;

receive.setIcon(resources.flagIcon);

}

else

{//如果清除標(biāo)記,則剩余雷數(shù)+1,設(shè)置標(biāo)簽為“未翻開”

gui.numberOfUnflaged++;

receive.setIcon(resources.smallIcon);

}

gui.numberOfUnflagedLabel.setText("剩余雷數(shù):"+gui.numberOfUnflaged);

//更新剩余雷數(shù)標(biāo)簽

}

}

}

public void mouseReleased(MouseEvent e){}

public void mouseExited(MouseEvent e) {}

public void mouseClicked(MouseEvent e){}

public void mouseEntered(MouseEvent e){}

}

//

// Help類,響應(yīng)“關(guān)于”、“求救”

class Help implements ActionListener

{

static Resources resources = new Resources();

public static Landmine gui;

public Help(Landmine in)

{

gui = in ;

}

public void actionPerformed(ActionEvent event)

{

if(event.getActionCommand()=="關(guān)于")

JOptionPane.showMessageDialog(null,"掃雷1.2版。。小老頭出品");

if(event.getActionCommand()=="求救")

help();

}

public static void help()

{//求救

int stopNumber = (int)(Math.random() * gui.numberOfUnflaged + 1 );

int count = 0;

for(int i=1; i17;++i )

{

for(int j=1; j17; ++j)

{

if( gui.lei[i][j].isBomb !gui.lei[i][j].isClicked !gui.lei[i][j].isRight )

{

count++;

}

if(count == stopNumber)

{

gui.lei[i][j].setIcon(resources.badIcon);

return;

}

}

}

}

}

//

// Keylistener類,響應(yīng)鍵盤事件

class Keylistener implements KeyListener

{

static Resources resources = new Resources();

Landmine gui;

public Keylistener(Landmine in)

{

gui = in;

}

public void keyPressed(KeyEvent e)

{//有鍵按下時(shí)自動(dòng)執(zhí)行該方法

if(e.getKeyCode() == KeyEvent.VK_UP)

{//按鍵為 向上 時(shí),將所有未標(biāo)記的地雷顯示出

for(int i=1; i17; ++i)

{

for(int j=1; j17; ++j)

{

if(gui.lei[i][j].isBomb !gui.lei[i][j].isRight)

gui.lei[i][j].setIcon(resources.badIcon);

}

}

}

if(e.getKeyCode() == KeyEvent.VK_DOWN)

{//按鍵為 向下 時(shí),將所有未標(biāo)記的地雷恢復(fù)為未點(diǎn)擊的圖標(biāo)

for(int i=1; i17; ++i)

{

for(int j=1; j17; ++j)

{

if(gui.lei[i][j].isBomb !gui.lei[i][j].isRight)

gui.lei[i][j].setIcon(resources.smallIcon);

}

}

}

}

public void keyReleased(KeyEvent e){}

public void keyTyped(KeyEvent e){}

}

//

// 按鈕類 MyBtton

class MyButton extends JButton

{

public int num_x,num_y; //第幾號(hào)方塊

public boolean isBomb; //是否為雷

public boolean isClicked; //是否被點(diǎn)擊

public int BombFlag; //探雷標(biāo)記

public boolean isRight; //是否點(diǎn)擊右鍵

public MyButton(int x, int y)

{

BombFlag = 0;

num_x = x;

num_y = y;

isBomb = false;

isClicked = true;

isRight = false;

}

}

//

// 資源類 其他類中用到的圖標(biāo),字體等

class Resources

{

public static ImageIcon deadIcon;

public static ImageIcon smallIcon;

public static ImageIcon clockIcon;

public static ImageIcon bombIcon;

public static ImageIcon flagIcon;

public static ImageIcon badIcon;

public static ImageIcon bombIconForLabel;

public static Font fontOne;

public Resources()

{

deadIcon = new ImageIcon("images/dead.gif");

smallIcon = new ImageIcon("images/smallIcon.png");

clockIcon = new ImageIcon("images/clock2.png");

bombIcon = new ImageIcon("images/bomb.png");

flagIcon = new ImageIcon("images/flag_2.png");

badIcon = new ImageIcon("images/bad.gif");

bombIconForLabel = new ImageIcon("images/bombForLabel.gif");

fontOne = new Font("null",Font.BOLD,20);

}

}

運(yùn)行在Eclipse環(huán)境下的java掃雷游戲的初級(jí)代碼是什么?

import java.awt.Button;\x0d\x0aimport java.util.Set;\x0d\x0a// 每一個(gè)小方塊類\x0d\x0apublic class Diamond extends Button {\x0d\x0aprivate Diamond[] diamonds;\x0d\x0a\x0d\x0a// 該小方塊周圍的八個(gè)方向上的小方塊\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;// 產(chǎn)生的方塊的編號(hào)\x0d\x0a\x0d\x0a// 持有所有小方塊的引用,方便進(jìn)行操作\x0d\x0apublic Diamond(Diamond[] diamonds) {\x0d\x0athis.diamonds = diamonds;\x0d\x0a}\x0d\x0a\x0d\x0a// 按鍵時(shí)方塊發(fā)生改變\x0d\x0apublic boolean change() {\x0d\x0athis.isChange = true;// 說明已經(jīng)翻過了\x0d\x0aif(isBomb) {// 觸雷\x0d\x0a//this.setBackground(Color.red);\x0d\x0areturn true;\x0d\x0a} else {// 不是雷,就顯示周圍雷的數(shù)目\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// 獲得該小方塊周圍雷的數(shù)量\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是用來裝已經(jīng)翻過的小方塊的,不然會(huì)死循環(huán),為什么用set,因?yàn)閟et是不重復(fù)的\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 掃雷的一段代碼求解釋

int BombNum, BlockNum; // 當(dāng)前雷數(shù),當(dāng)前方塊數(shù)

int rightBomb, restBomb, restBlock; // 找到的地雷數(shù),剩余雷數(shù),剩余方塊數(shù)

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

JPanel MenuPamel = new JPanel(); //新建一個(gè)區(qū)域,看名字是放菜單.但是打錯(cuò)字了.

JPanel bombPanel = new JPanel();//新建一個(gè)區(qū)域,雷區(qū),由于雷是按鈕,這里面應(yīng)該都是按鈕(JButton).

Bomb[][] bombButton; 2維組數(shù),放地雷.

class Bomb extends JButton {

int num_x, num_y; // 第幾號(hào)方塊

int BombRoundCount; // 周圍雷數(shù)

boolean isBomb; // 是否為雷

boolean isClicked; // 是否被點(diǎn)擊

int BombFlag; // 探雷標(biāo)記

boolean isRight; // 是否點(diǎn)擊右鍵

public Bomb(int x, int y) {

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

num_y = y; //雷的位置 y,不解釋.獲得是參數(shù)的值,所new Bomb的時(shí)候傳入雷的位置,套嵌2個(gè)for循環(huán).

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

BombRoundCount = 9; //環(huán)繞數(shù)

isBomb = false; //是雷

isClicked = false; //被點(diǎn)

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

}

}

/* 計(jì)算方塊周圍雷數(shù) */

public void CountRoundBomb() {

for (int i = 0; i (int) Math.sqrt(BlockNum); i++) { //開方 障礙數(shù)

for (int j = 0; j (int) Math.sqrt(BlockNum); j++) { //同上,我判斷,設(shè)計(jì)的雷區(qū)是正方形,

//這里是找完所有的坐標(biāo).

int count = 0;

// 當(dāng)需要檢測(cè)的單元格本身無地雷的情況下,統(tǒng)計(jì)周圍的地雷個(gè)數(shù)

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

for (int x = i - 1; x i + 2; x++) { //從左邊1個(gè),到右邊1個(gè),一共3個(gè)

for (int y = j - 1; y j + 2; y++) { //我不知道,java y坐標(biāo)是上還是下,總之

//鄰近的上中下.(這里會(huì)多找一個(gè)自己)

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++; //加一個(gè)

}

}

}

}

bombButton[i][j].BombRoundCount = count; //設(shè)置該Bomb環(huán)繞數(shù)的值

}

}

}

}

總之就是,建個(gè)一個(gè)Bomb類. 別外有一個(gè)方法統(tǒng)計(jì)那些不是雷的地方,的周圍有幾顆雷,到時(shí)候點(diǎn)開,顯示出來.

文章題目:java掃雷的主要代碼 java掃雷的主要代碼有哪些
URL標(biāo)題:http://muchs.cn/article42/doegehc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)自適應(yīng)網(wǎng)站、用戶體驗(yàn)、網(wǎng)站建設(shè)、面包屑導(dǎo)航、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)