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

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

?? ersblocksgame.java

?? 游戲主類
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/**
 * File: ErsBlocksGame.java
 * User: 
 * Describe: 俄羅斯方塊的 Java 實現(xiàn)
 */

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

/** 
 * 游戲主類,繼承自JFrame類,負責游戲的全局控制。
 * 內(nèi)含
 * 1, 一個GameCanvas畫布類的實例引用,
 * 2, 一個保存當前活動塊(ErsBlock)實例的引用,
 * 3, 一個保存當前控制面板(ControlPanel)實例的引用
 * @author 郎利斌
 * @version 2.0
 */
public class ErsBlocksGame extends JFrame 
{
	/**
	 *  每填滿一行計多少分
	 */
	public final static int PER_LINE_SCORE = 100;
	/**
	 * 積多少分以后能升級
	 */
	public final static int PER_LEVEL_SCORE = PER_LINE_SCORE * 20;
	/**
	 * 最大級數(shù)是10級
	 */
	public final static int MAX_LEVEL = 10;
	/**
	 * 默認級數(shù)是5
	 */
	public final static int DEFAULT_LEVEL = 5;

	private GameCanvas canvas;//畫布類對象
	private ErsBlock block;   //塊類對象
	private boolean playing = false;//是否正在玩
	private ControlPanel ctrlPanel;//控制面板對象
	private AboutDialog aboutdialog=new AboutDialog();
	Color   newFrontColor=Color.black;

	private JMenuBar bar = new JMenuBar();//菜單欄
	private JMenu//菜單項
	        mGame = new JMenu("Game"),
			mControl = new JMenu("Control"),
			mWindowStyle = new JMenu("WindowStyle"),
			mGuanyu = new JMenu("關(guān)于");
			
	private JMenuItem//子菜單
	        miNewGame = new JMenuItem("New Game"),
			miSetBlockColor = new JMenuItem("Set Block Color ..."),
			miSetBackColor = new JMenuItem("Set Background Color ..."),
			miTurnHarder = new JMenuItem("Turn up the level"),
			miTurnEasier = new JMenuItem("Turn down the level"),
			miExit = new JMenuItem("Eixt"),

			miPlay = new JMenuItem("Play"),
			miPause = new JMenuItem("Pause"),
			miResume = new JMenuItem("Resume"),
			miStop = new JMenuItem("Stop"),

            mguanyu=new JMenuItem("關(guān)于"),
            minfo=new JMenuItem("簡介");
            
	private JCheckBoxMenuItem//單選項菜單
	        miAsWindows = new JCheckBoxMenuItem("Windows"),
			miAsMotif = new JCheckBoxMenuItem("Motif"),
			miAsMetal = new JCheckBoxMenuItem("Metal", true);

	/**
	 * 主游戲類的構(gòu)造函數(shù)
	 * @param title String,窗口標題
	 */
	public ErsBlocksGame(String title) 
	{
		setTitle(title);
        setSize(400, 400);//窗口大小
		
		//利用屏幕和主窗體的大小差值,使窗口居中
        Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
		setLocation((scrSize.width - getSize().width) / 2,
		        (scrSize.height - getSize().height) / 2);
		        
		createMenu();
        
		Container container = getContentPane();
		//container.setLayout(new BorderLayout(3, 0));//????????????????????????????????

		canvas = new GameCanvas(20, 12);//設(shè)置畫布區(qū)域有20行,12列
		ctrlPanel = new ControlPanel(this);//初始化設(shè)置控制面板區(qū)
        
        ctrlPanel.setPause(false);
        ctrlPanel.setStop(false);
        
		container.add(canvas, BorderLayout.CENTER);//框架默認布局是邊界布局
		container.add(ctrlPanel, BorderLayout.EAST);
         
         //添加窗口適配器
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent we) {
				stopGame();
				System.exit(0);
			}
		});
        //添加組件適配器
		addComponentListener(new ComponentAdapter() {//       注意注意他的使用
			public void componentResized(ComponentEvent ce) {
				canvas.fanning();
			}
		});

		show();
		canvas.fanning();//根據(jù)窗口的大小,自動調(diào)整方格的尺寸
	}

	/**
	 * 讓游戲“復位”
	 */
	public void reset() 
	{
		ctrlPanel.reset();//控制面板復位
		canvas.reset();//畫布復位
	}

	/**
	 * 判斷游戲是否還在進行
	 * @return boolean, true-還在運行,false-已經(jīng)停止
	 */
	public boolean isPlaying() {
		return playing;
	}

	/**
	 * 得到當前活動的塊
	 * @return ErsBlock, 當前活動塊的引用
	 */
	public ErsBlock getCurBlock() {
		return block;
		//block是ErsBlock的對象,block是游戲開始后
		//,即run()開始后,新創(chuàng)建的ErsBloc類 的對象
	}

	/**
	 * 得到當前畫布
	 * @return GameCanvas, 當前畫布的引用
	 */
	public GameCanvas getCanvas() {
		return canvas;
	}

	/**
	 * 開始游戲
	 */
	public void playGame() 
	{
		play();
		ctrlPanel.setPlayButtonEnable(false);
		ctrlPanel.setPause(true);
		ctrlPanel.setStop(true);
		
		miPlay.setEnabled(false);
		miPause.setEnabled(true);
		miStop.setEnabled(true);
		miSetBlockColor.setEnabled(false);
		miSetBackColor.setEnabled(false);
		miTurnEasier.setEnabled(false);
		miTurnHarder.setEnabled(false);
		ctrlPanel.setTurnLeveldown(false);
		ctrlPanel.setTurnLevelUp(false);
		ctrlPanel.requestFocus();//??????????????????????????????????
	}

	/**
	 * 游戲暫停
	 */
	public void pauseGame() 
	{
		
		if (block != null) block.pauseMove();

		ctrlPanel.setPauseButtonLabel(false);
		miPause.setEnabled(false);
		miResume.setEnabled(true);
	
	    	miSetBlockColor.setEnabled(true);
		    miSetBackColor.setEnabled(true);
		 
	}

	/**
	 * 讓暫停中的游戲繼續(xù)
	 */
	public void resumeGame() 
	{
		if (block != null) block.resumeMove();
		ctrlPanel.setPauseButtonLabel(true);
		miPause.setEnabled(true);
		miResume.setEnabled(false);
		miSetBlockColor.setEnabled(false);
		miSetBackColor.setEnabled(false);
		ctrlPanel.requestFocus();
	}

	/**
	 * 用戶停止游戲
	 */
	public void stopGame() 
	{
		playing = false;
		if (block != null) block.stopMove();//塊類對象
		miPlay.setEnabled(true);  ctrlPanel.setPlayButtonEnable(true);
		miPause.setEnabled(false); ctrlPanel.setPauseButtonLabel(true);
	    miStop.setEnabled(false);   
		miResume.setEnabled(false);
		miTurnEasier.setEnabled(true);
		miTurnHarder.setEnabled(true);
		miSetBlockColor.setEnabled(true);
		miSetBackColor.setEnabled(true);
		ctrlPanel.setTurnLeveldown(true);
		ctrlPanel.setTurnLevelUp(true);
		ctrlPanel.setPause(false);
        ctrlPanel.setStop(false);
	    reset();
	    
	}

	/**
	 * 得到當前游戲者設(shè)置的游戲難度
	 * @return int, 游戲難度1-MAX_LEVEL
	 */
	public int getLevel()
	{
		return ctrlPanel.getLevel();
	}

	/**
	 * 讓用戶設(shè)置游戲難度
	 * @param level int, 游戲難度1-MAX_LEVEL
	 */
	public void setLevel(int level) 
	{
		if (level < 11 && level > 0)
		 ctrlPanel.setLevel(level);
	}

	/**
	 * 得到游戲積分
	 * @return int, 積分。
	 */
	public int getScore() 
	{
		if (canvas != null) 
		return canvas.getScore();
		return 0;
	}

	/**
	 * 得到自上次升級以來的游戲積分,升級以后,此積分清零
	 * @return int, 積分。
	 */
	public int getScoreForLevelUpdate() 
	{
		if (canvas != null) return canvas.getScoreForLevelUpdate();
		return 0;
	}

	/**
	 * 當分數(shù)累計到一定的數(shù)量時,升一次級
	 * @return boolean, ture-update successufl, false-update fail
	 */
	public boolean levelUpdate() 
	{
		int curLevel = getLevel();
		if (curLevel < MAX_LEVEL) 
		{
			setLevel(curLevel + 1);
			canvas.resetScoreForLevelUpdate();
			return true;
		}
		return false;
	}

	/**
	 * 游戲開始
	 */
	private void play() 
	{
		reset();
		playing = true;
		Thread thread = new Thread(new Game());
		thread.start();
	}

	/**
	 * 報告游戲結(jié)束了
	 */
	private void reportGameOver() 
	{
		
		JOptionPane.showMessageDialog(this, "Game over!");
		stopGame();
		reset();
	}

	/**
	 * 建立并設(shè)置窗口菜單
	 */
	private void createMenu() 
	{
		//添加菜單項

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本女优在线视频一区二区| 国产精品久久久久久亚洲伦 | 成人听书哪个软件好| 久久99久久99小草精品免视看| 国产精品18久久久久久久久| 欧美女孩性生活视频| 欧美www视频| 中文字幕综合网| 美女mm1313爽爽久久久蜜臀| 91久久精品一区二区| 日韩女优视频免费观看| 亚洲精品视频在线| 国产成人免费视频网站| 欧美成人福利视频| 午夜精品久久久久久不卡8050| 99精品欧美一区二区三区综合在线| 日韩丝袜情趣美女图片| 亚洲国产日韩一级| 色婷婷狠狠综合| 中文字幕一区二区视频| 国产成人鲁色资源国产91色综| 欧美成人乱码一区二区三区| 亚洲成人久久影院| 在线观看三级视频欧美| 最新不卡av在线| 成人av免费网站| 国产精品污网站| 成人精品免费看| 久久夜色精品一区| 精品一区二区av| 国产成人亚洲综合色影视| 91精品中文字幕一区二区三区| 中文字幕人成不卡一区| 国产一区二区精品久久91| 欧美乱熟臀69xxxxxx| 亚洲视频狠狠干| 成人高清免费观看| 国产午夜精品一区二区三区嫩草| 青青草97国产精品免费观看无弹窗版| 久久成人久久爱| 欧美日韩夫妻久久| 日本亚洲电影天堂| 4438成人网| 日韩电影在线一区二区三区| 欧美三区在线视频| 亚洲激情在线播放| 一本大道久久a久久精二百| 国产精品乱码一区二区三区软件| 国产美女主播视频一区| 精品久久久久久久人人人人传媒| 青草国产精品久久久久久| 欧美日韩精品欧美日韩精品| 亚洲国产一区二区在线播放| 欧美日韩在线三区| 亚洲成人免费视| 欧美一级欧美三级在线观看 | 亚洲午夜一二三区视频| 99在线精品一区二区三区| 久久久亚洲精品石原莉奈| 国产一区二区调教| 国产亲近乱来精品视频| 成人精品亚洲人成在线| 国产精品久久久久永久免费观看| 麻豆成人av在线| 国产偷v国产偷v亚洲高清| 成人综合婷婷国产精品久久| 1000精品久久久久久久久| av毛片久久久久**hd| 一区二区在线看| 欧美日韩国产首页| 久久精品免费观看| 精品入口麻豆88视频| 国产精品一区二区视频| 综合久久一区二区三区| 欧美日本不卡视频| 国产在线精品不卡| 亚洲视频中文字幕| 91精品综合久久久久久| 成人免费三级在线| 一二三四区精品视频| 日韩视频一区二区三区在线播放| 国内久久精品视频| 日韩理论片网站| 日韩一区二区三区在线观看| 波多野结衣精品在线| 亚洲一区二区三区影院| 久久精品夜色噜噜亚洲a∨| 色婷婷av一区二区三区gif| 天天综合日日夜夜精品| 中文无字幕一区二区三区 | 国产69精品久久777的优势| 一二三四社区欧美黄| 久久久久久久久97黄色工厂| 91视频观看免费| 狠狠色伊人亚洲综合成人| 日本一区二区三区四区在线视频| 欧美图区在线视频| 成人听书哪个软件好| 五月激情综合网| 亚洲少妇中出一区| 精品国精品国产| 欧美日本不卡视频| 99精品视频在线观看| 国模一区二区三区白浆| 亚洲成人av一区| 亚洲欧美综合网| 欧美国产综合色视频| 91精品国产欧美日韩| 91网站最新地址| 久久国产精品露脸对白| 丝袜诱惑亚洲看片| ...xxx性欧美| xfplay精品久久| 91精品国产欧美一区二区18| 在线观看日韩精品| 91蜜桃免费观看视频| 丰满亚洲少妇av| 国产麻豆日韩欧美久久| 蜜臀av性久久久久蜜臀aⅴ| 亚洲综合激情另类小说区| 国产欧美精品在线观看| 色婷婷综合久色| 91小视频在线| 91色视频在线| 91在线播放网址| av爱爱亚洲一区| 成人性生交大合| 国产东北露脸精品视频| 久草精品在线观看| 久久91精品久久久久久秒播| 日日噜噜夜夜狠狠视频欧美人| 性欧美疯狂xxxxbbbb| 亚洲3atv精品一区二区三区| 亚洲欧美综合另类在线卡通| 一区二区三区加勒比av| 亚洲精品水蜜桃| 亚洲美腿欧美偷拍| 亚洲精品成人少妇| 天天综合日日夜夜精品| 免费成人av资源网| 久久精品99久久久| 老鸭窝一区二区久久精品| 国产一区二区精品久久99| 国模套图日韩精品一区二区| 亚洲成av人片在线观看| 欧美国产一区二区| 亚洲男人的天堂一区二区 | 国产又黄又大久久| 国产精品1区2区| 国产一区二区精品在线观看| 成人黄色片在线观看| 91麻豆国产福利在线观看| 色噜噜狠狠成人网p站| 欧美综合天天夜夜久久| 在线观看一区二区视频| 欧美群妇大交群中文字幕| 日韩精品一区二区三区四区| 欧美伊人久久大香线蕉综合69| fc2成人免费人成在线观看播放| 在线观看国产精品网站| 日韩免费高清av| 日韩一区在线看| 亚洲在线成人精品| 粉嫩av一区二区三区粉嫩| 色伊人久久综合中文字幕| 777午夜精品视频在线播放| 久久久久久久久免费| 亚洲三级电影网站| 日本特黄久久久高潮| 一本到不卡免费一区二区| 日韩丝袜情趣美女图片| 中文字幕一区二区三区四区| 一区二区三区日韩欧美| 免费成人在线观看视频| 韩国v欧美v亚洲v日本v| 色先锋资源久久综合| 日韩欧美激情在线| 亚洲欧美日韩一区二区三区在线观看| 天天色综合成人网| 成人一区二区在线观看| 制服丝袜中文字幕一区| 中文字幕一区二区三区精华液| 久久狠狠亚洲综合| 色狠狠色狠狠综合| 久久久精品天堂| 日本成人超碰在线观看| 99久久免费精品| 26uuu国产在线精品一区二区| 亚洲图片欧美综合| 美洲天堂一区二卡三卡四卡视频 | 欧美日韩三级在线| 国产偷国产偷亚洲高清人白洁| 午夜影视日本亚洲欧洲精品| 高清av一区二区| 欧美电视剧在线观看完整版| 一区二区三区成人在线视频| 大陆成人av片| 久久综合色天天久久综合图片| 午夜久久电影网| 色先锋久久av资源部|