亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sweepbomb.java

?? 模擬掃雷游戲
?? JAVA
字號:
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

//本程序實現了掃雷游戲的基本操作,包括中鍵打開周圍8個格,但還有待不斷完善
class MyButton extends JButton{       // 按鈕類繼承自 JButton
	public int x, y;                    //坐標
	private boolean isBomb = false;      //是否是雷   
	private boolean isFlaged = false;    //是否設置為旗幟
	private boolean isOpened = false;    //是否作鍵打開
	private int bombNumber = 0;          //周圍8個格的地雷數量
	MyButton(int x, int y) {
		this.x = x;
		this.y = y;
		}
	public void Init() {                  //初始化
		isBomb = false;
		isFlaged = false;
		isOpened = false;	
	}
	public void setBomb() { isBomb = true; }
	public void setFlaged() { isFlaged = true; }
	public void deleteFlag() { isFlaged = false; }
	public void setOpened() { isOpened = true; }
	public void setBombNumber(int bombNumber) { this.bombNumber = bombNumber;} 
	public boolean isBomb() { return isBomb; }
	public boolean isFlaged() { return isFlaged; }
	public boolean isOpened() { return isOpened; }
	public int getBombNumber() { return bombNumber; }	
	public String getBombNumber(int i) {
		Integer bNumber = new Integer(bombNumber);
		return bNumber.toString();
		}
	}
 
public class SweepBomb extends MouseAdapter{
	final int Rows = 10, Columns = 10, TotalBomb = 20; //設置大小和地雷數
	int bombNow;                                      //當前地雷數量
	private boolean gameOver = false;                 //游戲失敗標記
	private static Random rand = new Random();        //隨機數埋雷
	JFrame sweepFrame;                                //以下為界面設計
	JPanel panel1, panel2;
	JButton start;
	JLabel label;
	JTextField textl1, textl2;
	MyButton[][] sweepBombButton = new MyButton[Rows][Columns];
  
	SweepBomb() {
		sweepFrame = new JFrame("掃雷游戲");
		sweepFrame.setBounds(100, 0, 60*Columns, 60*Rows);
		panel1 = new JPanel();
 	    panel2 = new JPanel();
 	    start = new JButton("重新開始");
 	    start.addMouseListener(this);
 	    label = new JLabel("雷數");
 	    textl1 = new JTextField(new Integer(TotalBomb).toString());
 	    textl2 = new JTextField("小心地雷");
 	    panel1.setLayout(new FlowLayout());
	 	panel2.setLayout(new GridLayout(Rows, Columns, 0, 0));
	 	panel1.add(start);
	 	panel1.add(label);
	 	panel1.add(textl1);
	 	panel1.add(textl2);
		
	 	for(int i = 0; i < Rows; i++) {
	 		for(int j = 0; j < Columns; j++) {
	 			sweepBombButton[i][j] = new MyButton(i, j);
	 			sweepBombButton[i][j].addMouseListener(this);		
	 			panel2.add(sweepBombButton[i][j]);
	 			}
	 	}
	 	
	 	sweepFrame.setLayout(new BorderLayout(0,0));
		sweepFrame.add(panel1,BorderLayout.NORTH);
		sweepFrame.add(panel2,BorderLayout.CENTER);
		sweepFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	
		sweepFrame.setVisible(true);
		startGame();             //開始游戲
	}
	
	public void Init() {                //將每個按鍵初始化
		for(int i = 0; i < Rows; i++) {
			for(int j = 0; j < Columns; j++) {
				sweepBombButton[i][j].Init();
				sweepBombButton[i][j].setForeground(Color.black);
				sweepBombButton[i][j].setText("");
				}
			}
		}
	
	public void berryBomb() {     //隨機埋地雷,地雷數指定
		bombNow = TotalBomb;
		for(int beryBomb = TotalBomb; beryBomb > 0; beryBomb--){
			int i,j;
			do {
				i = rand.nextInt(Rows);
			    j = rand.nextInt(Columns);
				} while(sweepBombButton[i][j].isBomb());
			sweepBombButton[i][j].setBomb();
			}
	}

	public int getBombNumber(int x, int y) {   //查找周圍的地雷總數
		int sum = 0;
		if(x - 1 >= 0 && y - 1 >= 0 && (sweepBombButton[x-1][y-1].isBomb())) 
			sum++;
		if(x - 1 >= 0 && (sweepBombButton[x-1][y].isBomb())) 
			sum++;
		if(x - 1 >= 0 && y + 1 < Columns && (sweepBombButton[x-1][y+1].isBomb())) 
			sum++;
		if(y - 1 >= 0 && (sweepBombButton[x][y-1].isBomb())) 
			sum++;
		if(y + 1 < Columns && (sweepBombButton[x][y+1].isBomb())) 
			sum++;
		if(x + 1 < Columns && y - 1 >= 0 && (sweepBombButton[x+1][y-1].isBomb())) 
			sum++;
		if(x + 1 < Columns && (sweepBombButton[x+1][y].isBomb())) 
			sum++;
		if(x + 1 < Columns && y + 1 < Columns && (sweepBombButton[x+1][y+1].isBomb())) 
			sum++;
		return sum;
	}
	
	public void startGame() {  //開始游戲
		gameOver = false;       
		berryBomb();             //重新埋地雷
		label.setText("雷數");
 	    textl1.setText(new Integer(TotalBomb).toString());
 	    textl2.setText("小心地雷");
	 	for(int i = 0; i < Rows; i++) {
	 		for(int j = 0; j < Columns; j++) {
	 			if(!sweepBombButton[i][j].isBomb())
	 				sweepBombButton[i][j].setBombNumber(this.getBombNumber(i, j));
	 		}
	 	}		
	}
	
	public void blankAera(int x, int y) { //左鍵按到0,打開一片為0的區域,采用遞歸法
		if(sweepBombButton[x][y].getBombNumber() == 0 && 
		  (!sweepBombButton[x][y].isFlaged()) &&(!sweepBombButton[x][y].isOpened()))   {
			sweepBombButton[x][y].setForeground(Color.blue);
			sweepBombButton[x][y].setText("0");
			sweepBombButton[x][y].setOpened();
			if(x-1 >= 0) blankAera(x-1, y);
			if(x+1 < Columns) blankAera(x+1, y);
			if(y - 1 >=0) blankAera(x, y-1);
			if(y + 1 < Rows) blankAera(x, y+1);
			}
	}
	
	//以下兩個函數用于實現中鍵操作
	public boolean aroundEqual(int x, int y) {  //查找周圍8個格的紅旗數量
		int sum = 0;
		if(x - 1 >= 0 && y - 1 >= 0 && (sweepBombButton[x-1][y-1].isFlaged())) 
			sum++;
		if(x - 1 >= 0 && (sweepBombButton[x-1][y].isFlaged())) 
			sum++;
		if(x - 1 >= 0 && y + 1 < Columns && (sweepBombButton[x-1][y+1].isFlaged())) 
			sum++;
		if(y - 1 >= 0 && (sweepBombButton[x][y-1].isFlaged())) 
			sum++;
		if(y + 1 < Columns && (sweepBombButton[x][y+1].isFlaged())) 
			sum++;
		if(x + 1 < Columns && y - 1 >= 0 && (sweepBombButton[x+1][y-1].isFlaged())) 
			sum++;
		if(x + 1 < Columns && (sweepBombButton[x+1][y].isFlaged())) 
			sum++;
		if(x + 1 < Columns && y + 1 < Columns && (sweepBombButton[x+1][y+1].isFlaged())) 
			sum++;
		return sum == sweepBombButton[x][y].getBombNumber();	
	}
	
		
	public void openAround(int x, int y) {  
		//打開周圍8個格,遇到是地雷但沒有標記紅旗則游戲結束
		for(int i = x-1; i <= x+1; i++) {
			for(int j = y-1; j <= y+1; j++) {
				if(i >= 0 && i < Rows && j >= 0 && j < Columns) {
					if(sweepBombButton[i][j].isBomb()) {
						if(!sweepBombButton[i][j].isFlaged()) {
							sweepBombButton[i][j].setForeground(Color.black);
							sweepBombButton[i][j].setText("*");
							gameOver();
							gameOver = true;
						}
					}
					else {
						sweepBombButton[i][j].setOpened();
						sweepBombButton[i][j].setForeground(Color.blue);
						sweepBombButton[i][j].setText(sweepBombButton[i][j].getBombNumber(1));
						}
					}
				}
		}
	}
	
	public void gameOver() {  //游戲結束,顯示所有地雷
		textl2.setText("很遺憾,你輸了!");
		for(int i = 0; i < Rows; i++) {
			for(int j = 0; j < Columns; j++) {
				if(sweepBombButton[i][j].isBomb()) {
					sweepBombButton[i][j].setForeground(Color.black);
					sweepBombButton[i][j].setText("*");	
				}
					
			}
		}
	}
	public boolean isWin() {   //所有按鍵都打開則獲勝,地雷掃出獲勝
		if(bombNow != 0) 
			return false;
		for(int i = 0; i < Rows; i++) {
			for(int j = 0; j < Columns; j++) {
				if((!sweepBombButton[i][j].isOpened()) && (!sweepBombButton[i][j].isFlaged()))
					return false;
			}
		}
		return true;
	}
		        
	public void mouseClicked(MouseEvent e) {   //鼠標操作響應
		if(e.getSource() == start){     //按動重新開始按鈕則重新開始游戲
			Init();
			startGame();
		}
		else {
			if(!gameOver && !isWin()){   //沒贏也沒輸的情況下
				int i = ((MyButton)e.getSource()).x;   //找到對應按鍵
				int j = ((MyButton)e.getSource()).y;
				if(e.getButton() == e.BUTTON1) {        //如果按下左鍵
		              if(sweepBombButton[i][j].isBomb()){  //踩雷的話結束游戲
		            	 gameOver();
		            	 gameOver = true;
		             	 }
		              else {                            //否則打開按鍵
		            	  int bombAround = sweepBombButton[i][j].getBombNumber();
		            	  if(bombAround == 0){     //按鍵數為0打開一片為0的區域
		            		  blankAera(i, j);
		            		  }
		            	  else {
		            		  Integer bombNumber = new Integer(bombAround);
		            		  sweepBombButton[i][j].setForeground(Color.blue);
			            	  sweepBombButton[i][j].setText(bombNumber.toString());
			            	  sweepBombButton[i][j].setOpened();
			            	  }
		            	  }
		              }
		         else if(e.getButton() == e.BUTTON3) {   //如果按下右鍵
		        	if(!sweepBombButton[i][j].isOpened()){   //已經打開的話沒反應
		        		if(sweepBombButton[i][j].isFlaged()){//已經插紅旗的話變成問號
			         		sweepBombButton[i][j].deleteFlag();//取消設置紅旗
			         		sweepBombButton[i][j].setForeground(Color.green);
			         		sweepBombButton[i][j].setText("?");
			         		bombNow++;                        //當前地雷數增加
			         		textl1.setText((new Integer(bombNow).toString()));	
			         	}
			         	else {
			         		sweepBombButton[i][j].setFlaged();  //沒有插紅旗則插上紅旗
				        	 sweepBombButton[i][j].setForeground(Color.red);
				        	 sweepBombButton[i][j].setText("旗");
				        	 bombNow--;                        //當前地雷數減小
				        	 textl1.setText((new Integer(bombNow).toString()));		
			         	}			
		        	}					         			        	 
		         }
		         else if(e.getButton() == e.BUTTON2) {       //如果在打開的按鍵上按下中鍵
		        	 if(sweepBombButton[i][j].isOpened()) {  
		        		 if(aroundEqual(i, j)) {   //周圍標出地雷數等于實際地雷數
				         		openAround(i, j);      //打開周圍8個
				         		}
		        		 }		         	
		         	}
				if(isWin()) {
					textl2.setText("恭喜你贏了!");
				}
			}
		}	
	}

	public static void main(String[] args) {
		SweepBomb sweepBomb = new SweepBomb();
	}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲毛片av在线| 日本最新不卡在线| 韩国精品久久久| 久久品道一品道久久精品| 日韩电影在线观看网站| 欧美曰成人黄网| 亚洲国产欧美另类丝袜| 欧美午夜在线观看| 亚洲一级在线观看| 99re热视频这里只精品| 日韩一区日韩二区| 欧美羞羞免费网站| 天天色综合成人网| 欧美一级黄色片| 99久久精品费精品国产一区二区| 在线一区二区三区四区五区| 91麻豆免费在线观看| 精品1区2区在线观看| 高清国产一区二区三区| 国产亚洲人成网站| 在线观看日韩国产| 美国三级日本三级久久99| 久久精品人人做人人爽人人| 色噜噜狠狠成人中文综合| 蜜臀av在线播放一区二区三区| 国产亚洲成年网址在线观看| 色综合色狠狠天天综合色| 亚洲欧美电影一区二区| 日韩欧美在线一区二区三区| aaa亚洲精品| 精品一区二区三区欧美| 亚洲韩国精品一区| 国产精品电影一区二区三区| 国产99久久久国产精品潘金网站| 亚洲成人动漫精品| 亚洲欧洲av在线| 国产色产综合产在线视频| 欧美肥妇毛茸茸| 日韩一区国产二区欧美三区| 在线综合视频播放| 精品粉嫩超白一线天av| 久久久.com| 亚洲欧美日韩在线| 亚洲大型综合色站| 久久精品国内一区二区三区| 国产一区二区在线影院| 成人动漫一区二区在线| 欧美日韩精品电影| 国产亚洲精品精华液| 国产日产精品1区| 亚洲美女电影在线| 精品亚洲成av人在线观看| 成人国产在线观看| 欧美喷潮久久久xxxxx| 久久综合给合久久狠狠狠97色69| 中文字幕精品一区二区精品绿巨人| 亚洲色图欧美偷拍| 久久国产剧场电影| 欧美色综合网站| 亚洲同性同志一二三专区| 日韩成人精品在线| 在线中文字幕不卡| 中文字幕日韩欧美一区二区三区| 秋霞成人午夜伦在线观看| 色综合中文字幕| 亚洲婷婷综合久久一本伊一区| 免费成人美女在线观看.| 91看片淫黄大片一级| 久久九九影视网| 韩国在线一区二区| 久久亚洲精精品中文字幕早川悠里 | 国产精品一区二区视频| 欧美亚洲日本国产| 亚洲一区二区三区视频在线播放| 成人中文字幕在线| 国产精品色婷婷| 国内精品久久久久影院一蜜桃| 欧美精品在线一区二区| 日韩和的一区二区| 欧美日韩一区高清| 蜜臀av一区二区在线免费观看| 欧美日韩情趣电影| 国产一区免费电影| **性色生活片久久毛片| 欧美日韩三级一区二区| 青青青伊人色综合久久| 国产无一区二区| 欧美综合一区二区| 乱一区二区av| 亚洲欧美日韩国产另类专区| 成人国产亚洲欧美成人综合网| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 日日摸夜夜添夜夜添国产精品| 69堂国产成人免费视频| 国产成人精品亚洲777人妖| 中文字幕字幕中文在线中不卡视频| 97精品久久久午夜一区二区三区| 国产三级欧美三级日产三级99| 日韩精品色哟哟| 成人aaaa免费全部观看| 午夜电影一区二区| 亚洲欧美日韩国产综合| 国产精品网站在线播放| 久久久高清一区二区三区| 91精品一区二区三区久久久久久 | 亚洲欧美激情一区二区| 久久蜜臀精品av| 精品国产人成亚洲区| 欧美一区三区四区| 911精品国产一区二区在线| 欧美色大人视频| 欧美日韩在线播| 欧美体内she精视频| 欧美午夜精品免费| 在线免费观看日本一区| 在线观看国产精品网站| 欧美中文字幕亚洲一区二区va在线 | 亚洲男人天堂一区| 亚洲品质自拍视频| 亚洲一区二区视频在线观看| 中文字幕在线播放不卡一区| 国产精品丝袜黑色高跟| 国产精品每日更新| 亚洲欧美aⅴ...| 午夜电影一区二区| 免费久久99精品国产| 国模大尺度一区二区三区| 国产成人亚洲综合色影视| 99视频有精品| 精品污污网站免费看| 91精品国产色综合久久不卡蜜臀| 欧美一级在线观看| 欧美成人精品福利| 欧美韩国日本不卡| 亚洲一区二区四区蜜桃| 毛片一区二区三区| 国产xxx精品视频大全| 91麻豆国产香蕉久久精品| 欧美日韩亚洲国产综合| 亚洲精品在线三区| 亚洲色图欧美在线| 日韩av在线发布| 国产精品1区2区| 在线亚洲+欧美+日本专区| 777午夜精品视频在线播放| 久久网站热最新地址| 亚洲男人都懂的| 韩国欧美一区二区| 91亚洲午夜精品久久久久久| 在线播放国产精品二区一二区四区| 日韩欧美国产精品| 亚洲女子a中天字幕| 久久国产尿小便嘘嘘| 成人动漫一区二区在线| 91精品国产一区二区人妖| 国产精品色在线观看| 午夜精品福利久久久| 国产99久久久国产精品| 91精品国产福利| 亚洲欧洲精品一区二区三区不卡| 日韩1区2区日韩1区2区| 99精品偷自拍| 久久久久青草大香线综合精品| 亚洲制服丝袜一区| 成人午夜免费电影| 日韩欧美中文字幕公布| 夜夜嗨av一区二区三区| 国产成人午夜高潮毛片| 日韩一区二区影院| 亚洲影视在线播放| 成人小视频免费观看| 精品乱人伦一区二区三区| 亚洲国产精品人人做人人爽| 成人午夜免费电影| 久久免费电影网| 久久精品国产99久久6| 欧美日韩国产一区| 亚洲黄色录像片| 国产高清精品久久久久| 日韩精品一区二区三区视频播放| 亚洲卡通欧美制服中文| 成人免费av在线| 国产网站一区二区| 韩国精品久久久| 精品久久久久香蕉网| 日韩中文欧美在线| 欧美伦理视频网站| 亚洲第一搞黄网站| 欧美日韩另类一区| 一区二区三区资源| 色综合天天综合网国产成人综合天| 国产日韩精品一区二区浪潮av| 久久不见久久见中文字幕免费| 9191国产精品| 日韩精品一卡二卡三卡四卡无卡| 欧美吻胸吃奶大尺度电影| 一区二区三区中文字幕精品精品| www.综合网.com| 自拍偷拍国产精品| 日本久久一区二区三区|