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

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

?? controlpanel.java

?? 這是一個俄羅斯方塊的JAVA實現
?? JAVA
字號:
/**
 * File: ControlPanel.java
 * User: Administrator
 * Date: Jan 15, 2003
 * Describe: 俄羅斯方塊的 Java 實現
 */

import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.EtchedBorder;
import java.awt.*;
import java.awt.event.*;

/**
 * 控制面板類,繼承自JPanel.
 * 上邊安放預顯窗口、等級、得分、控制按鈕
 * 主要用來控制游戲進程。
 */
class ControlPanel extends JPanel {
	private JTextField
	        tfLevel = new JTextField("" + ErsBlocksGame.DEFAULT_LEVEL),
	tfScore = new JTextField("0");

	private JButton
	        btPlay = new JButton("Play"),
	btPause = new JButton("Pause"),
	btStop = new JButton("Stop"),
	btTurnLevelUp = new JButton("Turn hard"),
	btTurnLevelDown = new JButton("Turn easy");

	private JPanel plTip = new JPanel(new BorderLayout());
	private TipPanel plTipBlock = new TipPanel();
	private JPanel plInfo = new JPanel(new GridLayout(4, 1));
	private JPanel plButton = new JPanel(new GridLayout(5, 1));

	private Timer timer;
	private ErsBlocksGame game;

	private Border border = new EtchedBorder(
	        EtchedBorder.RAISED, Color.white, new Color(148, 145, 140));

	/**
	 * 控制面板類的構造函數
	 * @param game ErsBlocksGame, ErsBoxesGame類的一個實例引用,
	 * 方便直接控制ErsBoxesGame類的行為。
	 */
	public ControlPanel(final ErsBlocksGame game) {
		setLayout(new GridLayout(3, 1, 0, 4));
		this.game = game;

		plTip.add(new JLabel("Next block"), BorderLayout.NORTH);
		plTip.add(plTipBlock);
		plTip.setBorder(border);

		plInfo.add(new JLabel("Level"));
		plInfo.add(tfLevel);
		plInfo.add(new JLabel("Score"));
		plInfo.add(tfScore);
		plInfo.setBorder(border);

		tfLevel.setEditable(false);
		tfScore.setEditable(false);

		plButton.add(btPlay);
		plButton.add(btPause);
		plButton.add(btStop);
		plButton.add(btTurnLevelUp);
		plButton.add(btTurnLevelDown);
		plButton.setBorder(border);

		add(plTip);
		add(plInfo);
		add(plButton);

		addKeyListener(new ControlKeyListener());

		btPlay.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent ae) {
				game.playGame();
			}
		});
		btPause.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent ae) {
				if (btPause.getText().equals(new String("Pause"))) {
					game.pauseGame();
				} else {
					game.resumeGame();
				}
			}
		});
		btStop.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent ae) {
				game.stopGame();
			}
		});
		btTurnLevelUp.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent ae) {
				try {
					int level = Integer.parseInt(tfLevel.getText());
					if (level < ErsBlocksGame.MAX_LEVEL)
						tfLevel.setText("" + (level + 1));
				} catch (NumberFormatException e) {
				}
				requestFocus();
			}
		});
		btTurnLevelDown.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent ae) {
				try {
					int level = Integer.parseInt(tfLevel.getText());
					if (level > 1)
						tfLevel.setText("" + (level - 1));
				} catch (NumberFormatException e) {
				}
				requestFocus();
			}
		});

		addComponentListener(new ComponentAdapter() {
			public void componentResized(ComponentEvent ce) {
				plTipBlock.fanning();
			}
		});

		timer = new Timer(500, new ActionListener() {
			public void actionPerformed(ActionEvent ae) {
				tfScore.setText("" + game.getScore());
				int scoreForLevelUpdate =
				        game.getScoreForLevelUpdate();
				if (scoreForLevelUpdate >= ErsBlocksGame.PER_LEVEL_SCORE
				        && scoreForLevelUpdate > 0)
					game.levelUpdate();
			}
		});
		timer.start();
	}

	/**
	 * 設置預顯窗口的樣式,
	 * @param style int,對應ErsBlock類的STYLES中的28個值
	 */
	public void setTipStyle(int style) {
		plTipBlock.setStyle(style);
	}

	/**
	 * 取得用戶設置的游戲等級。
	 * @return int, 難度等級,1?。rsBlocksGame.MAX_LEVEL
	 */
	public int getLevel() {
		int level = 0;
		try {
			level = Integer.parseInt(tfLevel.getText());
		} catch (NumberFormatException e) {
		}
		return level;
	}

	/**
	 * 讓用戶修改游戲難度等級。
	 * @param level 修改后的游戲難度等級
	 */
	public void setLevel(int level) {
		if (level > 0 && level < 11) tfLevel.setText("" + level);
	}

	/**
	 * 設置"開始"按鈕的狀態。
	 */
	public void setPlayButtonEnable(boolean enable) {
		btPlay.setEnabled(enable);
	}

	public void setPauseButtonLabel(boolean pause) {
		btPause.setText(pause ? "Pause" : "Continue");
	}

	/**
	 * 重置控制面板
	 */
	public void reset() {
		tfScore.setText("0");
		plTipBlock.setStyle(0);
	}

	/**
	 * 重新計算TipPanel里的boxes[][]里的小框的大小
	 */
	public void fanning() {
		plTipBlock.fanning();
	}

	/**
	 * 預顯窗口的實現細節類
	 */
	private class TipPanel extends JPanel {
		private Color backColor = Color.darkGray, frontColor = Color.lightGray;
		private ErsBox[][] boxes =
		        new ErsBox[ErsBlock.BOXES_ROWS][ErsBlock.BOXES_COLS];

		private int style, boxWidth, boxHeight;
		private boolean isTiled = false;

		/**
		 * 預顯窗口類構造函數
		 */
		public TipPanel() {
			for (int i = 0; i < boxes.length; i++) {
				for (int j = 0; j < boxes[i].length; j++)
					boxes[i][j] = new ErsBox(false);
			}
		}

		/**
		 * 預顯窗口類構造函數
		 * @param backColor Color, 窗口的背景色
		 * @param frontColor Color, 窗口的前景色
		 */
		public TipPanel(Color backColor, Color frontColor) {
			this();
			this.backColor = backColor;
			this.frontColor = frontColor;
		}

		/**
		 * 設置預顯窗口的方塊樣式
		 * @param style int,對應ErsBlock類的STYLES中的28個值
		 */
		public void setStyle(int style) {
			this.style = style;
			repaint();
		}

		/**
		 * 覆蓋JComponent類的函數,畫組件。
		 * @param g 圖形設備環境
		 */
		public void paintComponent(Graphics g) {
			super.paintComponent(g);

			if (!isTiled) fanning();

			int key = 0x8000;
			for (int i = 0; i < boxes.length; i++) {
				for (int j = 0; j < boxes[i].length; j++) {
					Color color = (((key & style) != 0) ? frontColor : backColor);
					g.setColor(color);
					g.fill3DRect(j * boxWidth, i * boxHeight,
					        boxWidth, boxHeight, true);
					key >>= 1;
				}
			}
		}

		/**
		 * 根據窗口的大小,自動調整方格的尺寸
		 */
		public void fanning() {
			boxWidth = getSize().width / ErsBlock.BOXES_COLS;
			boxHeight = getSize().height / ErsBlock.BOXES_ROWS;
			isTiled = true;
		}
	}

	private class ControlKeyListener extends KeyAdapter {
		public void keyPressed(KeyEvent ke) {
			if (!game.isPlaying()) return;

			ErsBlock block = game.getCurBlock();
			switch (ke.getKeyCode()) {
				case KeyEvent.VK_DOWN:
					block.moveDown();
					break;
				case KeyEvent.VK_LEFT:
					block.moveLeft();
					break;
				case KeyEvent.VK_RIGHT:
					block.moveRight();
					break;
				case KeyEvent.VK_UP:
					block.turnNext();
					break;
				default:
					break;
			}
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情一区三区| 不卡影院免费观看| 成人性生交大合| 51精品秘密在线观看| 亚洲色图.com| 国产成人精品亚洲午夜麻豆| 欧美日韩中文国产| 国产精品无遮挡| 国产老肥熟一区二区三区| 7777精品伊人久久久大香线蕉超级流畅 | 久久久久国产精品厨房| 一区二区三区四区在线| 国产精品综合视频| 日韩免费观看高清完整版 | 91在线免费播放| 精品国产91洋老外米糕| 肉丝袜脚交视频一区二区| 91成人免费电影| 中文字幕一区在线| 国产裸体歌舞团一区二区| 日韩欧美国产wwwww| 亚洲va欧美va国产va天堂影院| 97精品久久久午夜一区二区三区| 欧美极品另类videosde| 国产精品77777竹菊影视小说| 日韩一级视频免费观看在线| 三级在线观看一区二区| 欧美日韩亚洲另类| 视频在线在亚洲| 欧美精品久久久久久久多人混战| 亚洲综合在线五月| 欧美专区亚洲专区| 一区二区三区在线免费| 在线一区二区三区| 亚洲高清免费在线| 欧美日韩国产小视频| 午夜精品成人在线视频| 欧美一区二区福利视频| 免费观看久久久4p| 精品福利一区二区三区免费视频| 日本欧洲一区二区| 亚洲精品一区二区精华| 国产精品一区二区久久不卡 | 一区二区三区精密机械公司| 972aa.com艺术欧美| 亚洲人成影院在线观看| 在线影院国内精品| 丝袜脚交一区二区| 久久婷婷综合激情| 成人爽a毛片一区二区免费| 中文字幕第一区第二区| 色综合久久综合网欧美综合网| 一区二区三区美女视频| 欧美一级在线观看| 成人一级视频在线观看| 亚洲乱码一区二区三区在线观看| 欧美性大战久久久| 久久精品国产99国产| 亚洲国产精品成人综合色在线婷婷| 成人av先锋影音| 亚洲一区二区免费视频| 欧美精品一区男女天堂| 成人免费的视频| 日韩高清在线一区| 亚洲国产成人私人影院tom| 欧美伊人久久大香线蕉综合69| 麻豆精品一区二区综合av| 国产精品久久久久国产精品日日| 欧美性色黄大片手机版| 国产美女视频91| 亚洲3atv精品一区二区三区| 久久天天做天天爱综合色| 欧美中文一区二区三区| 国产精品一区专区| 日韩专区一卡二卡| 国产精品国模大尺度视频| 日韩欧美美女一区二区三区| av男人天堂一区| 久99久精品视频免费观看| 一个色在线综合| 亚洲国产精品传媒在线观看| 91精品婷婷国产综合久久竹菊| 懂色中文一区二区在线播放| 天堂蜜桃一区二区三区| 最新中文字幕一区二区三区 | 美腿丝袜亚洲色图| 怡红院av一区二区三区| 国产欧美日本一区二区三区| 5566中文字幕一区二区电影| 91免费观看视频在线| 国产乱码精品一品二品| 无吗不卡中文字幕| 一区二区三区丝袜| 中文字幕精品在线不卡| 久久亚洲一区二区三区四区| 欧美精选在线播放| 欧日韩精品视频| av一区二区久久| 国产成人一区在线| 狠狠色伊人亚洲综合成人| 日韩精品电影一区亚洲| 亚洲欧美日韩国产成人精品影院 | 久久久精品黄色| 精品国产一区二区三区久久影院| 欧美精品xxxxbbbb| 91老司机福利 在线| 国产91富婆露脸刺激对白| 国产精品一区二区男女羞羞无遮挡| 三级一区在线视频先锋 | 国产馆精品极品| 激情伊人五月天久久综合| 久久精品国产精品亚洲精品| 免费看欧美女人艹b| 男男gaygay亚洲| 久久成人久久爱| 精品一区二区久久| 国内精品伊人久久久久影院对白| 精品一区二区三区视频在线观看| 免费一级片91| 激情欧美日韩一区二区| 国产一区二区美女诱惑| 国产伦理精品不卡| 成人网男人的天堂| 色婷婷久久久亚洲一区二区三区 | av不卡在线观看| 欧美精品一区二区三区在线播放 | 欧美日韩精品一区视频| 欧美理论片在线| 欧美一区二区视频观看视频| 欧美高清视频不卡网| 日韩一区二区三区视频在线| 日韩欧美成人一区| 国产人妖乱国产精品人妖| 一区在线播放视频| 午夜伦欧美伦电影理论片| 麻豆极品一区二区三区| 国产91在线观看| 欧美亚洲一区二区在线| 制服丝袜亚洲精品中文字幕| 日韩欧美精品在线| 国产精品伦一区| 婷婷成人综合网| 国产黑丝在线一区二区三区| 一本大道综合伊人精品热热| 欧美美女直播网站| wwwwxxxxx欧美| 亚洲精品视频自拍| 久久精品99久久久| 99久久99久久久精品齐齐| 欧美高清www午色夜在线视频| 26uuu另类欧美亚洲曰本| 亚洲三级在线观看| 美女网站在线免费欧美精品| 成人美女视频在线看| 3d动漫精品啪啪一区二区竹菊| 久久久噜噜噜久久中文字幕色伊伊| 中文字幕在线不卡视频| 日本强好片久久久久久aaa| 成人国产一区二区三区精品| 制服丝袜亚洲色图| 亚洲靠逼com| 国产精品一二一区| 欧美日韩视频第一区| 中文字幕一区二区三区不卡| 日韩成人免费在线| 色又黄又爽网站www久久| 精品播放一区二区| 水野朝阳av一区二区三区| 国产成人精品影视| 91精品国产乱| 一区二区在线观看视频| 国产69精品久久99不卡| 日韩精品资源二区在线| 亚洲成人综合在线| a亚洲天堂av| 国产欧美日韩在线看| 美女mm1313爽爽久久久蜜臀| 欧美狂野另类xxxxoooo| 亚洲欧美日韩在线| www.久久久久久久久| 久久久国际精品| 精品一区二区三区视频| 日韩三级免费观看| 日韩精品福利网| 欧美日韩大陆一区二区| 亚洲一区自拍偷拍| 91福利社在线观看| 亚洲欧美日韩国产手机在线| 99视频热这里只有精品免费| 国产欧美一区在线| 成人网在线免费视频| 欧美经典一区二区| 成人爱爱电影网址| 国产精品私人影院| 99在线精品一区二区三区| 亚洲人成精品久久久久| 一本大道久久精品懂色aⅴ| 亚洲私人黄色宅男| 欧美在线观看视频一区二区 | 欧美三级欧美一级|