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

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

?? global.java

?? 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一区二区三区免费野_久草精品视频
午夜电影网一区| 精品久久久久久久一区二区蜜臀| 欧美日本在线看| 精品国产乱码久久久久久蜜臀| 国产婷婷一区二区| 亚洲青青青在线视频| 日韩国产在线观看| 国产精品性做久久久久久| 色婷婷激情综合| 久久天天做天天爱综合色| 亚洲乱码一区二区三区在线观看| 秋霞av亚洲一区二区三| 成人aaaa免费全部观看| 91精品国产一区二区人妖| 国产日韩精品一区二区浪潮av | av亚洲产国偷v产偷v自拍| 色美美综合视频| 精品久久人人做人人爽| 一区二区在线免费| 国产真实精品久久二三区| 色综合久久综合中文综合网| 欧美一二三区精品| 亚洲免费在线观看视频| 久久99久久久久| 欧美最新大片在线看| 国产蜜臀av在线一区二区三区| 午夜精品一区二区三区电影天堂 | 国产婷婷色一区二区三区在线| 一区二区国产盗摄色噜噜| 国产麻豆成人精品| 欧美日韩日本视频| 亚洲欧洲国产日韩| 国产一区二区三区免费观看| 欧美理论片在线| 亚洲女同一区二区| 国产成a人无v码亚洲福利| 日韩一级完整毛片| 亚洲图片欧美色图| 91小视频免费观看| 国产女主播在线一区二区| 日本在线不卡视频一二三区| 日本黄色一区二区| 亚洲欧洲在线观看av| 国产精品99久久久久| 欧美成人猛片aaaaaaa| 午夜精品久久久久影视| 色婷婷久久久综合中文字幕 | 91久久国产综合久久| 国产精品青草久久| 国产精品18久久久久久vr| 日韩免费在线观看| 天天免费综合色| 欧美在线视频不卡| 亚洲色图欧美在线| 99在线视频精品| 国产精品色哟哟网站| 国产精品自拍网站| 久久亚洲一级片| 韩国v欧美v亚洲v日本v| 欧美一区二区三区在线观看| 婷婷综合久久一区二区三区| 欧美午夜电影网| 亚洲免费观看高清在线观看| 97se亚洲国产综合自在线| 中文字幕一区二区在线观看| 岛国av在线一区| 国产精品色呦呦| 成人免费视频一区| 国产免费成人在线视频| 成人黄页在线观看| 国产精品毛片高清在线完整版| 丁香六月久久综合狠狠色| 国产精品午夜久久| jizz一区二区| 亚洲色图欧洲色图| 色欧美片视频在线观看| 亚洲成av人片一区二区梦乃 | 久久精品国产**网站演员| 日韩一级大片在线观看| 看国产成人h片视频| 欧美mv日韩mv| 国产精品一级在线| 国产精品免费aⅴ片在线观看| 97久久精品人人做人人爽50路 | 91精品国产色综合久久不卡电影| 亚洲成人精品一区二区| 欧美一级高清片| 国产美女视频91| 欧美激情中文字幕一区二区| av午夜一区麻豆| 亚洲一区二区三区小说| 91 com成人网| 精品无人区卡一卡二卡三乱码免费卡| 日韩一级大片在线| 国产精品一区专区| 中文字幕亚洲欧美在线不卡| 欧美性生活大片视频| 蜜臀av国产精品久久久久| 久久精品亚洲国产奇米99| 99久久久免费精品国产一区二区| 亚洲综合在线视频| 日韩一区二区三区在线观看| 国产高清亚洲一区| 一区二区三区免费| 日韩午夜电影在线观看| 国产精品91xxx| 亚洲自拍偷拍欧美| 日韩美女视频一区二区在线观看| 国产夫妻精品视频| 亚洲一区二区欧美激情| 精品成人a区在线观看| 成人app下载| 日本怡春院一区二区| 国产精品热久久久久夜色精品三区| 欧洲一区二区三区在线| 美腿丝袜亚洲色图| 中文字幕免费不卡| 欧美日韩中文一区| 国产成人一区二区精品非洲| 夜夜嗨av一区二区三区四季av| 日韩视频免费观看高清完整版 | 亚洲久本草在线中文字幕| 91精品国产综合久久小美女| 成人在线综合网站| 日韩电影免费在线看| 国产精品毛片高清在线完整版| 欧美精品自拍偷拍动漫精品| 国产91精品久久久久久久网曝门| 亚洲高清在线视频| 国产精品三级电影| 日韩视频国产视频| 在线看日本不卡| 东方欧美亚洲色图在线| 日本不卡在线视频| 亚洲精选在线视频| 国产视频视频一区| 日韩一区二区三区电影在线观看 | 亚洲午夜av在线| 国产调教视频一区| 欧美精品18+| 色播五月激情综合网| 国产九色精品成人porny | 欧美一区二区三区视频| eeuss鲁片一区二区三区| 精品一区二区久久久| 亚洲mv在线观看| 中文字幕一区二区不卡| 久久嫩草精品久久久精品| 91精品一区二区三区在线观看| 色综合天天狠狠| 成人白浆超碰人人人人| 精品一区二区三区欧美| 日韩av一级电影| 亚洲国产精品欧美一二99| 亚洲欧洲三级电影| 久久久久九九视频| 日韩精品中文字幕一区二区三区| 欧美日韩不卡在线| 91麻豆国产在线观看| 懂色中文一区二区在线播放| 国产精品羞羞答答xxdd| 精品一区二区三区在线观看国产 | 欧美电影免费观看高清完整版| 欧美色男人天堂| 91浏览器在线视频| 成人avav影音| 成人一级黄色片| 国产91丝袜在线观看| 国产福利精品一区| 国产中文一区二区三区| 精品一区中文字幕| 紧缚奴在线一区二区三区| 久草在线在线精品观看| 老司机一区二区| 久久99日本精品| 国产在线麻豆精品观看| 麻豆精品一二三| 黄页视频在线91| 韩国成人在线视频| 国产乱码一区二区三区| 国产精品一区二区久激情瑜伽| 国产一区在线不卡| 国产成人免费视频网站高清观看视频 | 国产精品91一区二区| 国产黑丝在线一区二区三区| 国产精品1区2区| 夫妻av一区二区| 成人av免费网站| 99久久国产综合精品女不卡| 91性感美女视频| 欧美婷婷六月丁香综合色| 欧美乱妇一区二区三区不卡视频| 欧美一区二区三区在线观看| 日韩一区二区麻豆国产| 337p粉嫩大胆色噜噜噜噜亚洲| 久久免费美女视频| 国产精品美女久久久久av爽李琼| 亚洲人精品午夜| 亚洲成av人片一区二区三区| 男女激情视频一区|