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

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

?? gamelistener.java

?? 一個用java-swing編寫的連連看游戲例子
?? JAVA
字號:
/*
 * 創建日期 2004-11-22
 *
 * TODO 要更改此生成的文件的模板,請轉至
 * 窗口 - 首選項 - Java - 代碼樣式 - 代碼模板
 */
package game;

import java.awt.event.*;
//import javax.swing.*;
import java.awt.*;
/**
 * @author Jerry703
 *
 * TODO 要更改此生成的類型注釋的模板,請轉至
 * 窗口 - 首選項 - Java - 代碼樣式 - 代碼模板
 */
public class GameListener implements ActionListener{
	public GroupButton mypanel;//保存自己的監聽對象的句柄
	//public MenuPanel menupanel;
	public boolean first = true;//是否為第一次按鈕
	SingleButton choise;//當前選擇按鈕的句柄
	SingleButton before;//上次選擇的按鈕的句柄
	int x;//上次選擇按鈕所在的坐標x值
	int y;//通上的y值
	public boolean hasway;//是否存在通路
	SingleButton smallx;//判斷前后2個按鈕的相對位置
	SingleButton bigx;//判斷前后2個按鈕的相對位置
	SingleButton smally;//判斷前后2個按鈕的相對位置
	SingleButton bigy;//判斷前后2個按鈕的相對位置
	
	public GameListener(GroupButton temp){
		this.mypanel = temp;
	}
	/* (非 Javadoc)
	 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
	 * 監聽器
	 */
	public void actionPerformed(ActionEvent e) {
		/*
		 * 如果監聽對象為SingleButton的事例時
		 * 如果是在該面版按下的第一個按鈕時調用getFirst
		 * 否則用doCheck方法檢查本次按鈕與上次按鈕是否類型相同
		 * 如果相同,則再進入路線查找函數findWay
		 * 如果路線查找成功,將這2個按鈕刪除
		 */
		if (e.getSource() instanceof SingleButton){
			if (first){
				getFirst(e);
			}
			else{
				if (doCheck(e)){
					if (findWay(e)){
						deleteSame(e);
					}
					else{
						before.setBackground(Color.GRAY);
						getFirst(e);
					}
				}
				else{
					clearIt();
					getFirst(e);
				}
			}
		}
		return;
	}
	
	public void getFirst(ActionEvent e){
		/*
		 * 函數功能:
		 * 保存本次點擊按鈕的坐標,并且設置背景顏色
		 */
		first = false;
		choise = (SingleButton)e.getSource();
		x = choise.x;
		y = choise.y;
		choise.setBackground(Color.GREEN);
		System.out.println("選擇了字母‘"+choise.type+"’,長度為"+choise.type);
	}
	public boolean doCheck(ActionEvent e){
		/*
		 * 檢查本次點擊與上次點擊是否:同一按鈕、同類按鈕、不同按鈕
		 * 返回boolean值
		 */
		before = choise;
		choise = (SingleButton)e.getSource();
		System.out.println("選擇了字母‘"+choise.type+"’,長度為"+choise.type);
		if (choise.x == x && choise.y == y){
			clearIt();
			System.out.println("選擇了同一個按鈕");
			return false;
		}
		if (before.type == choise.type){
			choise.setBackground(Color.green);
			System.out.println("選擇了字符相同的按鈕");
			return true;
		}
		else{
			before.setBackground(Color.GRAY);
			x = choise.x;
			y = choise.y;
			choise.setBackground(Color.GREEN);
			System.out.println("選擇不同的按鈕");
			return false;
		}	
	}
	public boolean findWay(ActionEvent e){
		/*
		 * 根據前后兩個按鈕的坐標,判斷2個按鈕位置的相對關系
		 * 并且得出x軸與y軸的絕對值,對x軸和y軸進行依次查找
		 * 找出主軸后調用副函數hasXfindY,hasYfindX,查找支線路線
		 * 成功得到路線返回真
		 * 否則返回假
		 */
		try{
			System.out.println("進入路線查詢");
			if (before.x<choise.x){
				smallx = before;
				bigx = choise;
			}
			else{
				smallx = choise;
				bigx = before;
			}
			if (before.y<choise.y){
				smally = before;
				bigy = choise;
			}
			else{
				smally = choise;
				bigy = before;
			}
			before.empty = true;
			choise.empty = true;
			int xstart;
			int xend;
			if (this.x < choise.x){
				xstart = this.x;
				xend = choise.x;
			}
			else{
				xstart = choise.x;
				xend = this.x;
			}
			int ystart;
			int yend;
			if (this.y < choise.y){
				ystart = this.y;
				yend = choise.y;
			}
			else{
				ystart = choise.y;
				yend = this.y;
			}
			//int xstart = x<choise.x?x:choise.x;
			//int xend = choise.x>x?choise.x:x;
			//int ystart = y<choise.y?y:choise.y;
			//int yend = choise.y>y?choise.y:y;
			if (!(Math.abs(choise.x - x) == 0)){
				System.out.println("X為主軸查找");
				int j;
				for (j=0;j<mypanel.MaxY;++j){
					hasway = true;
					for (int m=xstart;m<=xend;++m){
						if ( ! (mypanel.groupbutton[j][m] == null || mypanel.groupbutton[j][m].empty)){
							hasway = false;
							System.out.print(mypanel.groupbutton[j][m].empty + "  ");
							break;	
						}
						System.out.print(j+"時 "+m+"為空?:"+mypanel.groupbutton[j][m].empty + "  ");
					}
					if (hasway && hasXfindY(j,smallx.y,xstart) && hasXfindY(j,bigx.y,xend)){
						return true;
					}
					else
						hasway = false;
				}
			}
			if (!(Math.abs(choise.y - y) == 0)){
				System.out.println("以Y主軸查找");
				int i;
				for (i=0;i<mypanel.MaxX;++i){
					hasway = true;
					for (int n=ystart;n<=yend;++n){
						if (!(mypanel.groupbutton[n][i] == null || mypanel.groupbutton[n][i].empty)){
							hasway = false;
							break;
						}
					}
					if (hasway && hasYfindX(i,smally.x,ystart) && hasYfindX(i,bigy.x,yend)){
						return true;
					}
					else
						hasway = false;
				}
			}
			return false;
		}catch(Exception error){
			error.printStackTrace();
			return false;
		}
		finally{
			before.empty = false;
			choise.empty = false;
		}
	}
	public boolean hasXfindY(int start,int end,int x){
		/*
		 * 找到x軸主線后,查找Y軸的2條支線
		 * 2條支線均成功返回真
		 * 否則返回假
		 */
		if (start == end){
			System.out.println("找到一條連線");
			return true;
		}
		if (start>end){
			int temp;
			temp = start;
			start = end;
			end = temp;
		}
		for (int i=start;i<=end;++i){
			if ( ! (mypanel.groupbutton[i][x] == null || mypanel.groupbutton[i][x].empty)){
				hasway = false;
				System.out.println("連線失敗");
				return false;
			}
		}
		System.out.println("找到一條連線");
		return true;
	}
	public boolean hasYfindX(int start,int end,int y){
		/*
		 * 找到y軸主線后,查找x軸的2條支線
		 * 2條支線均成功返回真
		 * 否則返回假
		 */
		if (start == end){
			System.out.println("可直接連線");
			return true;
		}
		if (start>end){
			int temp;
			temp = start;
			start = end;
			end = temp;
		}
		for (int i=start;i<=end;++i){
			if (! (mypanel.groupbutton[y][i] == null || mypanel.groupbutton[y][i].empty)){
				hasway = false;
				System.out.println("連線失敗");
				return false;
			}
		}
		System.out.println("找到一條連線");
		return true;
	}
	public void deleteSame(ActionEvent e){
		/*
		 * 將2個按鈕的empty屬性設為true
		 * 刪除這2個按鈕
		 * 調用狀態清空函數,清除所有屬性
		 */
		before.empty = true;
		choise.empty = true;
		mypanel.groupbutton[before.y][before.x].hide();
		//mypanel.remove(mypanel.groupbutton[before.y][before.x]);
		mypanel.repaint();
		mypanel.groupbutton[choise.y][choise.x].hide();
		//mypanel.remove(mypanel.groupbutton[choise.y][choise.x]);
		mypanel.repaint();
		mypanel.count -= 2;
		this.clearIt();
	}
	public void clearIt(){
		/*
		 * 清空狀態
		 */
		if (choise != null){
			choise.setBackground(Color.GRAY);
			choise = null;
		}
		if (before != null){
			before.setBackground(Color.GRAY);
			before = null;
		}
		this.x = -1;
		this.y = -1;
		this.before = null;
		this.choise = null;
		this.first = true;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人av电影免费在线观看| 日韩毛片精品高清免费| 亚洲福利电影网| 欧美日韩高清一区二区不卡| 午夜视频在线观看一区二区三区| 欧美一级片在线看| 国产成a人亚洲精品| 国产精品99久久久| 亚洲一区日韩精品中文字幕| 精品国产亚洲在线| 91久久线看在观草草青青| 久久99精品久久久久久久久久久久 | 国产一区二区三区免费看| 亚洲欧洲精品一区二区三区 | 成人黄色小视频在线观看| 亚洲国产精品一区二区www在线| 夜色激情一区二区| 中文字幕av一区 二区| 91精品国产综合久久精品| 欧美va日韩va| 欧美疯狂做受xxxx富婆| 一本色道久久综合亚洲精品按摩| 黄色小说综合网站| 日本不卡视频在线| 一级做a爱片久久| 全国精品久久少妇| 成人精品免费看| 狠狠网亚洲精品| 不卡大黄网站免费看| 欧美日韩午夜在线| 国产91对白在线观看九色| 色美美综合视频| 日韩精品一区二区三区三区免费| 欧美日韩国产天堂| 国产精品传媒入口麻豆| 国产午夜精品美女毛片视频| 欧美一级片在线看| 最新不卡av在线| 精品一区二区三区的国产在线播放| 北岛玲一区二区三区四区| 国产综合久久久久久鬼色| 色综合色狠狠综合色| 久久影院午夜论| 久久久国产一区二区三区四区小说| 91精品欧美综合在线观看最新| 欧亚一区二区三区| 欧美日韩一区二区三区不卡 | 成人av网站在线观看| 欧美卡1卡2卡| 亚洲视频中文字幕| 国产美女在线观看一区| 884aa四虎影成人精品一区| 成人免费在线观看入口| 国产综合久久久久久久久久久久| 欧美日韩国产天堂| 一区二区视频在线| 丝袜美腿一区二区三区| 日本91福利区| 欧美久久一二区| 一区二区三区日韩欧美精品| 国产成人免费视频精品含羞草妖精 | 亚洲欧美精品午睡沙发| 亚洲午夜免费视频| 一本到不卡免费一区二区| 欧美高清在线精品一区| 国产一区二区三区| 久久理论电影网| 精品一区二区精品| 精品国产乱码久久久久久久久| 日本一区中文字幕| 成人激情视频网站| 亚洲国产激情av| 成人黄色大片在线观看| 国产午夜精品久久久久久久| 黑人精品欧美一区二区蜜桃| 欧美videossexotv100| 狠狠色丁香久久婷婷综合_中 | 国产成人av电影免费在线观看| 欧美精品一区二区不卡| 精品在线播放免费| 久久久久久久久久看片| 成人永久看片免费视频天堂| 国产精品三级电影| 美女免费视频一区二区| 色婷婷久久久久swag精品| 亚洲卡通欧美制服中文| 在线观看区一区二| 天天色图综合网| 欧美xxxxx牲另类人与| 国产suv精品一区二区三区| 中文字幕精品在线不卡| 色天天综合色天天久久| 日韩专区在线视频| 亚洲色图色小说| 欧美日韩精品是欧美日韩精品| 日本va欧美va欧美va精品| 日韩午夜在线观看视频| 亚洲妇女屁股眼交7| 日韩美女视频在线| 成人免费视频视频在线观看免费| 亚洲欧美日韩国产另类专区| 欧美人狂配大交3d怪物一区| 久久福利资源站| 制服丝袜亚洲精品中文字幕| 国产乱子伦视频一区二区三区| 国产精品国产a级| 欧美剧情片在线观看| 国产一区二区看久久| 亚洲一区二区在线免费看| 精品免费国产一区二区三区四区| 99精品国产91久久久久久| 欧美国产欧美综合| 7777精品伊人久久久大香线蕉超级流畅| 麻豆一区二区三区| 一区二区三区 在线观看视频| 欧美电视剧在线看免费| 91黄色免费看| 国产91在线观看丝袜| 亚洲成人自拍一区| 欧美日韩国产一级| aaa欧美大片| 精品一区二区三区影院在线午夜| 亚洲欧美激情小说另类| 久久久不卡网国产精品一区| 欧美三级电影在线观看| 99这里都是精品| 国产电影一区在线| 日本vs亚洲vs韩国一区三区 | 另类小说视频一区二区| 亚洲精品国产品国语在线app| 亚洲精品一区在线观看| 久久久久九九视频| 这里只有精品视频在线观看| aaa亚洲精品| 成a人片国产精品| 国产成人精品免费在线| 久久99国产精品久久| 日产国产欧美视频一区精品| 亚洲小说欧美激情另类| 亚洲激情av在线| 日韩美女精品在线| 国产精品美女久久久久aⅴ| 久久综合久久久久88| 精品久久久久久久久久久久久久久 | 伊人色综合久久天天| 亚洲特级片在线| 亚洲欧洲一区二区三区| 国产精品视频一二三| 久久精品一区二区| 久久久久久久久伊人| 久久久噜噜噜久久人人看 | www.欧美色图| av在线不卡网| 91丝袜呻吟高潮美腿白嫩在线观看| 日韩理论片中文av| ●精品国产综合乱码久久久久| 亚洲国产成人在线| 中文字幕在线观看不卡视频| 亚洲三级免费电影| 亚洲午夜视频在线| 无吗不卡中文字幕| 男女性色大片免费观看一区二区| 免费视频最近日韩| 国内欧美视频一区二区| 东方欧美亚洲色图在线| 色综合久久中文综合久久97| 欧洲一区在线电影| 欧美一区二区三区免费| 久久这里只有精品首页| 国产精品久久看| 亚洲一区在线免费观看| 日本一道高清亚洲日美韩| 国产精品一级片在线观看| 成人免费毛片app| 欧美三级资源在线| 日韩美女一区二区三区四区| 中文字幕精品三区| 一区二区三区四区不卡视频| 日韩国产一二三区| 成人在线综合网| 欧美专区在线观看一区| 精品国产伦一区二区三区观看方式| 国产蜜臀av在线一区二区三区| 欧美一区二区三区视频在线| 国产欧美视频在线观看| 一区二区在线观看不卡| 精品一二三四区| 日本韩国视频一区二区| 欧美精品一区男女天堂| 亚洲免费av高清| 韩国中文字幕2020精品| 欧美性受xxxx黑人xyx性爽| 91麻豆国产自产在线观看| 91精品国产91久久综合桃花| 中文字幕不卡的av| 精品一二三四区| 欧美日韩精品一区二区三区| 国产精品免费视频一区| 捆绑调教美女网站视频一区| 91免费国产在线观看|