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

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

?? jmine.java.bak

?? 用JAVA做了一個小游戲
?? BAK
字號:
/**
 * This program is written by Jerry Shen(Shen Ji Feng)
 * use the technology of SWING GUI and the OO design
 *
 * @author Jerry Shen
 * all rights reserved.
 */ 
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import JMine.*;

class JMine extends JFrame implements MouseListener, ActionListener{
	private JMineArth mine;
	private JMineButton [][] mineButton;
    private GridBagConstraints constraints;
   	private JPanel pane;
    private GridBagLayout gridbag;
	private boolean gameStarted;
	private JCounter mineCounter;
	private JCounter timeCounter;

	private TimeCounterThread timerThread;
	public int numMine;
	public int numFlaged;

	private JMenuBar mb;
	private JMenu mGame;
	private JMenuItem miEasy;
	private JMenuItem miMiddle;
	private JMenuItem miHard;
	private JMenuItem miExit;
	private JMenu mHelp;
	private JMenuItem miAbout;
	private JPanel controlPane;
	private JButton bTest;
	
	private AboutFrame about;



	private ImageIcon [] mineNumIcon = { new ImageIcon("0.gif"), new ImageIcon("1.gif"),
					     new ImageIcon("2.gif"), new ImageIcon("3.gif"),
					     new ImageIcon("4.gif"), new ImageIcon("5.gif"),
					     new ImageIcon("6.gif"), new ImageIcon("7.gif"),
					     new ImageIcon("8.gif"), new ImageIcon("9.gif"),
					};
	private ImageIcon[] mineStatus = { new ImageIcon("0.gif"), new ImageIcon("flag.gif"), 
						new ImageIcon("question.gif") };
	private ImageIcon[] mineBombStatus = { new ImageIcon("0.gif"), new ImageIcon("mine.gif"), 
						new ImageIcon("wrongmine.gif"), new ImageIcon("bomb.gif") };
	private ImageIcon[] faceIcon = { new ImageIcon("smile.gif"), new ImageIcon("Ooo.gif")};
	
	// You lose
	private void bomb(int row, int col) {
		//System.out.println("Bomb!");
		timerThread.stop();
		
		for (int i = 0; i < 10; i++) {
			for (int j = 0; j < 10; j++) {
				mineButton[i][j].setIcon(mineBombStatus[0]);
				int toShow;
        		toShow = mine.mine[i][j]!=9? 0: 1;
				mineButton[i][j].setClickFlag(true);
 				if ( toShow == 1 && (i!=row || j!= col)) {
					mineButton[i][j].setIcon(mineBombStatus[toShow]);
					mineButton[i][j].setClickFlag(true);
				}
				else if (toShow == 1 && (i == row && j== col)) {
					mineButton[i][j].setIcon(mineBombStatus[3]);
					mineButton[i][j].setClickFlag(true);
				}
				else if (toShow == 0 && mineButton[i][j].getFlag() != 1) {
					mineButton[i][j].setEnabled(false); 
				}
				else if ( toShow == 0 && mineButton[i][j].getFlag() == 1) {
					mineButton[i][j].setIcon(mineBombStatus[2]);
					mineButton[i][j].setClickFlag(true);
				}
			}
		}
	}
	
	// check if you win() {
	private boolean isWin() {
		int minesCount=0;
		for (int i = 0; i < 10; i++) {
			for (int j=0; j <10; j++) {
				if(mine.mine[i][j]==9 && mineButton[i][j].getFlag() != 1) {
					return(false);
				}
				if(mine.mine[i][j]!=9 && mineButton[i][j].getFlag() == 1) {
					return(false);
				}
				if(mine.mine[i][j]!=9 && mineButton[i][j].getClickFlag() == false) {
					return(false);
				}				
			}
		}
		return(true);
	}
	
	// You Win
	private void win() {
		timerThread.stop();
		RestartRunner r = new RestartRunner();
		r.setMine(this);
		r.setTimer(timerThread);
		Thread t = new Thread(r);
		t.start();
		
	}
	
	// Constructor of the game 
	public JMine() {
		super("JMine Game");
		setSize(250, 350);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		Insets space = new Insets(0,0,0,0);
		
		// Game vars
		gameStarted = false;
		numMine = 12;
		numFlaged = 0;
		
		ImageIcon myIcon = new ImageIcon("0.gif");
		gridbag = new GridBagLayout();
		constraints = new GridBagConstraints();
		pane = new JPanel();
		pane.setLayout(gridbag);
		constraints.fill = GridBagConstraints.BOTH;
		constraints.anchor = GridBagConstraints.CENTER;


		// Begin Menu Set
		mb = new JMenuBar();
		mGame = new JMenu("Game");
		miEasy = new JMenuItem("Easy");
		miEasy.addActionListener(this);
		miMiddle = new JMenuItem("Middle");
		miMiddle.addActionListener(this);
		miHard = new JMenuItem("Hard");
		miHard.addActionListener(this);
		miExit = new JMenuItem("Exit");
		miExit.addActionListener(this);
		mGame.add(miEasy);
		mGame.add(miMiddle);
		mGame.add(miHard);
		mGame.addSeparator();
		mGame.add(miExit);
		mb.add(mGame);

		mHelp = new JMenu("Help");
		miAbout = new JMenuItem("About...");
		mHelp.add(miAbout);
		miAbout.addActionListener(this);
		mb.add(mHelp);
		this.setJMenuBar(mb);
		// end of Menu Set

		// Control Panel
		controlPane = new JPanel();
		bTest = new JButton(faceIcon[0]);
		bTest.setSize(26, 27);
		bTest.setMargin(space);
		bTest.addMouseListener(this);
		bTest.setPressedIcon(faceIcon[1]);
	
		mineCounter = new JCounter(numMine);
		timeCounter = new JCounter();
		controlPane.add(mineCounter);
		controlPane.add(bTest);
		controlPane.add(timeCounter);
		buildConstraints(constraints, 0, 0, 10, 2, 100, 100);
		gridbag.setConstraints(controlPane, constraints);
		pane.add(controlPane);
			
		// Bottons
		mineButton = new JMineButton[10][10];		
		for (int i=0; i <10; i++) {
			for (int j=0; j < 10; j++) {
				mineButton[i][j] = new JMineButton(i,j, myIcon);
				mineButton[i][j].addMouseListener(this);
				mineButton[i][j].setMargin(space);
				buildConstraints(constraints, j, i+3, 1, 1, 100, 100);
				gridbag.setConstraints(mineButton[i][j], constraints);
				pane.add(mineButton[i][j]);
			}
		}

		// Content Pane
		setContentPane(pane);
		setLocation(200, 150);
		setVisible(true);
		
		// About Frame
		about = new AboutFrame("JMine About");
	}
	
	// Set the GUI objects positions
	void buildConstraints(GridBagConstraints gbc, int gx, int gy, int gw, int gh, int wx, int wy) {
		gbc.gridx = gx;
		gbc.gridy = gy;
		gbc.gridwidth = gw;
		gbc.gridheight = gh;
		gbc.weightx = wx;
		gbc.weighty = wy;
	}
	
	// the methods to check if there were mines, to be nested
	void checkMine(int row, int col) {
		int i,j;
		i=row<0?0:row;
		i=i>9?9:i;
		j=col<0?0:col;
		j=j>9?9:j;
		//System.out.println("Check Mine row:"+i + ",col:" +j);
		if (mine.mine[i][j] == 9) {
			bomb(i,j);
		}
		else if (mine.mine[i][j] == 0 && mineButton[i][j].getClickFlag() == false) {
			mineButton[i][j].setClickFlag(true);
            		showLabel(i,j);
			for (int ii= i -1; ii <= i+1; ii++)
				for (int jj = j-1; jj <= j+1; jj++)
					checkMine(ii,jj);
			
		}
		else {
			showLabel(i,j);
			mineButton[i][j].setClickFlag(true);
		}
		if (isWin()) {
			win();
		}
	}

	private void clearAll(int row, int col) {
		int top,bottom, left, right, count=0;
		top=row-1>0?row-1:0;
		bottom=row+1<10?row+1:9;
		left=col-1>0?col-1:0;
		right=col+1<10?col+1:9;
		for (int i=top; i<=bottom; i++) {
			for(int j=left; j<= right; j++) {
				if (mineButton[i][j].getFlag()!=1) checkMine(i,j);
			}
		}

	}
	
	private void resetAll() {
		for (int i=0; i<10; i++) {
			for(int j=0; j< 10; j++) {
				mineButton[i][j].setFlag(0);
				mineButton[i][j].setClickFlag(false);
				mineButton[i][j].setIcon(mineStatus[0]);
				mineButton[i][j].setEnabled(true);
				mineButton[i][j].setVisible(true);
			}
		}
	}

	
	// to flag the mine you want to flag out
	void flagMine(int row, int col) {
		//System.out.println("Jerry Arrives here!");
		int i,j;
		i=row<0?0:row;
		i=i>9?9:i;
		j=col<0?0:col;
		j=j>9?9:j;
		if(mineButton[i][j].getFlag() == 0) {
			numFlaged++;
		} else if(mineButton[i][j].getFlag() == 1){
			numFlaged--;
		}
		mineCounter.resetCounter(numMine - numFlaged>=0?numMine - numFlaged:0);
		mineButton[i][j].setFlag((mineButton[i][j].getFlag() + 1) %3) ;
		showFlag(i,j);
		if (isWin()) {
			win();
		}	
	}

	// show the numbers of the nearby mines
	void showLabel(int row, int col) {
		//System.out.println("ShowLabel row:" + row + ",col:" + col);
        	int toShow;
        	toShow = mine.mine[row][col];
		if (toShow != 0) {
			mineButton[row][col].setIcon(mineNumIcon[toShow]);
			mineButton[row][col].setClickFlag(true);
			//mineButton[row][col].setEnabled(false);
		} 
		else {
			//mineButton[row][col].setIcon(mineNumIcon[0]);
			//mineButton[row][col].setClickFlag(true);
			mineButton[row][col].setEnabled(false);
		}
	}
	
	// circle the flag with blank, flaged, questioned
	void showFlag(int row, int col) {			
		mineButton[row][col].setIcon(mineStatus[mineButton[row][col].getFlag()]);
	}
	
	// the mouse events listener methods
	public void mouseEntered(MouseEvent e) {
		//System.out.println("Jerry Test");

	}
	
	// method to start the new game
	private void startNewGame(int num, int row, int col) {
		mine = new JMineArth(num, row, col);
		//mine.printMine();
		gameStarted = true;

		timerThread = new TimeCounterThread(timeCounter);
		timerThread.start(); 
	}
	
	public void setNewGame(int num) {
		resetAll();
		numMine = num;
		numFlaged = 0;
		gameStarted = false;
		mineCounter.resetCounter(numMine);
		timeCounter.resetCounter(0);	
	}

	// the event handle to deal with the mouse click
	public void mouseClicked(MouseEvent e) {
		if(e.getSource() == bTest) {
			setNewGame(numMine);
			return;
		}
		int  row,col;
		row=((JMineButton)e.getSource()).getRow();
		col=((JMineButton)e.getSource()).getCol();
		if (!gameStarted) {
			startNewGame(numMine, row, col);
		}

		if (e.getModifiers() == (InputEvent.BUTTON1_MASK+InputEvent.BUTTON3_MASK)) {
			//System.out.println("HA");
			clearAll(row, col);
		}
		if (!mineButton[row][col].getClickFlag()) {

			if (e.getModifiers() == InputEvent.BUTTON1_MASK) { 
				//System.out.println("LeftButton");
				if (mineButton[row][col].getFlag() == 1 ) { 
					return;
				}
				else {
					checkMine(row, col);
				}
			}
			else if (e.getModifiers() == InputEvent.BUTTON3_MASK){
				//System.out.println("RightButton");
				flagMine(row, col);
			} else {
				//System.out.println("MiddleButton");
			}
		}
	}
	public void mousePressed(MouseEvent e) {
		//System.out.println("Jerry Press");

	}
	public void mouseReleased(MouseEvent e) {
		//System.out.println("Jerry Release");
	}
	public void mouseExited(MouseEvent e) {
		//System.out.println("Jerry Exited");

	}
	public void actionPerformed(ActionEvent e) {
		if(e.getSource() == miEasy) {
			setNewGame(12);
			return;
		}
		if(e.getSource() == miMiddle) {
			setNewGame(24);
			return;
		}
		if(e.getSource() == miHard) {
			setNewGame(36 );
			return;
		}
		if(e.getSource() == miExit) {
			System.exit(0);
		}
		if(e.getSource() == miAbout) {
			about.setVisible(true);
		}
	}
}

class RestartRunner implements Runnable {
	private WinFrame win;
	private JMine mine;
	private boolean isMineSet;
	
	private TimeCounterThread timer;
	
	public void setMine(JMine mine) {
		this.mine = mine;
	}

	public void setTimer(TimeCounterThread timer) {
		this.timer = timer;
	}
	
	public void run() {
		isMineSet = false;
		win = new WinFrame("You win!");
		while (!this.win.getWinOk()||isMineSet) {
			//System.out.println("Not start!");
		}
		mine.numMine = win.getMineNum();
		mine.setNewGame(mine.numMine);
		timer.stop();
		win.setVisible(false);		
	}

}

class TimeCounterThread extends Thread {
	private JCounter timeCounter;

	TimeCounterThread (JCounter time) {
		timeCounter = time;
	}

	public void run() {
		while (true) {
			try {
				sleep(990);
				timeCounter.resetCounter(timeCounter.getCounterNum() +1);
				//System.out.println("zzz");
			}
			catch(InterruptedException e) {}
		}	
	}
}





?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产网红主播福利一区二区| 欧美精品一区二区三区蜜臀 | 日本丶国产丶欧美色综合| 久久国产麻豆精品| 日韩经典一区二区| 日韩精品一级二级 | 丝瓜av网站精品一区二区| 亚洲精品美国一| 一个色在线综合| 亚洲综合一区二区三区| 午夜在线成人av| 日韩av一区二| 国产激情精品久久久第一区二区 | 福利视频网站一区二区三区| 国产91精品久久久久久久网曝门| 国产精品一区二区x88av| 成人免费黄色大片| 91激情五月电影| 欧美精品vⅰdeose4hd| 精品久久久久一区| 国产精品国产三级国产a| 一区二区在线观看视频在线观看| 日韩在线一区二区| 国产一区二区按摩在线观看| 成人午夜私人影院| 欧美日韩一区三区| 久久久91精品国产一区二区精品| 中文字幕在线不卡| 日本在线观看不卡视频| 国产盗摄视频一区二区三区| 欧美在线观看视频在线| 精品国产伦一区二区三区观看方式| 国产精品天干天干在线综合| 午夜视频一区在线观看| 国产成人精品1024| 欧美丰满少妇xxxxx高潮对白| 国产日本欧洲亚洲| 亚洲成a天堂v人片| 国产999精品久久久久久绿帽| 欧美美女激情18p| 中文在线资源观看网站视频免费不卡| 丝袜美腿亚洲色图| 99久久99久久免费精品蜜臀| 日韩午夜在线播放| 亚洲一二三区不卡| a亚洲天堂av| 久久这里只有精品6| 视频在线在亚洲| 91视频精品在这里| 国产午夜亚洲精品午夜鲁丝片| 五月婷婷久久综合| 色综合久久综合中文综合网| 久久久久久久久久久久久久久99| 亚洲123区在线观看| 色综合天天天天做夜夜夜夜做| 精品久久久久久久久久久久久久久| 亚洲免费在线看| 国产成人在线视频网站| 欧美一级搡bbbb搡bbbb| 亚洲午夜电影在线观看| 91在线免费看| 国产精品久久久久久久久免费相片| 狠狠网亚洲精品| 91精品国产综合久久久久久久久久| 亚洲精品欧美激情| 91亚洲国产成人精品一区二区三| 国产日韩欧美一区二区三区综合 | 久久久午夜精品| 蜜臀久久99精品久久久久宅男| 在线观看日韩av先锋影音电影院| 亚洲欧美日韩成人高清在线一区| 懂色av噜噜一区二区三区av| 精品伦理精品一区| 黑人精品欧美一区二区蜜桃| 欧美电影免费观看完整版| 日日嗨av一区二区三区四区| 欧美另类久久久品| 日韩国产欧美一区二区三区| 欧美一区二区三区视频在线观看 | 成人午夜看片网址| 国产三级精品视频| 99久久久久久| 亚洲国产日韩在线一区模特| 欧美日韩国产a| 日本大胆欧美人术艺术动态| 日韩视频国产视频| 国产乱子伦一区二区三区国色天香| 久久婷婷一区二区三区| 国产不卡视频在线播放| 国产精品全国免费观看高清 | 日本欧美在线看| 日韩精品中文字幕一区二区三区| 精品一区二区三区久久久| 欧美韩国日本综合| 欧美影院一区二区| 久久不见久久见免费视频7| 日本一区二区三区四区在线视频 | 国产精品污网站| 在线一区二区三区做爰视频网站| 性欧美疯狂xxxxbbbb| 欧美精品一区二| 色婷婷亚洲综合| 麻豆传媒一区二区三区| 国产精品不卡一区二区三区| 欧美巨大另类极品videosbest | 6080国产精品一区二区| 国产在线视频一区二区三区| 亚洲蜜臀av乱码久久精品| 欧美福利一区二区| 国产成人激情av| 亚洲国产精品天堂| 国产午夜亚洲精品不卡| 欧美视频一二三区| 国产高清久久久久| 五月开心婷婷久久| 国产精品久久久久久久久免费相片 | 日韩国产在线观看| 国产精品剧情在线亚洲| 欧美一级xxx| 日本道在线观看一区二区| 国产一区二区在线观看视频| 亚洲一区二区三区不卡国产欧美| 精品对白一区国产伦| 欧美午夜精品一区二区蜜桃| 国产精品一二三区在线| 天天影视色香欲综合网老头| 亚洲人成网站色在线观看| 久久蜜桃av一区二区天堂| 91精品国产免费| 在线欧美日韩国产| 成人精品鲁一区一区二区| 卡一卡二国产精品| 亚洲国产精品综合小说图片区| 国产精品电影一区二区三区| 久久欧美一区二区| 精品欧美一区二区久久| 日韩一区二区视频在线观看| 欧美日韩免费一区二区三区| av网站一区二区三区| 不卡的av网站| 国产成人精品三级| 国产黄人亚洲片| 国产精品自在在线| 国产一区二区91| 狠狠久久亚洲欧美| 精品夜夜嗨av一区二区三区| 蜜桃av一区二区在线观看| 日韩精品久久理论片| 日本欧美久久久久免费播放网| 亚洲国产中文字幕在线视频综合| 亚洲人成网站在线| 一区二区欧美国产| 亚洲国产日韩a在线播放性色| 亚洲欧美色一区| 一区二区免费视频| 亚洲成a人v欧美综合天堂下载| 亚洲国产精品久久久男人的天堂 | 久久99国产精品久久99果冻传媒| 日韩主播视频在线| 久久国产精品一区二区| 极品销魂美女一区二区三区| 国产麻豆精品在线| 波多野结衣精品在线| 91同城在线观看| 欧美精品成人一区二区三区四区| 欧美日本一区二区在线观看| 日韩欧美区一区二| 中文字幕av一区二区三区免费看| 国产精品第13页| 亚洲一区二区高清| 九九国产精品视频| 成人免费电影视频| 欧美日韩亚洲综合在线| 日韩欧美亚洲一区二区| 中文字幕第一区综合| 亚洲自拍偷拍网站| 蜜臀va亚洲va欧美va天堂| 风间由美性色一区二区三区| 91久久久免费一区二区| 91精品国产91久久综合桃花| 日韩免费一区二区三区在线播放| 亚洲国产激情av| 婷婷中文字幕综合| 成人免费三级在线| 欧美另类一区二区三区| 国产欧美日韩激情| 天天做天天摸天天爽国产一区| 国产精品一卡二| 欧美军同video69gay| 久久精品夜色噜噜亚洲a∨| 伊人开心综合网| 国产成人av网站| 91精品国产综合久久蜜臀| 欧美激情综合网| 老司机精品视频一区二区三区| 成人av片在线观看| 精品成人a区在线观看| 亚洲午夜成aⅴ人片| 成人自拍视频在线观看| 欧美成人女星排名|