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

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

?? global.java

?? 一個復雜的俄羅斯方塊程序
?? 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一区二区三区免费野_久草精品视频
欧美亚洲国产bt| 在线观看av不卡| 蜜桃av一区二区在线观看| 国产日韩欧美a| 欧美日韩一区二区三区四区| 国产999精品久久| 美女视频免费一区| 五月婷婷久久丁香| 一区二区三区在线观看网站| 亚洲国产精品一区二区久久恐怖片| 亚洲大片免费看| 久久国产尿小便嘘嘘尿| 国内外成人在线| jlzzjlzz亚洲日本少妇| 日本韩国欧美在线| 欧美亚洲高清一区| 岛国av在线一区| 不卡一二三区首页| 中文字幕一区二区三区四区不卡| 日韩精品综合一本久道在线视频| 高清shemale亚洲人妖| 国产免费成人在线视频| 精品国产乱码久久久久久浪潮 | 亚洲一区电影777| 国产欧美日韩视频一区二区| 精品少妇一区二区三区在线播放| 日韩免费在线观看| 欧美午夜在线观看| 欧美日韩黄色影视| 欧美三级日韩三级| 6080亚洲精品一区二区| 欧美一级二级三级乱码| 日韩欧美一区二区久久婷婷| 精品日韩99亚洲| 久久网站最新地址| 国产精品美女久久久久aⅴ| 欧美精彩视频一区二区三区| 伊人夜夜躁av伊人久久| 亚洲乱码中文字幕| 日韩毛片在线免费观看| 欧美一区二区精品久久911| 国精产品一区一区三区mba桃花| 欧美激情综合在线| 成人免费一区二区三区视频| 亚洲欧美一区二区久久| 国产+成+人+亚洲欧洲自线| 国产亚洲短视频| 国产日产精品1区| 久久久久久**毛片大全| 一区二区三区四区乱视频| 亚洲电影激情视频网站| 国产一区二区精品久久99| 91女神在线视频| 日韩欧美一卡二卡| 亚洲色图19p| 欧美日韩国产美| 欧美一级高清片在线观看| 久久久噜噜噜久噜久久综合| 一区二区欧美在线观看| 免费观看久久久4p| 色综合久久88色综合天天| 91精品国产91热久久久做人人 | 国产成人精品亚洲日本在线桃色 | 欧美mv日韩mv国产网站| 中文字幕av一区二区三区免费看 | 99精品视频一区二区三区| 成人app软件下载大全免费| 色婷婷久久综合| 日韩精品一区二| 国产精品传媒在线| 蜜臀av一级做a爰片久久| 成人综合在线网站| 在线观看日韩电影| 国产视频一区不卡| 亚洲欧美福利一区二区| 美美哒免费高清在线观看视频一区二区 | 国产情人综合久久777777| 成人免费高清在线| 91精品国产福利| 中文字幕一区二区三区不卡| 韩国v欧美v日本v亚洲v| 在线欧美小视频| 国产精品久久免费看| 图片区小说区区亚洲影院| 91黄视频在线观看| 麻豆成人av在线| 91亚洲国产成人精品一区二三 | 国产麻豆视频精品| 欧美性猛片xxxx免费看久爱| 国产日韩精品一区| 视频一区二区三区在线| 99国产精品久久久久久久久久久| 欧美精品一区二区三区高清aⅴ| 一区二区在线观看视频在线观看| 国产一区二区三区国产| 欧美不卡视频一区| 亚洲777理论| 宅男在线国产精品| 奇米精品一区二区三区四区| 不卡av在线免费观看| 久久久噜噜噜久久中文字幕色伊伊| 洋洋av久久久久久久一区| 欧美在线你懂得| 图片区小说区国产精品视频| 欧美日韩精品系列| 日韩激情一二三区| 91黄色免费观看| 午夜久久久久久久久| 久久精品视频一区| 一本大道久久精品懂色aⅴ| 亚洲午夜激情网站| 欧美不卡激情三级在线观看| 亚洲午夜影视影院在线观看| 色婷婷国产精品综合在线观看| 亚洲黄色免费网站| 久久 天天综合| 国产精品久久久久久久蜜臀| 国产真实乱偷精品视频免| 欧美tickling挠脚心丨vk| 婷婷夜色潮精品综合在线| 91色综合久久久久婷婷| 中文字幕在线不卡视频| 国内精品伊人久久久久av影院| 日韩欧美国产午夜精品| 免费人成黄页网站在线一区二区 | 韩国理伦片一区二区三区在线播放| 日韩欧美卡一卡二| 99久久综合精品| 日韩电影一区二区三区四区| 国产亚洲一区二区三区| 国产麻豆欧美日韩一区| 亚洲视频1区2区| 欧美一级日韩一级| 国产精品一卡二卡| 国产精品日日摸夜夜摸av| 99国产精品久久久| 婷婷夜色潮精品综合在线| 亚洲精选视频在线| 久久久久国产一区二区三区四区 | 日韩久久久精品| 久久99国产精品麻豆| 日本不卡一区二区三区高清视频| 欧美日本一道本在线视频| 国产成人av自拍| 久久99精品国产麻豆婷婷| 亚洲精品自拍动漫在线| 精品国产1区二区| 一本久久精品一区二区| 国产黄色精品视频| 国产一区二区三区| 美女看a上一区| 美腿丝袜亚洲综合| 国产91在线观看| 欧美日韩一区二区电影| 欧美日韩国产美| 色婷婷激情综合| 国内精品视频666| 国产精品123| 岛国av在线一区| www..com久久爱| 欧美国产一区在线| 国产不卡高清在线观看视频| 国产亚洲欧美色| 国产精品夜夜嗨| 国产精品美女久久久久久久网站| 欧美专区日韩专区| 精品一区二区三区免费观看| 亚洲欧美区自拍先锋| 欧美一级xxx| 91论坛在线播放| 青青草一区二区三区| 亚洲乱码国产乱码精品精小说 | 亚洲视频一二区| 亚洲免费资源在线播放| 亚洲午夜私人影院| 久久精品国产一区二区| 久久99精品久久久| 成人晚上爱看视频| 欧美午夜精品一区二区三区| 6080亚洲精品一区二区| 久久久99久久| 国产精品国产三级国产三级人妇 | 亚洲精品国产无套在线观| 日韩区在线观看| 偷偷要91色婷婷| 免费观看在线色综合| 成人开心网精品视频| 日韩欧美亚洲国产精品字幕久久久 | 亚洲精品一区二区三区蜜桃下载| 欧美视频中文一区二区三区在线观看| 99re热视频这里只精品 | 国产精品久久影院| 国产精品一级二级三级| 久久综合国产精品| 久久久噜噜噜久久中文字幕色伊伊| 精品国产区一区| 亚洲午夜三级在线| 色婷婷av一区二区三区软件 | www.av精品| 国产午夜一区二区三区|