日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
掃雷java代碼功能解釋 掃雷java代碼功能解釋大全

怎樣用JAVA實(shí)現(xiàn)掃雷游戲

要詳細(xì)代碼?還是只要啟動(dòng)?

創(chuàng)新互聯(lián)主要從事網(wǎng)頁設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、響應(yīng)式網(wǎng)站開發(fā)、程序開發(fā)、網(wǎng)站優(yōu)化、微網(wǎng)站、微信小程序開發(fā)等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們?cè)诨ヂ?lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了豐富的網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營銷經(jīng)驗(yàn),集策劃、開發(fā)、設(shè)計(jì)、營銷、管理等多方位專業(yè)化運(yùn)作于一體。

java編寫實(shí)現(xiàn),代碼如下:import Java.awt.*;

import java.awt.event.*;

import javax.Swing.*;

/*按扭類*/

class Bomb extends JButton

{

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

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

public boolean isBomb; //是否為雷

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

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

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

public Bomb(int x,int y)

{

BombFlag = 0;

num_x = x;

num_y = y;

BombRoundCount = 0;

isBomb = false;

isClicked = false;

isRight = false;

}

}

/*窗口及算法實(shí)現(xiàn)類*/

class MainBomb extends JFrame implements ActionListener,MouseListener

{

public JTextField text;

public Label nowBomb,setBomb;

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

public Icon icon_bomb = new ImageIcon("Bomb.gif"); //踩雷

public Icon icon_bomb_big = new ImageIcon("bomb_big.gif"); //踩雷標(biāo)記

public Icon icon_flag = new ImageIcon("flag.gif"); //雷標(biāo)記

public Icon icon_question = new ImageIcon("question.gif"); //疑惑是否有雷

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

public Panel MenuPamel = new Panel();

public Panel mainPanel = new Panel();

public Bomb[][] bombButton;

/*界面設(shè)計(jì)*/

public MainBomb()

{

super("掃雷 Aaron2004制作 2004.8 ");

BlockNum = 64;

BombNum = 10;

Container c=getContentPane();

c.setBackground(Color.gray);

c.setLayout(new BorderLayout());

text=new JTextField("10 ",3);

nowBomb = new Label("當(dāng)前雷數(shù)"+" "+BombNum+"");

setBomb= new Label("設(shè)置地雷數(shù)");

start.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e)

{

BombNum = Integer.parseInt(text.getText().trim());

if(BombNum = 10 BombNum 50 )

replay();

else

{

JOptionPane msg = new JOptionPane();

JOptionPane.showMessageDialog(null,"您設(shè)置的地雷數(shù)太多了,請(qǐng)重設(shè)!","錯(cuò)誤",2);

}

}

} );

MenuPamel.add(setBomb);

MenuPamel.add(text);

MenuPamel.add(start);

MenuPamel.add(nowBomb);

c.add(MenuPamel,"North");

mainPanel.setLayout(new GridLayout( (int)Math.sqrt(BlockNum) , (int)Math.sqrt(BlockNum)) );

bombButton=new Bomb[ (int)Math.sqrt(BlockNum) ][];

for(int i = 0 ; i (int)Math.sqrt(BlockNum) ; i++)

{

bombButton[ i ]=new Bomb[ (int)Math.sqrt(BlockNum) ];

}

for(int i = 0 ; i (int)Math.sqrt(BlockNum) ; i++ )

for(int j = 0 ; j (int)Math.sqrt(BlockNum) ; j++ )

{

bombButton[ i ][ j ]=new Bomb(i,j);

bombButton[ i ][ j ].setForeground( Color.gray);

bombButton[ i ][ j ].addActionListener(this);

bombButton[ i ][ j ].addMouseListener(this);

}

for(int i = 0 ; i (int)Math.sqrt(BlockNum) ; i++ )

for(int j = 0 ; j (int)Math.sqrt(BlockNum) ; j++ )

mainPanel.add(bombButton[ i ][ j ]);

c.add(mainPanel,"Center");

startBomb();

setSize(400,400);

setLocation(350,200);

setResizable(false);

}

/*布雷*/

public void startBomb()

{

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

{

int x =(int)(Math.random()*(int)(Math.sqrt(BlockNum)-1));

int y =(int)(Math.random()*(int)(Math.sqrt(BlockNum)-1));

if(bombButton[ x ][ y ].isBomb==true)

i--;

else

bombButton[ x ][ y ].isBomb=true ;

}

}

/*重新開始*/

public void replay()

{

nowBomb.setText("當(dāng)前雷數(shù)"+" "+BombNum+"");

for(int i = 0 ; i (int)Math.sqrt(BlockNum) ; i++)

for(int j = 0 ; j (int)Math.sqrt(BlockNum) ; j++)

{

bombButton[ i ][ j ].isBomb=false;

bombButton[ i ][ j ].isClicked=false;

bombButton[ i ][ j ].setEnabled(true);

bombButton[ i ][ j ].setText("");

bombButton[ i ][ j ].setIcon(null);

}

startBomb();

}

/*是否挖完了所有的雷*/

public void isWin()

{

int findBomb=0; //找到的地雷數(shù)

for(int i = 0;i (int)Math.sqrt(BlockNum) ; i++)

for(int j = 0;j (int)Math.sqrt(BlockNum ); j++)

{

if(bombButton[ i ][ j ].isBomb == true bombButton[ i ][ j ].isRight == true)

findBomb++;

}

if( findBomb == Integer.parseInt(text.getText().trim()) )

{

JOptionPane msg = new JOptionPane();

JOptionPane.showMessageDialog(this,"您挖完了所有的雷,您勝利了!","您勝利了",2);

}

}

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

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;

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

if (bombButton[ i ][ j ].isBomb != true) {

if ( (i - 1 = 0) (j - 1 = 0)) {

if (bombButton[i - 1][j - 1].isBomb == true) {

count += 1; //檢測(cè)左上方空格是否是地雷

}

}

if ( (i - 1 = 0)) {

if (bombButton[i - 1][ j ].isBomb == true) {

count += 1; //檢測(cè)上方空格是否為地雷

}

}

if ( (i - 1 = 0) (j + 1 = (int)Math.sqrt(BlockNum)-1)) {

if (bombButton[i - 1][j + 1] .isBomb == true) {

count += 1; //檢測(cè)右上方是否為地雷

}

}

if ( (j - 1 = 0)) {

if (bombButton[ i ][j - 1] .isBomb == true) {

count += 1; //檢測(cè)左邊是否為地雷

}

}

if ( (i = 0) (j + 1 = (int)Math.sqrt(BlockNum)-1)) {

if (bombButton[ i ][j + 1].isBomb == true) {

count += 1; //右邊

}

}

if ( (j - 1 = 0) (i + 1 = (int)Math.sqrt(BlockNum)-1)) {

if (bombButton[i + 1][j - 1].isBomb == true) {

count += 1; //左下

}

}

if ( (i + 1 = (int)Math.sqrt(BlockNum)-1)) {

if (bombButton[i + 1][ j ].isBomb == true) {

count += 1; //下

}

}

if ( (j + 1 = (int)Math.sqrt(BlockNum)-1) (i + 1 = Math.sqrt(BlockNum)-1)) {

if (bombButton[i + 1][j + 1].isBomb == true) {

count += 1; //右下

}

}

bombButton[ i ][ j ].BombRoundCount = count;

}

}

}

}

/**當(dāng)選中的位置為空,則翻開周圍的地圖**/

public void isNull(Bomb[][] bombButton,Bomb ClickecButton)

{

int i,j;

i=ClickecButton.num_x;

j=ClickecButton.num_y;

if (ClickecButton.isBomb==true) {

}

else {

if ( (i - 1 = 0) (j - 1 = 0)) { //檢測(cè)左上方空格是否是空

if (bombButton[i - 1][j - 1].isBomb == false bombButton[i - 1][j - 1].isClicked == false bombButton[i - 1][j - 1].isRight == false) {

bombButton[i - 1][j - 1].setText((bombButton[i - 1][j - 1].BombRoundCount)+"");

bombButton[i - 1][j - 1].setEnabled(false);

bombButton[i - 1][j - 1].isClicked=true;

}

}

if ( (i - 1 = 0)) { //檢測(cè)上方空格是否為空

if (bombButton[i - 1][ j ] .isBomb == false bombButton[i - 1][ j ].isClicked == false bombButton[i - 1][ j ].isRight == false) {

bombButton[i - 1][ j ].setText((bombButton[i - 1][ j ].BombRoundCount)+"");

bombButton[i - 1][ j ].setEnabled(false);

bombButton[i - 1][ j ].isClicked=true;

}

}

if ( (i - 1 = 0) (j + 1 = ((int)Math.sqrt(BlockNum)-1)) ) { //檢測(cè)右上方是否為空

if (bombButton[i - 1][j + 1] .isBomb == false bombButton[i - 1][j + 1].isClicked == false bombButton[i - 1][j + 1].isRight == false) {

bombButton[i - 1][j + 1].setText((bombButton[i - 1][j + 1].BombRoundCount)+"");

bombButton[i - 1][j + 1].setEnabled(false);

bombButton[i - 1][j + 1].isClicked=true;

}

}

if ( (j - 1 = 0)) { //檢測(cè)左邊是否為空

if (bombButton[ i ][j - 1].isBomb == false bombButton[ i ][j - 1].isClicked == false bombButton[ i ][j - 1].isRight == false) {

bombButton[ i ][j - 1].setText((bombButton[ i ][j - 1].BombRoundCount)+"");

bombButton[ i ][j - 1].setEnabled(false);

bombButton[ i ][j - 1].isClicked=true;

}

}

if ( (i = 0) (j + 1 = ((int)Math.sqrt(BlockNum)-1)) ) { //檢測(cè)右邊空格是否是空

if (bombButton[ i ][j + 1].isBomb == false bombButton[ i ][j + 1].isClicked == false bombButton[ i ][j + 1].isRight == false) {

bombButton[ i ][j + 1].setText((bombButton[ i ][j + 1].BombRoundCount)+"");

bombButton[ i ][j + 1].setEnabled(false);

bombButton[ i ][j + 1].isClicked=true;

}

}

if ( (j - 1 = 0) (i + 1 = ((int)Math.sqrt(BlockNum)-1)) ) { //檢測(cè)左下空格是否是空

if (bombButton[i + 1][j - 1].isBomb == false bombButton[i + 1][j - 1].isClicked == false bombButton[i + 1][j - 1].isRight == false) {

bombButton[i + 1][j - 1].setText((bombButton[i + 1][j - 1].BombRoundCount)+"");

bombButton[i + 1][j - 1].setEnabled(false);

bombButton[i + 1][j - 1].isClicked=true;

}

}

if ( (i + 1 = ((int)Math.sqrt(BlockNum)-1)) ) { //檢測(cè)下邊空格是否是空

if (bombButton[i + 1][ j ].isBomb == false bombButton[i + 1][ j ].isClicked == false bombButton[i + 1][ j ].isRight == false) {

bombButton[i + 1][ j ].setText((bombButton[i + 1][ j ].BombRoundCount)+"");

bombButton[i + 1][ j ].setEnabled(false);

bombButton[i + 1][ j ].isClicked=true;

}

}

if ( (j + 1 = ((int)Math.sqrt(BlockNum)-1) ) (i + 1 = ((int)Math.sqrt(BlockNum)-1)) ) { //檢測(cè)右下邊空格是否是空

if (bombButton[i + 1][j + 1].isBomb == false bombButton[i + 1][j + 1].isClicked == false bombButton[i + 1][j + 1].isRight == false) {

bombButton[i + 1][j + 1].setText((bombButton[i + 1][j + 1].BombRoundCount)+"");

bombButton[i + 1][j + 1].setEnabled(false);

bombButton[i + 1][j + 1].isClicked=true;

}

}

if ( (i - 1 = 0) (j - 1 = 0))//檢測(cè)左上

isNull(bombButton,bombButton[i - 1][j - 1]);

if ( (i - 1 = 0))

isNull( bombButton,bombButton[i - 1][ j ]);//檢測(cè)上方

if ( (i - 1 = 0) (j + 1 = (int)Math.sqrt(BlockNum)-1))

isNull( bombButton,bombButton[i - 1][j + 1]);//檢測(cè)右上

if ( (j - 1 = 0))

isNull(bombButton,bombButton[i][j - 1]);//檢測(cè)左邊

if ( (i = 0) (j + 1 = ((int)Math.sqrt(BlockNum)-1)) )

isNull(bombButton,bombButton[i][j + 1]);//檢測(cè)右邊

if ( (j - 1 = 0) (i + 1 = ((int)Math.sqrt(BlockNum)-1)) )

isNull(bombButton,bombButton[i + 1][j - 1]); //檢測(cè)左下

if ( (i + 1 = ((int)Math.sqrt(BlockNum)-1)) ) //檢測(cè)下

isNull(bombButton,bombButton[i + 1][ j ]);

if ( (j + 1 = ((int)Math.sqrt(BlockNum)-1)) (i + 1 = ((int)Math.sqrt(BlockNum)-1)) ) //檢測(cè)右下

isNull(bombButton,bombButton[i + 1][j + 1]);

}

}

public void actionPerformed(ActionEvent e)

{

CountRoundBomb();

if(((Bomb)e.getSource()).isBomb==false ((Bomb)e.getSource()).isClicked == false)

{

((Bomb)e.getSource()).setText(( ((Bomb)e.getSource()).BombRoundCount )+"");

((Bomb)e.getSource()).isClicked=true;

((Bomb)e.getSource()).setIcon(null);

((Bomb)e.getSource()).setEnabled(false);

if((((Bomb)e.getSource()).BombRoundCount) == 0)

isNull(bombButton,(Bomb)e.getSource());

isWin();

}

else if(((Bomb)e.getSource()).isBomb == true)

{

for(int i=0;i(int)Math.sqrt(BlockNum);i++)

for(int j=0;j(int)Math.sqrt(BlockNum);j++)

{

if(bombButton[ i ][ j ].isBomb == true)

bombButton[ i ][ j ].setIcon(icon_bomb);

}

((Bomb)e.getSource()).setIcon(icon_bomb_big);

JOptionPane msg = new JOptionPane();

JOptionPane.showMessageDialog(this,"你踩到地雷了,按確定重來","你踩到地雷了",2);

replay();

}

}

public void mouseClicked(MouseEvent e)

{

Bomb bombSource = (Bomb)e.getSource();

boolean right = SwingUtilities.isRightMouseButton(e);

if((right == true) (bombSource.isClicked == false))

{

bombSource.BombFlag = (bombSource.BombFlag + 1)%3;

if(bombSource.BombFlag == 1)

{

if(BombNum 0 bombSource.isRight == false ){

bombSource.setIcon(icon_flag);

bombSource.isRight = true;

BombNum--;

}

isWin();

nowBomb.setText("當(dāng)前雷數(shù)"+" "+BombNum+"");

}

else if(bombSource.BombFlag == 2)

{

if( (BombNum !=0 ) ||(BombNum ==0 (bombSource.getIcon()==icon_flag)) )

BombNum++;

bombSource.setIcon(icon_question);

nowBomb.setText("當(dāng)前雷數(shù)"+" "+BombNum+"");

}

else if(bombSource.BombFlag == 0)

{

bombSource.setIcon(null);

bombSource.isRight = false;

}

}

}

public void mouseEntered(MouseEvent e)

{}

public void mouseReleased(MouseEvent e)

{}

public void mouseExited(MouseEvent e)

{}

public void mousePressed(MouseEvent e)

{}

}

/*主類*/

public class Main

{

public static void main(String args[])

{

(new MainBomb()).show();

}

}

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)開,顯示出來.

懸賞100元錢。注釋一個(gè)java掃雷游戲源代碼,就是把每行的意思寫到后面就可以了!在線等。

import java.awt.*;

import javax.swing.*;

import java.util.Random;

import java.awt.event.*;

class Min extends JPanel //雷的類

{

//備注:鼠標(biāo)的左鍵 = 1;右鍵 = 3;中鍵 = 2

private int flag = 0,statu = 0; //定義雷的屬性 0:沒有打開 1:打開 2:標(biāo)示為雷 3:不確定

//flag = 0 不是雷 ; flag = 1是雷

private int but,count = 0; //but:哪一個(gè)鼠標(biāo)鍵被按下去了 count:這個(gè)區(qū)域周圍有多少個(gè)雷

private int mx = 0,my = 0,mw = 10; //定義雷的坐標(biāo)和寬度

public Min() //構(gòu)造函數(shù)

{

statu = 0;

}

public Min(int f,int x,int y,int w)

//構(gòu)造函數(shù)

{

flag = f;

mx = x;

my = y;

mw = w;

}

public int getFlag(){return flag;}

public int getStatu(){return statu;}

public int getMx(){return mx;}

public int getMy(){return my;}

public int getMw(){return mw;}

public int getCount(){return count;}

public void setFlag(int f){flag = f;}

public void setCount(int c){count = c;}

public void setData(int f,int x,int y,int w,int s)

//傳遞值

{

flag = f;

mx = (x-1)*w;

my = (y-1)*w;

mw = w-1;

statu = s;

}

//根據(jù)你點(diǎn)擊鼠標(biāo)的不同來改變雷的屬性

public int sendKey(int key)

{

//返回值,如果游戲結(jié)束則返回-1

int rtn = 1;

if(key == 3)

{

switch(statu)

{

case 1:

break;

case 2:

statu = 3;

break;

case 3:

statu = 0;

break;

case 0:

statu = 2;

break;

}

rtn = 1;

}

if(key == 1 statu == 0)

{

switch(flag)

{

case 0:

statu = 1;

rtn = 2;

break;

case 1:

statu = 1;

rtn = -1;

break;

}

}

return rtn;

}

}

class DrawPanel extends JPanel

{

private int i,j;

private int f = 0; //if f = 1 then game over ,if f =2 then win

private int chx = 0,chy = 0; //專門記錄坐標(biāo)x,y的值

private int msum = 6,ksum = 0; //msum:雷的個(gè)數(shù),ksum:標(biāo)示雷的個(gè)數(shù)

private int bx = 10,by = 10,bw = 40; //bx,by:棋盤的大小,bw:棋子的大小

public Min board[][] = {

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

};

// 畫坐標(biāo)為ax,ay區(qū)域的雷的狀態(tài)

public void draw(Graphics g,int ax,int ay)

{

int x,y,w; // 坐標(biāo)x,y;和寬度:w

int s,c,flag; //狀態(tài);雷的個(gè)數(shù);

int cx = bw/2 - 4;

int cy = bw/2 + 4;

x = board[ax][ay].getMx();

y = board[ax][ay].getMy();

w = board[ax][ay].getMw();

s = board[ax][ay].getStatu();

c = board[ax][ay].getCount();

flag= board[ax][ay].getFlag();

switch(s)

{

case 0: //沒有打開狀態(tài)

{

g.setColor(Color.black);

g.fillRect(x,y,w,w);

break;

}

case 1: //打開狀態(tài)

{

g.setColor(Color.blue);

g.fillRect(x,y,w,w);

if(c != 0 flag == 0) //此處沒有雷

{

g.setColor(Color.red);

g.drawString(String.valueOf(c),x + cx,y + cy);

}

if(flag == 1) //此處有雷

{

g.setColor(Color.red);

g.fillRect(x,y,w,w);

g.setColor(Color.blue);

g.drawString(" 雷",x + cx,y + cy);

}

break;

}

case 2: //標(biāo)雷狀態(tài)

{

g.setColor(Color.green);

g.fillRect(x,y,w,w);

g.setColor(Color.blue);

g.drawString(" 旗",x + cx,y + cy);

break;

}

case 3: //不確定狀態(tài)

{

g.setColor(Color.black);

g.fillRect(x,y,w,w);

g.setColor(Color.red);

g.drawString("?",x + cx,y + cy);

break;

}

default:

break;

}

}

// 沒有圖形器的繪圖函數(shù):畫出坐標(biāo)ax,ay的雷的狀態(tài)和圖形

public void draw(int ax,int ay)

{

Graphics g;

g = this.getGraphics();

draw(g,ax,ay);

}

//打開周圍沒有雷的地方,并且繪畫所在區(qū)域點(diǎn)擊左鍵觸發(fā)

public int openNoMin(int ax,int ay)

{

int i,j;

if(ax1||ay1||axbx||ayby) return 0; //鼠標(biāo)點(diǎn)擊的區(qū)域出界了

if(board[ax][ay].getStatu() != 0) return 0; //如果此區(qū)域打開了,返回

board[ax][ay].sendKey(1); //如果返回值等于-1,就說明游戲結(jié)束

draw(ax,ay);

if(board[ax][ay].getFlag() == 1)

//如果游戲結(jié)束,把所有的雷都顯示出來

{

for(i = 1;i=bx;i++)

{

for(j = 1;j = by;j++)

{

if(board[i][j].getFlag() == 1)

{

board[i][j].sendKey(1);

draw(i,j);

}

}

}

return -1;

}

//如果游戲沒有結(jié)束

if(board[ax][ay].getCount() 0)

{

ksum ++;

return 1; //周圍有雷,就不用打開周圍地區(qū)

}

if(board[ax][ay].getCount() == 0 board[ax][ay].getFlag() == 0)

//周圍沒有雷,打開周圍地區(qū),直到有雷的地區(qū)

{

openNoMin(ax-1,ay-1);openNoMin(ax,ay-1);openNoMin(ax+1,ay-1);

openNoMin(ax-1,ay ); openNoMin(ax+1,ay );

openNoMin(ax-1,ay+1);openNoMin(ax,ay+1);openNoMin(ax+1,ay+1);

}

ksum ++;

return 1;

}

//計(jì)算坐標(biāo)x,y的周圍雷的個(gè)數(shù)

public int getCount(int ai,int aj)

{

int sum = 0;

if(board[ai][aj].getFlag() == 1)

{

return sum;

}

if(ai1aj1aibxajby)

{

sum = board[ai-1][aj-1].getFlag()+ board[ai][aj-1].getFlag()+ board[ai+1][aj-1].getFlag()+

board[ai-1][aj ].getFlag()+ board[ai+1][aj ].getFlag()+

board[ai-1][aj+1].getFlag()+ board[ai][aj+1].getFlag()+ board[ai+1][aj+1].getFlag();

}

if(ai==1aj==1)

{

sum = board[ai+1][aj ].getFlag()+

board[ai][aj+1].getFlag()+ board[ai+1][aj+1].getFlag();

}

if(ai==1aj==by)

{

sum = board[ai][aj-1].getFlag()+ board[ai+1][aj-1].getFlag()+

board[ai+1][aj ].getFlag();

}

if(ai==bxaj==1)

{

sum = board[ai-1][aj ].getFlag()+

board[ai-1][aj+1].getFlag()+ board[ai][aj+1].getFlag();

}

if(ai==bxaj==by)

{

sum = board[ai-1][aj-1].getFlag()+ board[ai][aj-1].getFlag()+

board[ai-1][aj ].getFlag();

}

if(ai==1aj1ajby)

{

sum = board[ai][aj-1].getFlag()+ board[ai+1][aj-1].getFlag()+

board[ai+1][aj ].getFlag()+

board[ai][aj+1].getFlag()+ board[ai+1][aj+1].getFlag();

}

if(ai==bxaj1ajby)

{

sum = board[ai-1][aj-1].getFlag()+ board[ai][aj-1].getFlag()+

board[ai-1][aj ].getFlag()+

board[ai-1][aj+1].getFlag()+ board[ai][aj+1].getFlag();

}

if(ai1aibxaj==1)

{

sum = board[ai-1][aj ].getFlag()+ board[ai+1][aj ].getFlag()+

board[ai-1][aj+1].getFlag()+ board[ai][aj+1].getFlag()+ board[ai+1][aj+1].getFlag();

}

if(ai1aibxaj==by)

{

sum = board[ai-1][aj-1].getFlag()+ board[ai][aj-1].getFlag()+ board[ai+1][aj-1].getFlag()+

board[ai-1][aj ].getFlag()+ board[ai+1][aj ].getFlag();

}

return sum;

}

// 傳入?yún)?shù):幾列,幾行,寬度,雷數(shù)

public void initMin(int ax,int ay,int aw,int as)

{

int k = 1; //表明產(chǎn)生的第幾個(gè)雷

Random r; //隨機(jī)數(shù)

f = 0; //f=0表示游戲還沒有結(jié)束

ksum = 0;

bx = ax;

by = ay;

bw = aw;

msum = as;

r = new Random();

//初始化底盤的值

for(i = 1;i = bx;i++)

{

for(j=1;j=by;j++)

{

board[i][j].setData(0,i,j,bw,0);

}

}

// 隨機(jī)產(chǎn)生雷

while(k = msum)

{

i = r.nextInt(bx)+1;

j = r.nextInt(by)+1;

if(board[i][j].getFlag() != 1)

{

board[i][j].setFlag(1);

k++;

}

}

// 非雷區(qū)的周圍有幾個(gè)雷,初始化其值

for(i = 1;i = bx;i++)

{

for(j=1;j=by;j++)

{

board[i][j].setCount(getCount(i,j));

}

}

setBackground(Color.white);

repaint();

}

// 構(gòu)造函數(shù)

public DrawPanel(int ax,int ay,int aw,int as)

{

initMin(ax,ay,aw,as);

addMouseListener(new MouseAdapter()

{

public void mousePressed(MouseEvent me)

{

int r;

if(f != 0) return; //如果游戲結(jié)束,返回

chx = me.getX();

chy = me.getY();

if(me.getButton() != 1)

{

board[chx/bw+1][chy/bw+1].sendKey(me.getButton());

draw(chx/bw+1,chy/bw+1);

}

else if(me.getButton() == 1)

{

if(openNoMin(chx/bw+1,chy/bw+1) == -1)

{

f = 1;

repaint();

}

else if ( ksum + msum == bx*by )

{

f = 2;

repaint();

}

}

}

}

);

}

// 重畫所有的圖形,包括一些修飾的圖形

public void paint(Graphics g)

{

int x,y,w;

int s;

int cx = bw/2 - 4;

int cy = bw/2 + 4;

g.clearRect(0,0,600,600);

for(i=1;i=bx;i++)

{

for(j=1;j=by;j++)

{

draw(g,i,j);

}

}

if(f == 1)

{

Font f = new Font("11",1,70);

Font fo = g.getFont();

g.setColor(Color.white);

g.setFont(f);

//g.setSize();

g.drawString("Game Over",0,200);

g.setFont(fo);

}

if( f == 2 )

{

Font f = new Font("11",1,70);

Font fo = g.getFont();

g.setColor(Color.white);

g.setFont(f);

//g.setSize();

g.drawString("You win!",0,200);

g.setFont(fo);

}

}

};

// 主類和程序的入口

public class Mine extends JFrame implements ActionListener

{

Container cp = getContentPane();

JButton bt = new JButton("開局");

Label l1 = new Label("列:");

Label l2 = new Label("行:");

Label l3 = new Label("寬度:");

Label l4 = new Label("雷的個(gè)數(shù):");

TextField tf1 = new TextField("10",2); //列

TextField tf2 = new TextField("10",2); //行

TextField tf3 = new TextField("40",2); //寬度

TextField tf4 = new TextField("15",2); //雷的個(gè)數(shù)

int x=10,y=10,w=40,sum=15;

DrawPanel dp = new DrawPanel(x,y,w,sum);

public Mine()

{

setBackground(Color.white);

cp.setLayout(null);

cp.add(dp);

cp.add(bt);

cp.add(tf1);

cp.add(tf2);

cp.add(tf3);

cp.add(tf4);

cp.add(l1);

cp.add(l2);

cp.add(l3);

cp.add(l4);

l1.setBounds(20 ,10,20,20);

tf1.setBounds(40,10,20,20);

l2.setBounds(70,10,20,20);

tf2.setBounds(90,10,20,20);

l3.setBounds(120,10,40,20);

tf3.setBounds(160,10,20,20);

l4.setBounds(190,10,60,20);

tf4.setBounds(250,10,20,20);

bt.setBounds(300,10,80,20);

dp.setBounds(20,40,x*w,y*w);

setResizable(false);

setSize(x*w+40,y*w+80);

setTitle(" 掃雷");

show();

bt.addActionListener(this);

addWindowListener(new WindowAdapter()

{ public void windowClosing(WindowEvent e)

{System.exit(0);}

}

);

}

public void actionPerformed(ActionEvent e)

{

if(e.getSource() == bt)

{

//x = Integer.parseInt(tf1.getText());

//y = Integer.parseInt(tf2.getText());

//w = Integer.parseInt(tf3.getText());

sum = Integer.parseInt(tf4.getText());

setSize(x*w+40,y*w+80);

dp.setBounds(20,40,x*w,y*w);

show();

dp.initMin(x,y,w,sum);

}

}

public static void main(String args[])

{

new Mine();

}

};


本文標(biāo)題:掃雷java代碼功能解釋 掃雷java代碼功能解釋大全
URL網(wǎng)址:http://www.dlmjj.cn/article/doisohh.html