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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mapui.java

?? 用Java編寫的連連看程序和源代碼
?? JAVA
字號(hào):
package kyodai.map;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import kyodai.*;

/**
 * 生成圖形用戶界面
 */

public class MapUI extends JPanel
	implements ActionListener, Runnable {

	private Map map;
	private JButton[] dots;

	private Point lastPoint = new Point(0, 0); //上一個(gè)點(diǎn)的坐標(biāo)
	private boolean isSelected = false; //是否已經(jīng)選擇了一個(gè)點(diǎn)

	private int score = 0; //記錄用戶的得分
	private ClockAnimate clockAnimate; //同步顯示時(shí)鐘
	//AnimateDelete animate; //動(dòng)畫
	JButton goTop10;

	private ScoreAnimate scoreAnimate;
	int stepScore = 0; //計(jì)算距離的分
	int limitTime = 0; //限定尋找的時(shí)間(秒)

	private boolean isPlaying = false; //當(dāng)前是否正在游戲中

	/**
	 * 構(gòu)造函數(shù)
	 */
	public MapUI(Map map, JButton[] dots) {
		this.map = map;
		this.dots = dots;

		GridLayout gridLayout = new GridLayout();
		this.setLayout(gridLayout);
		gridLayout.setRows(Setting.ROW);
		gridLayout.setColumns(Setting.COLUMN);
		gridLayout.setHgap(2);
		gridLayout.setVgap(2);
		this.setLayout(gridLayout);
		this.setBackground(Kyodai.DarkColor);

		for (int row = 0; row < Setting.ROW; row++) {
			for (int col = 0; col < Setting.COLUMN; col++) {
				int index = row * Setting.COLUMN + col;
				dots[index].addActionListener(this);
				this.add(dots[index]);
			}
		}
	}
	
	/**
	 * 設(shè)置地圖
	 */
	public void setMap(Map map) {
		this.map = map;
	}

	/**
	 * 獲取主界面上的goTop10按鈕,以便操作
	*/
	public void setTop10Button(JButton goTop10) {
		this.goTop10 = goTop10;
	}

	/**
	 * 根據(jù)數(shù)組來(lái)繪置畫面
	*/
	private void paint() {
		for (int row = 0; row < Setting.ROW; row++) {
			for (int col = 0; col < Setting.COLUMN; col++) {
				int index = row * Setting.COLUMN + col;
				if (map.getMap()[row][col] > 0) {
					dots[index].setIcon(Kyodai.BlocksIcon[map.getMap()[row][col] - 1]);
					dots[index].setEnabled(true);
				}
				else {
					dots[index].setIcon(null);
					dots[index].setEnabled(false);
				}
			}
		}
	}

	public void repaint(Graphics g) {
		paint();
	}

	/**
	 * 判斷當(dāng)前是否已經(jīng)沒有可消除的方塊
	*/
	private boolean validMap(Point a) {
		if (map.getCount() == 0) {
			return true;
		}

		Line line = new Line(0, new Point(), new Point());
		map.setTest(true); //只測(cè)試
		line = map.findNext(a);
		int offset = 0;
		if (line.direct == 1) { //找到了可消除的
			return true;
		}
		else {
			return false;
		}
	}

	/**
	 * 更新當(dāng)前顯示的分?jǐn)?shù)
	*/
	private void showScore(int l, int c) {
		if (scoreAnimate == null) {
			return;
		}
		scoreAnimate.setScore(l, c);
	}

	/**
	 * 刷新當(dāng)前的排列方式
	*/
	public void refresh() {
		if (!isPlaying) { //不在游戲中,返回
			return;
		}
		if (map.getCount() == 0) {
			Kyodai.showHint("還刷,都沒了!");
		}
		if (Setting.Sound == 1) {
			new Sound(Sound.REFRESH);
		}

		if (validMap(new Point( -1, -1))) {
			score -= Setting.freshScore;
			showScore(score - 1, score);
		}
		else {
			showScore(score, score + Setting.freshScore);
			score += Setting.freshScore;
		}

		score -= Setting.freshScore;
		showScore(score - 1, score);

		map.refresh();
		paint();
	}

	/**
	 * 消除兩個(gè)點(diǎn)
	*/
	void earse(Point a, Point b) {
		//paint();

		int offset;
		offset = a.x * Setting.COLUMN + a.y;
		dots[offset].setIcon(null);
		dots[offset].setEnabled(false);

		offset = b.x * Setting.COLUMN + b.y;
		dots[offset].setIcon(null);
		dots[offset].setEnabled(false);

		//如果地圖清除完成,關(guān)閉
		if (map.getCount() == 0) {
			int remainTime = limitTime - clockAnimate.getUsedTime();
			message("剩余時(shí)間 = " + remainTime);
			if (remainTime > 0) {
				showScore(score, score + remainTime * Setting.timeScore);
				score += remainTime * Setting.timeScore;
			}
			isPlaying = false;
			stop();
			Kyodai.showHint("時(shí)間+ " + remainTime * Setting.timeScore + ",想看看你的排名嗎?");
			goTop10.setEnabled(true);
		}
		else {
			//test1(map.getDeleteArray());
		}
	}

	/**
	 * 自動(dòng)尋找最佳答案
	*/
	public void findNext(Point a) {
		if (!isPlaying) { //不在游戲中,返回
			return;
		}
		if (map.getCount() == 0) {
			Kyodai.showHint("你找昏了頭吧,沒了!");
			return;
		}
		Line line = new Line(0, new Point(), new Point());
		map.setTest(true); //告訴map當(dāng)前只是測(cè)試,并不需要進(jìn)行刪除動(dòng)畫
		line = map.findNext(a);
		int offset = 0;
		if (line.direct == 1) { //找到了可消除的
			if (Setting.Sound == 1) {
				new Sound(Sound.HINT);
			}
			offset = line.a.x * Setting.COLUMN + line.a.y;
			dots[offset].setBorder(Kyodai.Hint);
			offset = line.b.x * Setting.COLUMN + line.b.y;
			dots[offset].setBorder(Kyodai.Hint);
			score -= Setting.hintScore;
			showScore(score - 1, score);
		}
		else {
			Kyodai.showHint("找不到,請(qǐng)刷新");
		}
	}

	/**
	 * 自動(dòng)找出并消除地圖上的兩個(gè)點(diǎn)
	*/
	public boolean bomb(Point a, boolean showMessage) {
		if (!isPlaying) { //不在游戲中,返回
			return false;
		}
		if (map.getCount() == 0) {
			Kyodai.showHint("你炸昏了頭吧,沒了!");
			return false;
		}
		Line line = new Line(0, new Point(), new Point());
		map.setTest(false);
		line = map.findNext(a);
		int offset = 0;
		if (line.direct == 1) { //找到了可消除的
			if (Setting.Sound == 1) {
				new Sound(Sound.BOMB);
			}
			offset = line.a.x * Setting.COLUMN + line.a.y;
			dots[offset].setBorder(Kyodai.unSelected);
			offset = line.b.x * Setting.COLUMN + line.b.y;
			dots[offset].setBorder(Kyodai.unSelected);
			map.earse(line.a, line.b);
			earse(line.a, line.b);

			score -= Setting.bombScore;
			showScore(score - 1, score);
			return true;
		}
		else {
			if (showMessage) {
				Kyodai.showHint("炸彈用不了,請(qǐng)刷新!");
			}
			return false;
		}
	}

	private void message(String str) {
		Kyodai.showHint(str);
	}

	/**
	 * 自動(dòng)游戲
	*/
	public void autoPlay() {
		if (!isPlaying) { //不在游戲中,返回
			return;
		}
		//如果使用該功能,不計(jì)時(shí)間分
		limitTime = 0;

		while (map.getCount() > 0) {
			if (bomb(new Point( -1, -1), false)) {
				message("炸彈使用成功!");
			}
			else {
				message("找不到可用點(diǎn),刷新……");
				refresh();
			}
		}
	}

	/**
	 * 獲取系統(tǒng)的計(jì)分板
	*/
	public void setScore(ScoreAnimate score) {
		this.scoreAnimate = score;
	}

	/**
	 * 獲取系統(tǒng)的計(jì)時(shí)板
	 */
	public void setClock(ClockAnimate clock) {
		this.clockAnimate = clock;
	}

	/**
	 * 事件處理
	 */
	public void actionPerformed(ActionEvent e) {
		JButton button = (JButton) e.getSource();
		int offset = Integer.parseInt(button.getActionCommand());
		int row, col;
		row = Math.round(offset / Setting.COLUMN);
		col = offset - row * Setting.COLUMN;
		//如果上面沒有圖片
		if (map.getMap()[row][col] < 1) {
			return;
		}
		//選擇時(shí)的聲音
		if (Setting.Sound == 1) {
			new Sound(Sound.SELECT);
		}

		if (isSelected) {
			message("上次已經(jīng)選擇了一個(gè)點(diǎn)");
			message("上次選擇點(diǎn)的坐標(biāo)為: " + lastPoint.x + ", " + lastPoint.y +
					" 值為: " + map.getMap()[lastPoint.x][lastPoint.y] +
					" 位移為: " + (lastPoint.x * Setting.COLUMN + lastPoint.y));

			//是上次選擇的點(diǎn)
			if (lastPoint.x == row && lastPoint.y == col) { 
				message("這次選擇的點(diǎn)和上次的是同一點(diǎn),取消選擇狀態(tài)");
				button.setBorder(Kyodai.unSelected);
				isSelected = false;
			}
			else {
				//判斷是否可以消除
				message("這次選擇的點(diǎn)和上次的點(diǎn)并不相同");
				Point current = new Point(row, col);
				message("這次選擇的點(diǎn)的坐標(biāo)為: " + row + ", " + col + " 值為: " +
						map.getMap()[row][col] +
						" 位移為: " + (row * Setting.COLUMN + col));
				map.setTest(false);
				if (map.test(lastPoint, current)) {
					message("兩點(diǎn)可以消除,執(zhí)行消除");
					//消除前先取消當(dāng)前選擇點(diǎn)的邊框,因?yàn)橛锌赡苁翘崾?					dots[row * Setting.COLUMN + col].setBorder(Kyodai.unSelected);

					map.earse(current, lastPoint);
					earse(current, lastPoint);
					dots[lastPoint.x * Setting.COLUMN +
						lastPoint.y].setBorder(Kyodai.unSelected);
					lastPoint = new Point(0, 0);
					isSelected = false;

					showScore(score, score + Setting.correctScore + stepScore);
					score += Setting.correctScore + stepScore;

					if (Setting.Sound == 1) {
						new Sound(Sound.EARSE);
					}
				}
				else {
					message("這次選擇的點(diǎn)與上次選擇的點(diǎn)無(wú)解,改變選擇為當(dāng)前點(diǎn)");
					dots[lastPoint.x * Setting.COLUMN +
						lastPoint.y].setBorder(Kyodai.unSelected);
					button.setBorder(Kyodai.Selected);
					lastPoint.x = row;
					lastPoint.y = col;
					isSelected = true;

					score -= Setting.wrongScore;
					showScore(score - 1, score);
				}
			}
		}
		else {
			message("上次并未選擇的點(diǎn),置當(dāng)前點(diǎn)為選擇點(diǎn)");
			message("當(dāng)前點(diǎn)坐標(biāo)為: " + row + ", " + col + " 值為: "
					+map.getMap()[row][col]
					+" 位移為: " + (row * Setting.COLUMN + col));
			button.setBorder(Kyodai.Selected);
			lastPoint.x = row;
			lastPoint.y = col;
			isSelected = true;
		}
	}

	/**
	 * 加密當(dāng)前的分?jǐn)?shù)
	*/
	public String encode() {
		if (score < 0) {
			Kyodai.showHint("負(fù)分還想有排名?下次努力吧!");
		}

		int level, f1, f2;
		level = Setting.LevelIndex;
		f1 = (score - 102) * (score - 102);
		f2 = (1978 - score) * (1978 - score);
		return "s=" + score + "&l=" + level + "&f1=" + f1 + "&f2=" + f2;
	}

	public void start() {
		goTop10.setEnabled(false);

		isPlaying = true;
		limitTime = map.getCount() * Setting.limitScore;
		message("時(shí)限 = " + limitTime);
		paint();
	}

	public void run() {

	}

	public void stop() {
		clockAnimate.stop();
	}

}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲二区在线观看| 亚洲天堂av一区| 国产最新精品免费| 欧美精品一区二区高清在线观看| 日韩一区欧美二区| 欧美电影免费提供在线观看| 国产美女精品在线| 国产精品久久久久影院老司| 91激情五月电影| 视频一区中文字幕| 精品国产免费人成在线观看| 国产成a人亚洲精品| 亚洲四区在线观看| 欧美一级一级性生活免费录像| 久久精品理论片| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 亚洲女爱视频在线| 精品1区2区3区| 精品亚洲国产成人av制服丝袜 | 制服.丝袜.亚洲.另类.中文 | 中文一区一区三区高中清不卡| 色哟哟国产精品| 美国欧美日韩国产在线播放| 国产精品欧美久久久久无广告 | 中文av一区二区| 欧美日韩一卡二卡| 国产成人午夜片在线观看高清观看| 国产精品久久久久久久蜜臀| 欧美日韩视频在线第一区| 国产精品一区二区久久不卡| 亚洲与欧洲av电影| 中文一区在线播放| 日韩午夜在线观看| 91香蕉国产在线观看软件| 美国一区二区三区在线播放| 中文字幕一区二区三区精华液 | 欧美丝袜自拍制服另类| 久久精品国产**网站演员| 亚洲久草在线视频| 久久久久久**毛片大全| 欧美揉bbbbb揉bbbbb| eeuss影院一区二区三区| 日本不卡视频在线观看| 亚洲色图视频免费播放| 久久嫩草精品久久久精品一| 欧美精品色一区二区三区| av在线不卡观看免费观看| 黑人精品欧美一区二区蜜桃 | 日韩一区二区三区高清免费看看 | 日韩精品三区四区| 亚洲视频免费在线观看| 久久久激情视频| 日韩一区二区不卡| 欧美午夜宅男影院| 99国产精品视频免费观看| 国内精品免费**视频| 日韩精品电影一区亚洲| 亚洲一区在线视频| 国产精品美女视频| 久久精品夜色噜噜亚洲aⅴ| 6080yy午夜一二三区久久| 色欧美片视频在线观看| 91在线国内视频| 粉嫩av一区二区三区粉嫩| 国产乱码一区二区三区| 国产一区二区三区在线观看免费 | 欧美精品久久一区二区三区| 在线观看免费亚洲| 91天堂素人约啪| 99视频精品在线| voyeur盗摄精品| 99精品欧美一区二区三区小说| 成人精品一区二区三区中文字幕 | 亚洲欧美日韩精品久久久久| 亚洲欧美怡红院| 中文字幕视频一区| 最近日韩中文字幕| 亚洲免费观看高清在线观看| 亚洲色图视频网站| 亚洲精品视频观看| 亚洲综合成人在线视频| 亚洲电影一级片| 日韩不卡手机在线v区| 日本网站在线观看一区二区三区| 日韩不卡在线观看日韩不卡视频| 日本va欧美va精品| 韩日av一区二区| 成人ar影院免费观看视频| 91亚洲国产成人精品一区二区三 | 亚洲欧洲在线观看av| 一区二区三区四区乱视频| 一级做a爱片久久| 午夜成人在线视频| 国内精品在线播放| 99久久久精品| 欧美日韩一区在线| 精品国产伦一区二区三区观看方式| 久久精品视频在线免费观看| 亚洲欧洲性图库| 亚洲成人在线网站| 国产乱人伦偷精品视频不卡| 成人性视频免费网站| 99久精品国产| 欧美一激情一区二区三区| 久久久久久久久久美女| 综合亚洲深深色噜噜狠狠网站| 亚洲午夜私人影院| 久久国内精品视频| 成人av在线电影| 91麻豆精品国产91久久久 | 日韩av一二三| 国产成人在线免费观看| 在线精品亚洲一区二区不卡| 日韩欧美第一区| 亚洲欧美在线视频观看| 日韩不卡手机在线v区| 成人av在线资源网| 91精品国产福利在线观看| 欧美激情一区三区| 视频一区中文字幕国产| 91国偷自产一区二区三区观看 | 日韩免费视频线观看| 国产精品久久久久久一区二区三区 | 欧美亚洲综合在线| 精品卡一卡二卡三卡四在线| 亚洲精品国产无套在线观| 国内精品视频666| 欧美日韩成人综合天天影院| 国产午夜一区二区三区| 亚洲123区在线观看| a亚洲天堂av| 欧美精品一区二区三区蜜臀| 亚洲美腿欧美偷拍| 国产成人综合在线观看| 欧美一区二区日韩| 亚洲国产你懂的| 不卡一区中文字幕| 久久久噜噜噜久噜久久综合| 五月开心婷婷久久| 色视频成人在线观看免| 国产精品全国免费观看高清 | 久久精品国内一区二区三区| 在线一区二区三区| 国产精品国产三级国产普通话三级 | 亚洲亚洲精品在线观看| 99re热视频这里只精品| 国产欧美一区二区三区鸳鸯浴| 日本伊人精品一区二区三区观看方式| 色综合网色综合| 中文字幕一区二区三区视频| 国产精品亚洲一区二区三区妖精| 日韩一区二区在线播放| 午夜影院在线观看欧美| 欧美亚洲一区二区三区四区| 自拍偷拍国产亚洲| www.爱久久.com| 国产精品天干天干在观线| 精久久久久久久久久久| 欧美一二三区精品| 日本欧美韩国一区三区| 欧美日本高清视频在线观看| 亚洲国产另类av| 欧美熟乱第一页| 五月婷婷激情综合| 欧美精品免费视频| 日本视频一区二区三区| 日韩欧美久久久| 狠狠色狠狠色综合系列| 久久久.com| 丰满放荡岳乱妇91ww| 国产精品沙发午睡系列990531| 高清日韩电视剧大全免费| 欧美激情艳妇裸体舞| 99这里只有精品| 一区二区三区在线视频免费| 欧美三片在线视频观看 | 久久久久久亚洲综合| 国产在线不卡一区| 久久精品欧美日韩| 99久久er热在这里只有精品66| 国产精品二三区| 欧美在线三级电影| 日韩精品成人一区二区三区| 欧美变态tickle挠乳网站| 国产一区美女在线| 国产精品美女久久久久久久网站| 91在线免费播放| 午夜伊人狠狠久久| 亚洲精品在线免费播放| eeuss影院一区二区三区| 亚洲一区二区三区小说| 欧美一区二区人人喊爽| 国产99久久久国产精品 | 日本最新不卡在线| 久久久久国产精品厨房| 在线视频一区二区三| 久久se这里有精品| 亚洲欧美自拍偷拍色图| 欧美老女人在线| 国产成人av福利|