老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)

java地雷代碼 java挖地雷代碼

求大神指點(diǎn)如何用java做掃雷小游戲 詳細(xì) ...有源代碼嗎

這些東西早忘光了說下我的理解希望可以幫助你把。

10多年的南崗網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營銷型網(wǎng)站的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整南崗建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“南崗網(wǎng)站設(shè)計(jì)”,“南崗網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

你先想好用什么來做,java swing里面做這個(gè)的,我記得這個(gè)東西可以直接用button來做的。

這些button形成一個(gè)矩形,用一個(gè)數(shù)組來記錄每個(gè)位置,比如point (x,y)這種。

用一個(gè)map來存放每個(gè)位置上button的狀態(tài),比如用0表示是雷,1不是。2是已經(jīng)顯示空白的區(qū)域,最后可能就是map((x,y),1);這種。

然后基本就是一些邏輯問題了,比如隨機(jī)地雷位置(設(shè)置3里面隨機(jī)數(shù)設(shè)置多少個(gè)是01).怎么右鍵點(diǎn)擊顯示周圍雷個(gè)數(shù),這些都是不少工作。

我能想到的就這些,畢竟過了很久了,你現(xiàn)在要是上學(xué)的話就抓緊寫這個(gè)東西,我感覺你有了思路查資料的話一個(gè)禮拜差不多也就能看得出能不能做出來,不能做出來在找源碼學(xué)吧,這些東西自己先做一遍和看源碼在學(xué)習(xí)效果差挺多。

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

import javax.swing.*;

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ì)算器注冊監(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); //注冊按鍵監(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); //按鈕注冊按鍵監(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è)為真

/*檢測周圍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);

}

}

java掃雷游戲代碼

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class Frame

extends JFrame {

JTextField text;

JLabel nowBomb, setBomb;

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

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

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

JPanel MenuPamel = new JPanel();

JPanel bombPanel = new JPanel();

Bomb[][] bombButton;

JPanel c;

BorderLayout borderLayout1 = new BorderLayout();

GridLayout gridLayout1 = new GridLayout();

public Frame() {

try {

setDefaultCloseOperation(EXIT_ON_CLOSE);

jbInit();

}

catch (Exception exception) {

exception.printStackTrace();

}

}

private void jbInit() throws Exception {

c = (JPanel) getContentPane();

setTitle("掃雷");

c.setBackground(Color.WHITE);

MenuPamel.setBackground(Color.GRAY);

c.setLayout(borderLayout1);

setSize(new Dimension(600, 600));

setResizable(false);

BlockNum = 144;

BombNum = 10;

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

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

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

start.addActionListener(new Frame1_start_actionAdapter(this));

MenuPamel.add(setBomb);

MenuPamel.add(text);

MenuPamel.add(start);

MenuPamel.add(nowBomb);

c.add(MenuPamel, java.awt.BorderLayout.SOUTH);

bombPanel.setLayout(gridLayout1);

gridLayout1.setColumns( (int) Math.sqrt(BlockNum));

gridLayout1.setRows( (int) Math.sqrt(BlockNum));

bombButton = new Bomb[ (int) Math.sqrt(BlockNum)][ (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].setSize(10, 10);

bombButton[i][j].setFont(new Font("", Font.PLAIN, 14));//設(shè)置字體大小

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

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

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

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

}

}

c.add(bombPanel, java.awt.BorderLayout.CENTER);

startBomb();

}

/* 開始按鈕 */

public void start_actionPerformed(ActionEvent e) {

int num=Integer.parseInt(text.getText().trim());

if (num = 5 num 50) {

BombNum = num;

startBomb();

}

else if (num 5) {

JOptionPane.showMessageDialog(null, "您設(shè)置的地雷數(shù)太少了,請重設(shè)!", "錯(cuò)誤",

JOptionPane.ERROR_MESSAGE);

num=10;

BombNum = num;

}

else {

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

JOptionPane.ERROR_MESSAGE);

num=10;

BombNum = num;

}

}

/* 開始,布雷 */

public void startBomb() {

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].isRight = false;

bombButton[i][j].BombFlag = 0;

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

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

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

bombButton[i][j].setFont(new Font("", Font.PLAIN, 14));//設(shè)置字體大小

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

rightBomb = 0;

restBomb = BombNum;

restBlock = BlockNum - BombNum;

}

}

for (int i = 0; i BombNum; ) {

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) {

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

i++;

}

}

CountRoundBomb();

}

/* 計(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)需要檢測的單元格本身無地雷的情況下,統(tǒng)計(jì)周圍的地雷個(gè)數(shù)

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

for (int x = i - 1; x i + 2; x++) {

for (int y = j - 1; y j + 2; y++) {

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

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

(y ( (int) Math.sqrt(BlockNum)))) {

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

count++;

}

}

}

}

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

}

}

}

}

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

public void isWin() {

restBlock = BlockNum - BombNum;

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

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

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

restBlock--;

}

}

}

if (rightBomb == BombNum || restBlock == 0) {

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

JOptionPane.INFORMATION_MESSAGE);

startBomb();

}

}

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

public void isNull(Bomb ClickedButton) {

int i, j;

i = ClickedButton.num_x;

j = ClickedButton.num_y;

for (int x = i - 1; x i + 2; x++) {

for (int y = j - 1; y j + 2; y++) {

if ( ( (x != i) || (y != j)) (x = 0) (y = 0)

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

(y ( (int) Math.sqrt(BlockNum)))) {

if (bombButton[x][y].isBomb == false

bombButton[x][y].isClicked == false

bombButton[x][y].isRight == false) {

turn(bombButton[x][y]);

}

}

}

}

}

/* 翻開 */

public void turn(Bomb ClickedButton) {

ClickedButton.setEnabled(false);

ClickedButton.isClicked = true;

if (ClickedButton.BombRoundCount 0) {

ClickedButton.setText(ClickedButton.BombRoundCount + "");

}

else {

isNull(ClickedButton);

}

}

/* 左鍵點(diǎn)擊 */

public void actionPerformed(ActionEvent e) {

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

( (Bomb) e.getSource()).isRight == false) {

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

turn( ( (Bomb) e.getSource()));

isWin();

}

else {

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].setText("b");

}

}

}

( (Bomb) e.getSource()).setForeground(Color.RED);

( (Bomb) e.getSource()).setFont(new Font("", Font.BOLD, 20));

( (Bomb) e.getSource()).setText("X");

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

startBomb();

}

}

}

/* 右鍵點(diǎn)擊 */

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 (restBomb 0) {

bombSource.setForeground(Color.RED);

bombSource.setText("F");

bombSource.isRight = true;

restBomb--;

}

else {

bombSource.BombFlag = 0;

}

}

else if (bombSource.BombFlag == 2) {

restBomb++;

bombSource.setText("Q");

bombSource.isRight = false;

}

else {

bombSource.setText("");

}

if (bombSource.isBomb == true) {

if (bombSource.BombFlag == 1) {

rightBomb++;

}

else if (bombSource.BombFlag == 2) {

rightBomb--;

}

}

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

isWin();

}

}

public static void main(String[] args) {

Frame frame = new Frame();

frame.setVisible(true);

}

}

class Frame1_start_actionAdapter

implements ActionListener {

private Frame adaptee;

Frame1_start_actionAdapter(Frame adaptee) {

this.adaptee = adaptee;

}

public void actionPerformed(ActionEvent e) {

adaptee.start_actionPerformed(e);

}

}

////////////////////////////

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;

num_y = y;

BombFlag = 0;

BombRoundCount = 9;

isBomb = false;

isClicked = false;

isRight = false;

}

}

class Bomb_actionAdapter

implements ActionListener {

private Frame adaptee;

Bomb_actionAdapter(Frame adaptee) {

this.adaptee = adaptee;

}

public void actionPerformed(ActionEvent e) {

adaptee.actionPerformed(e);

}

}

class Bomb_mouseAdapter

extends MouseAdapter {

private Frame adaptee;

Bomb_mouseAdapter(Frame adaptee) {

this.adaptee = adaptee;

}

public void mouseClicked(MouseEvent e) {

adaptee.mouseClicked(e);

}

}

JAVA代碼解釋及流程圖 有會(huì)編JAVA的 講一掃雷游戲的題 將明白的分都給你

掃雷游戲的算法概述:

你可以把地雷所在的區(qū)域抽象成一個(gè)二維數(shù)組。數(shù)組里的元素是該地周圍的雷數(shù)。然后根據(jù)玩家所設(shè)定的地雷個(gè)數(shù)用一個(gè)隨機(jī)數(shù)生成器來撒雷。有雷的地方可以用-1來表示,沒有雷的地方在撒雷的時(shí)候數(shù)它旁邊的雷數(shù),然后將值填入對應(yīng)的數(shù)組元素里。這樣,你的雷陣已經(jīng)部署完畢。

接下來是玩家的操作了。如果你有仔細(xì)觀察的話,當(dāng)你點(diǎn)擊一個(gè)位置的是后發(fā)生的情況有3種:

1. 如果該處有雷的話,很簡單,游戲結(jié)束

2. 如果該處沒有雷,但是這個(gè)地方附近有至少一個(gè)雷的話,只將當(dāng)前的位置周圍雷數(shù)顯示出來。

3. 如果該處沒有雷,并且附近也沒有雷的話,就用一個(gè)循環(huán)或是遞歸的方法將它四周的沒有雷的地方也顯示出來。如果他四周的位置的四周也沒有雷的話,繼續(xù)這個(gè)過程,知道四周至少有一個(gè)雷時(shí)候停止。

玩家事件的處理:

玩家的事件有三種:單擊,左右鍵同時(shí)點(diǎn)擊,和右擊。

單擊可以想象成走到該處,如果有雷的話就游戲結(jié)束,沒有的話就根據(jù)我以上講的三點(diǎn)來判斷該做什么。

左右鍵同時(shí)點(diǎn)擊的話就將該處四周可能有雷的地方顯示出來,如果玩家錯(cuò)將沒有雷的地方放了小紅旗的話,游戲結(jié)束。

右擊是放小紅旗。

當(dāng)所有雷都被清楚的時(shí)候,游戲結(jié)束,玩家勝利。

java計(jì)算該二維數(shù)組中不是地雷的位置周圍的8個(gè)位置總共有多少個(gè)地雷

剛寫過這個(gè)代碼

t?java.util.Random;

import?java.util.Scanner;

public?class?Mine?{

public?static?void?main(String[]?args)?{

int[][]?m?=?new?int[10][10];

Random?r?=?new?Random();

for(int?i?=?0;i10;++i)

for(int?j?=?0;j10;++j)

{

m[i][j]?=?r.nextInt(2);

}

Scanner?sc?=?new?Scanner(System.in);

System.out.println("輸入坐標(biāo)x和坐標(biāo)y");

int?x?=?sc.nextInt();

int?y?=?sc.nextInt();

System.out.println("地雷的個(gè)數(shù)是:"+findMine(m,x,y));

for(int?i1?=?0;i110;i1++)

{for(int?j1?=?0;j110;j1++)

System.out.print(m[i1][j1]+"?");

System.out.println();

}?

System.out.println();

}

public?static?int?findMine(int[][]?m,int?x,int?y){

int?sum?=?0;

if(m[x][y]?==?1)

return?-1;

if((x-1)0y-10)

if(m[x-1][y-1]==1)

sum++;

if((x-1)0)

if(m[x-1][y]==1)

sum++;

if(x-10y+1m[0].length)

if(m[x-1][y+1]==1)

sum++;

if(y-10)

if(m[x][y-1]==1)

sum++;

if(y+1m[0].length)

if(m[x][y+1]==1)

sum++;

if(x+1m.lengthy-10)

if(m[x+1][y-1]==1)

sum++;

if(x+1m.length)

if(m[x+1][y]==1)

sum++;

if(x+1m.lengthy+1m[0].length)

if(m[x+1][y+1]==1)

sum++;

return?sum;

}

}


本文標(biāo)題:java地雷代碼 java挖地雷代碼
路徑分享:http://www.xueling.net.cn/article/dodohis.html

其他資訊

在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 成人性色生活片免费看爆迷你毛片 | 成人第一区| 精品人妻一区二区三区综合部 | 亚洲婷婷五月综合狠狠 | 成人免费视频亚洲 | 91丨日韩丨精品 | 芒果视频91| 亚洲三区在线播放 | 亚洲sm另类一区二区三区 | 又硬又粗进去好爽A片春色视频 | 国产性网 | 国产成人8x人网站在线视频 | 真人性囗交69视频 | 日韩视频中文字幕视频一区 | 超级碰碰青草免费视频 | 亚洲av无码专区国产乱码4se | 亚洲AV无码国产成人 | 国内自拍视频网站 | 在线观看国产色视频网站 | 女攻男受极限调教高h | 亚洲欧洲日产国码aⅴ | 91精品啪在线观看国产足疗 | 日本免费不卡 | 毛片网站观看 | av看片在线观看 | a级在线视频 | 97婷婷涩涩精品一区 | 亚洲草逼 | 成人国产精品齐天大性 | 久久久久久久久久久大尺度免费视频 | 老司机午夜私人影院免费 | 99精品久久久久久久 | 九九视频免费观看视频精品 | 99久久精品免费看国产高清 | 亚洲精品成人网站在线 | 精品熟人一区二区三区四区 | 青青视频免费 | 亚洲天堂第一页 | 精品国产一区二区三区在线 | 国产粉嫩高中无套进入 | 国产精品午夜福利在线观看地址 |