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

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

?? global.java

?? 01_游戲功能演示與說明 02_游戲中的面向對象分析與設計   03_使用API類組裝貪吃蛇游戲   04_編寫貪吃蛇游戲中的各個類的主體框架性代碼   05_編寫Controler
?? JAVA
字號:
package cn.itcast.tetris.util;

import java.awt.Color;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import java.util.Random;
import java.util.Set;


/**
 * 
 * 
 * 工具類<BR>
 * <BR>
 * 此類中存放了其他類中用到的一些常量<BR>
 * 并且支持配置文件<BR>
 * 配置文件的路徑為游戲運行的目錄, 文件名為 tetris.ini<BR>
 * <BR>
 * 配置文件的寫法請參見字段的注釋<BR>
 * <BR>
 * 配置文件中設置項可以只寫需要配置的, 沒有寫的設置項默認為缺省值<BR>
 * 各配置項的缺省值請參見字段的注釋<BR>
 * <BR>
 * 每個配置項都有設置值范圍, 超出范圍(無效)的設置值將不起作用<BR>
 * 設置值的范圍請參見字段的注釋<BR>
 * 
 * @version 1.0, 08/01/08
 * 
 * @author 湯陽光
 * 
 */
public class Global {

	private static Properties properties = new Properties();

	/**
	 * 配置文件的路徑(默認為當前目錄下的 snake.ini文件)
	 */
	private static String CONFIG_FILE = "tetris.ini";

	/**
	 * 一個格子的寬度, 單位:像素 <BR>
	 * 對應的配置文件中的關鍵字為: cell_width, 或用 cell_size指定<BR>
	 * 范圍1 至 100<BR>
	 * 缺省值為 23
	 */
	public static final int CELL_WIDTH;

	/**
	 * 一個格子的高度, 單位:像素 <BR>
	 * 對應的配置文件中的關鍵字為: cell_width, 或用 cell_size指定<BR>
	 * 范圍1 至 100<BR>
	 * 缺省值為 23
	 */
	public static final int CELL_HEIGHT;
	/**
	 * 用格子表示的寬度, (寬度為多少個格子) 單位:格 <BR>
	 * 對應的配置文件中的關鍵字為: width<BR>
	 * 范圍10 至 80<BR>
	 * 缺省值為 15
	 */
	public static final int WIDTH;

	/**
	 * 用格子表示的高度, (高度為多少個格子), 單位:格<BR>
	 * 對應的配置文件中的關鍵字為: height<BR>
	 * 范圍10 至 60<BR>
	 * 缺省值為20
	 */
	public static final int HEIGHT;

	/**
	 * 圖形下落的初始速度 (單位: 毫秒/格)<BR>
	 * 對應的配置文件中的關鍵字為: speed<BR>
	 * 范圍10 至 無限大<BR>
	 * 缺省值為 200
	 */
	public static final int DEFAULT_SPEED;

	/**
	 * 保存當前游戲中圖形的下落速度
	 */
	public static int CURRENT_SPEED;

	/**
	 * 圖形快速下落的速度 (單位: 毫秒/格)<BR>
	 * 對應的配置文件中的關鍵字為: swift_speed<BR>
	 * 范圍0 至 無限大<BR>
	 * 缺省值為 15
	 */
	public static final int SWIFT_SPEED;

	/**
	 * 每次加速或減速的幅度 (單位: 毫秒/格)<BR>
	 * 對應的配置文件的關鍵字為: speed_step<BR>
	 * 范圍1 至 無限大<BR>
	 * 缺省值為 25
	 */
	public static final int SPEED_STEP;

	/**
	 * 消除滿行前暫停效果的時間(單位: 毫秒)<BR>
	 * 對應的配置文件的關鍵字為: stay_time<BR>
	 * 范圍0 至 無限大<BR>
	 * 缺省值為 200
	 */
	public static final int DEFAULT_STAY_TIME;

	/**
	 * 消除滿行前暫停效果的時間
	 */
	public static int STAY_TIME;

	private static Random random = new Random();

	public static final String TITLE_LABEL_TEXT;

	public static final String INFO_LABEL_TEXT;

	private static final Color[] DEFAULT_COLORS = new Color[] {
			new Color(0x990066), new Color(0x990099), new Color(0x330099),
			new Color(0x663300), new Color(0x009966), new Color(0x003333) };

	public static final List<Color> COMMON_COLORS;

	/**
	 * 返回一個隨機的顏色
	 * 
	 * @return
	 */
	public static Color getRandomColor() {
		return DEFAULT_COLORS[random.nextInt(DEFAULT_COLORS.length)];
	}

	/**
	 * 默認的構造器, 私有的, 不能生成這個類的實例
	 */
	private Global() {
	}

	/**
	 * 初始化常量
	 */
	static {
		InputStream inputStream = null;

		try {
			inputStream = new FileInputStream(CONFIG_FILE);
			properties.load(inputStream);
		} catch (FileNotFoundException e) {
			System.out.println("沒有配置文件");
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (inputStream != null)
					inputStream.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		Integer temp = null;
		WIDTH = (temp = getIntValue("width")) != null && temp <= 80
				&& temp >= 10 ? temp : 15;
		HEIGHT = (temp = getIntValue("height")) != null && temp <= 60
				&& temp >= 10 ? temp : 20;
		DEFAULT_SPEED = CURRENT_SPEED = (temp = getIntValue("speed")) != null
				&& temp >= 10 ? temp : 300;
		SWIFT_SPEED = (temp = getIntValue("swift_speed")) != null && temp >= 0 ? temp
				: 15;
		SPEED_STEP = (temp = getIntValue("speed_step")) != null && temp >= 1 ? temp
				: 25;
		DEFAULT_STAY_TIME = STAY_TIME = (temp = getIntValue("stay_time")) != null
				&& temp >= 0 ? temp : 200;
		int defaultCellSize = (temp = getIntValue("cell_size")) != null
				&& temp > 0 && temp <= 100 ? temp : 23;
		CELL_WIDTH = (temp = getIntValue("cell_width")) != null && temp > 0
				&& temp <= 100 ? temp : defaultCellSize;
		CELL_HEIGHT = (temp = getIntValue("cell_height")) != null && temp > 0
				&& temp <= 100 ? temp : defaultCellSize;

		String tempStr = null;
		TITLE_LABEL_TEXT = (tempStr = getValue("title")) == null ? "說明:"
				: tempStr;
		INFO_LABEL_TEXT = (tempStr = getValue("info")) == null ? "方向鍵控制方向, 回車鍵暫停/繼續\nPAGE UP, PAGE DOWN 加速或減速\n\n更多請看 www.itcast.cn "
				: tempStr;

		COMMON_COLORS = loadColors();
	}

	/**
	 * 要考慮多種情況<BR>
	 * 1. 沒有這個key和value<BR>
	 * 2 有key 沒有 value
	 */
	private static Integer getIntValue(String key) {
		if (key == null)
			throw new RuntimeException("key 不能為空");
		try {
			return new Integer(properties.getProperty(key));
		} catch (NumberFormatException e) {
			return null;
		}
	}

	private static String getValue(String key) {
		try {
			return new String(properties.getProperty(key).getBytes("iso8859-1"));
		} catch (Exception e) {
			return null;
		}
	}

	@SuppressWarnings("unchecked")
	private static List<Color> loadColors() {

		List<Color> l = new ArrayList<Color>(7);
		for (int i = 0; i < 7; i++)
			l.add(null);

		Set set = properties.keySet();
		Iterator iter = set.iterator();
		while (iter.hasNext()) {
			String key = (String) iter.next();
			if ("1".equals(key.trim()))
				addColor(l, 0, getValue(key));
			else if ("2".equals(key.trim()))
				addColor(l, 1, getValue(key));
			else if ("3".equals(key.trim()))
				addColor(l, 2, getValue(key));
			else if ("4".equals(key.trim()))
				addColor(l, 3, getValue(key));
			else if ("5".equals(key.trim()))
				addColor(l, 4, getValue(key));
			else if ("6".equals(key.trim()))
				addColor(l, 5, getValue(key));
			else if ("7".equals(key.trim()))
				addColor(l, 6, getValue(key));
		}

		for (int i = 0; i < 7; i++) {
			l.remove(null);
		}

		if (l.size() < 1) {
			for (int i = 0; i < DEFAULT_COLORS.length; i++) {
				l.add(DEFAULT_COLORS[i]);
			}
		} else {
			if (l.size() != 7)
				System.out.println("您一共設置了 " + l.size() + " 種有效顏色, 建議設置七種");

			return l.subList(0, l.size() > 7 ? 7 : l.size());
		}
		return l;
	}

	@SuppressWarnings("unchecked")
	private static void addColor(List l, int index, String str) {
		str = str.trim();
		if (!str.startsWith("0x") || str.length() < 3) {
			System.out.println("顏色設置有誤,請檢查 : " + str + " (key)");
			return;
		}

		try {
			String strRGB = str.substring(2, str.length() >= 8 ? 8 : str
					.length());
			int rgb = Integer.valueOf(strRGB, 16);
			Color c = new Color(rgb);
			if (c != null) {
				l.add(index, c);
			}
		} catch (Exception e) {
			System.out.println("(e)顏色設置有誤,請檢查:" + str + "(key)");
			e.printStackTrace();
			return;
		}
	}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区在线观看视频| 国产精品私人影院| 成人开心网精品视频| 亚洲大片在线观看| 国产精品理伦片| 精品国产免费久久| 欧美日韩亚洲综合一区| 99热这里都是精品| 国产成人免费在线观看| 日韩成人免费在线| 伊人婷婷欧美激情| 国产欧美一区二区精品秋霞影院| 欧美日韩国产中文| 91在线观看成人| 成人精品电影在线观看| 精品一区二区在线观看| 亚洲成av人片在www色猫咪| 亚洲色欲色欲www在线观看| 国产欧美精品在线观看| 精品国产凹凸成av人导航| 8x福利精品第一导航| 色94色欧美sute亚洲13| 99热国产精品| 99riav一区二区三区| 成人午夜又粗又硬又大| 国产乱一区二区| 精久久久久久久久久久| 欧美aaaaaa午夜精品| 日韩电影在线一区| 午夜av区久久| 亚洲成av人片在线观看| 午夜激情久久久| 亚洲va韩国va欧美va| 亚洲韩国一区二区三区| 亚洲一区二区在线观看视频| 亚洲综合区在线| 午夜av区久久| 免费在线观看精品| 六月婷婷色综合| 国产综合久久久久影院| 国产乱码字幕精品高清av| 国产精品中文欧美| 高清在线观看日韩| 波多野结衣在线一区| 9l国产精品久久久久麻豆| 91丝袜国产在线播放| 欧美三级电影在线观看| 欧美浪妇xxxx高跟鞋交| 日韩视频免费观看高清完整版在线观看 | 亚洲一区二区成人在线观看| 亚洲精品视频在线看| 亚洲一区自拍偷拍| 免费成人在线观看视频| 国产一区二区三区免费观看| 成人高清视频在线| 91成人免费电影| 91精品综合久久久久久| 精品成人佐山爱一区二区| 日本一区二区三区国色天香| 亚洲男女一区二区三区| 日韩精品一级中文字幕精品视频免费观看 | k8久久久一区二区三区 | 精品欧美一区二区久久| 久久久久国产精品厨房| 成人免费在线视频观看| 亚洲不卡一区二区三区| 久99久精品视频免费观看| 成人免费电影视频| 91成人看片片| 久久综合九色综合欧美亚洲| 亚洲欧美另类图片小说| 日韩高清不卡一区二区| 成人午夜电影久久影院| 欧美日韩在线播放三区四区| 26uuu色噜噜精品一区| 亚洲精品一二三| 韩国欧美国产一区| 91久久香蕉国产日韩欧美9色| 日韩欧美国产1| 亚洲欧美偷拍三级| 免费不卡在线视频| 99视频精品在线| 91麻豆精品国产91久久久久久 | 精彩视频一区二区| 一本久久精品一区二区| 欧美xxxxxxxx| 亚洲午夜一二三区视频| 成人一区二区三区| 6080yy午夜一二三区久久| 亚洲国产成人一区二区三区| 日韩精品久久理论片| 99r精品视频| 国产亚洲一区字幕| 午夜欧美2019年伦理| 欧美三级资源在线| 99久久99久久免费精品蜜臀| 9191国产精品| 亚洲三级在线观看| 国产成人在线观看免费网站| 欧美老年两性高潮| 亚洲欧美另类小说视频| 国产91在线看| 日韩欧美亚洲另类制服综合在线| 亚洲精品v日韩精品| 高清国产一区二区| 欧美变态tickling挠脚心| 性久久久久久久| 91视频xxxx| 欧美激情中文字幕| 国产精一品亚洲二区在线视频| 91精品国产乱| 亚洲一区二区三区小说| 色婷婷亚洲综合| 中文字幕国产精品一区二区| 国产乱码精品一区二区三区av| 56国语精品自产拍在线观看| 亚洲一二三专区| 色琪琪一区二区三区亚洲区| 国产精品久久久久影院色老大| 国产最新精品免费| 久久伊人中文字幕| 久久国产综合精品| 成人一级黄色片| 久久99国产精品久久| 欧美影院午夜播放| 亚洲人妖av一区二区| 国产成人精品一区二区三区四区 | 一区二区三区成人| 99久久99久久精品免费观看| 中文字幕av一区 二区| 高清视频一区二区| 国产精品高潮呻吟| 99久久久无码国产精品| 亚洲免费在线电影| 91蜜桃在线观看| 一区二区三区产品免费精品久久75| 91香蕉视频mp4| 亚洲一区欧美一区| 91精品国产综合久久久久| 日本aⅴ亚洲精品中文乱码| 日韩一二在线观看| 国产剧情一区二区三区| 国产精品乱码一区二区三区软件| 成人毛片在线观看| 亚洲欧美日韩久久精品| 欧美日韩国产影片| 亚洲一区在线看| 色久综合一二码| 亚洲精品亚洲人成人网| 欧美色图天堂网| 日本色综合中文字幕| 精品日韩欧美一区二区| 国产精品亚洲综合一区在线观看| 国产人伦精品一区二区| 99久久99久久精品免费观看| 亚洲午夜免费视频| 日韩一级高清毛片| 丁香激情综合国产| 夜夜嗨av一区二区三区| 日韩欧美一卡二卡| 成人午夜私人影院| 亚洲国产中文字幕| 欧美大尺度电影在线| 成人深夜福利app| 亚洲成人av电影在线| 久久久久国产精品人| 91黄色免费看| 久久99国产精品成人| 亚洲男同性视频| 精品久久国产老人久久综合| av资源网一区| 日本一不卡视频| 日韩一区欧美一区| 日韩精品影音先锋| 99riav久久精品riav| 久久精工是国产品牌吗| 亚洲人精品一区| 久久午夜色播影院免费高清 | 91在线视频观看| 亚洲一区免费观看| 精品国产免费人成电影在线观看四季| 成人午夜碰碰视频| 免费成人结看片| 亚洲欧美日韩国产综合| 欧美精品一区二区三| 欧洲生活片亚洲生活在线观看| 九九视频精品免费| 亚洲精品ww久久久久久p站| 亚洲精品一线二线三线无人区| 一本到不卡免费一区二区| 国产一区二区三区在线观看免费 | 日本精品一级二级| 韩国女主播一区二区三区| 亚洲成av人影院| 亚洲女人的天堂| 国产欧美日韩综合| 欧美成人一区二区三区在线观看| 一本色道**综合亚洲精品蜜桃冫| 国产精品一二三四五| 麻豆高清免费国产一区|