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

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

?? gamecanvas.java

?? 為解壓縮文件
?? JAVA
?? 第 1 頁 / 共 2 頁
字號(hào):
/*
 * GameCanvas.java
 *
 * Copyright 2001 SkyArts. All Rights Reserved.
 */
import javax.microedition.lcdui.*;
import java.util.*;

/**
 * 游戲的描繪與操作所用的類
 *
 * @author  Hideki Yonekawa
 * @version 1.0
 */
class GameCanvas extends Canvas implements Runnable, CommandListener {
	/** 儲(chǔ)存橫向長(zhǎng)度的變量  */
	private int					screenWidth;
	/** 儲(chǔ)存縱向長(zhǎng)度的變量 */
	private int					screenHeight;

	/** 儲(chǔ)存SpaceShooter對(duì)象的變量 */
	private SpaceShooter		spaceShooter;

	/** 儲(chǔ)存使用在標(biāo)題之圖像的變量 */
	private Image				titleImg;

	/** 儲(chǔ)存自機(jī)類別之對(duì)象的變量 */
	private MyShip			myShip			= new MyShip();

	/** 儲(chǔ)存自機(jī)飛彈類別之對(duì)象的數(shù)組變量 */
	private MyMissile[]		myMissiles		= new MyMissile[] {
		new MyMissile(),
		new MyMissile(),
		new MyMissile(),
		new MyMissile(),
		new MyMissile()
	};
	/** 儲(chǔ)存自機(jī)之飛彈發(fā)射數(shù)的變量 */
	private int			myMissileCount;

	/** 儲(chǔ)存了UFO類別之對(duì)象的數(shù)組變量 */
	private UFO[]			ufos           		= new UFO[] {
		new UFO(myShip),
		new UFO(myShip),
		new UFO(myShip),
		new UFO(myShip),
		new UFO(myShip),
		new UFO(myShip),
		new UFO(myShip)
	};
	/** 儲(chǔ)存了UFO之使用數(shù)的變量 */
	private int			ufoCount;

	/** 儲(chǔ)存了UFO之飛彈類別對(duì)象的數(shù)組變量 */
	private UFOMissile[]		ufoMissiles		= new UFOMissile[] {
		new UFOMissile(),
		new UFOMissile(),
		new UFOMissile(),
		new UFOMissile(),
		new UFOMissile(),
		new UFOMissile(),
		new UFOMissile(),
		new UFOMissile(),
		new UFOMissile(),
		new UFOMissile()
	};
	/** 儲(chǔ)存了UFO之飛彈發(fā)射數(shù)的變量 */
	private int			ufoMissileCount;

	/** 用來儲(chǔ)存描繪的間隔(INTERVAL)的常量 */
	private static final long	DRAW_INTERVAL		= 100;

	/** 顯示暫停狀態(tài)的標(biāo)志 */
	private	boolean			isPaused;

	/** 代表游戲循環(huán)停止的變量 */
	private boolean			isStopped;

	/** 儲(chǔ)存了操作UFO的動(dòng)態(tài)時(shí)所使用之計(jì)數(shù)的變量 */
	private int			tickCount4UFO;

	/** 用來改變UFO的出現(xiàn)之Random變量 */
	private Random			random				= new Random();

	/** Start指令變量 */
	private Command				startCmd		= new Command("Start", Command.SCREEN, 5);
	/** Exit指令變量 */
	private Command				exitCmd			= new Command("Exit", Command.SCREEN, 1);
	/** Pause指令變量 */
	private Command				pauseCmd		= new Command("Pause", Command.SCREEN, 5);
	/** Resume指令變量 */
	private Command				resumeCmd		= new Command("Resume", Command.SCREEN, 5);
	/** Quit指令變量 */
	private Command				quitCmd			= new Command("Quit", Command.SCREEN, 1);

	/** 儲(chǔ)存分?jǐn)?shù)的變量 */
	private long				score;

	/** 儲(chǔ)存最高分?jǐn)?shù)的變量 */
	private long				highScore		= 0;

	/** 用來儲(chǔ)存默認(rèn)分?jǐn)?shù)的常量 */
	private static final long	        DEFAULT_SCORE		= 100;

	/** 儲(chǔ)存生命點(diǎn)數(shù)的變量 */
	private int				lives;

	/** 用來儲(chǔ)存默認(rèn)之生命點(diǎn)數(shù)的常量 */
	private static final int	DEFAULT_LIVES		= 3;

	/** 儲(chǔ)存默認(rèn)字體的變量 */
	private Font				defFont			= Font.getDefaultFont();

	/** 儲(chǔ)存分?jǐn)?shù)顯示部分之高度的常量(設(shè)定到默認(rèn)字體高度) */
	private static final int	SCORE_AREA		 = Font.getDefaultFont().getHeight();

	/** 代表標(biāo)題顯示狀態(tài)的常量 */
	private static final short	TITLE			= 0;
	/** 代表游戲開始顯示狀態(tài)的常量 */
	private static final short	GAME_START		= 1;
	/** 代表游戲中顯示狀態(tài)的常量 */
	private static final short	GAME_PLAYING		= 2;
	/** 代表游戲結(jié)束顯示狀態(tài)的常量 */
	private static final short	GAME_END		= 5;
	/** 儲(chǔ)存現(xiàn)在顯示狀態(tài)的變量 */
	private short			gameState;

	/** 構(gòu)造函數(shù) */
	GameCanvas(SpaceShooter spaceShooter) {
		this.spaceShooter = spaceShooter;
		//取得畫面的可描繪范圍
		screenWidth = getWidth();
		screenHeight = getHeight();

		//取得標(biāo)題圖像
		try {
			titleImg = Image.createImage("/title.png");
		}catch(Exception e) {}

		//登錄指令監(jiān)聽
		setCommandListener(this);

		//將游戲的狀態(tài)變成顯示標(biāo)題
		gameState = TITLE;
	}

	/** 進(jìn)行游戲之初始化的方法 */
	private void doGameInit() {
		//清除分?jǐn)?shù)
		score = 0;
		//將自機(jī)的位置設(shè)定于中央
		myShip.setX((screenWidth - myShip.getWidth()) /2);
		myShip.setY(screenHeight - myShip.getHeight());
		myShip.setHit(false);//清除Hit狀態(tài)
		//將生命點(diǎn)數(shù)設(shè)為默認(rèn)值
		lives = DEFAULT_LIVES;

		//清除自機(jī)飛彈
		for(int i=0; i < myMissiles.length; i++) {
			myMissiles[i].setAlive(false);
		}
		//清除自機(jī)飛彈數(shù)
		myMissileCount = 0;

		//清除UFO
		for(int i=0; i < ufos.length; i++) {
			ufos[i].setAlive(false);
		}
		//清除UFO數(shù)
		ufoCount = 0;

		//清除UFO飛彈
		for(int i=0; i < ufoMissiles.length; i++) {
			ufoMissiles[i].setAlive(false);
		}
		//清除UFO飛彈數(shù)
		ufoMissileCount = 0;

		//清除要讓UFO出現(xiàn)時(shí)所使用的Tick計(jì)數(shù)
		tickCount4UFO = 0;

		//清除游戲循環(huán)停止標(biāo)志
		isStopped = false;
		//清除暫停標(biāo)志
		isPaused = false;
	}

	/** MIDlet的startApp()被調(diào)用出來時(shí)所調(diào)用的方法 */
	void doStartApp() {
		//根據(jù)現(xiàn)在的狀態(tài)來操作運(yùn)作
		switch(gameState) {
			case TITLE:		//顯示標(biāo)題時(shí)
				doTitle();
			break;

			case GAME_START:	//游戲開始時(shí)
			case GAME_PLAYING:	//游戲中
				//進(jìn)行暫停
				isPaused = true;
				//停止游戲循環(huán)
				isStopped = true;

				//以防萬一刪除關(guān)卡中的指令
				removeCommand(pauseCmd);
				removeCommand(resumeCmd);
				//新增Resume指令
				addCommand(resumeCmd);
			break;

			default:		//上述情形以外時(shí)
				//解除暫停
				isPaused = false;
			break;
		}
	}

	/** MIDlet的pauseApp()方法被調(diào)用出來時(shí)所調(diào)用的方法 */
	void doPauseApp() {
		switch(gameState) {
			case TITLE:				//顯示標(biāo)題時(shí)
			break;

			default:				//上述情形以外時(shí)
				//暫停
				isPaused = true;
				//停止游戲循環(huán)
				isStopped = true;
			break;
		}
	}

	/** 進(jìn)行標(biāo)題顯示的方法 */
	private void doTitle() {
		//將游戲的狀態(tài)設(shè)為顯示標(biāo)題
		gameState = TITLE;

		//以防萬一先將關(guān)卡中的指令刪除
		removeCommand(pauseCmd);
		removeCommand(resumeCmd);
		removeCommand(quitCmd);

		//顯示標(biāo)題畫面
		repaint();
		//新增指令
		addCommand(exitCmd);
		addCommand(startCmd);
	}

	/** 啟動(dòng)描繪線程的方法 */
	private void doThreadStart() {
		new Thread(this).start();
	}

	/** 結(jié)束游戲的方法 */
	private void doGameStop() {
		//停止游戲循環(huán)
		isStopped = true;
		//設(shè)定最高分?jǐn)?shù)
		setHighScore(score);
	}

	/** 進(jìn)行暫停或是重新開始的方法 */
	private void doPauseOrResume() {
		if(isPaused) {
		//暫停時(shí)
			//重新開始
			isPaused = false;
			isStopped = false;
			doThreadStart();
		}else {
		//不是暫停時(shí)
			//暫停
			isPaused = true;
			doGameStop();
		}// end if
		repaint();
	}

	/**
	 * 進(jìn)行描繪的方法,通常不會(huì)從自類別來調(diào)用
	 * @param	g	Graphics對(duì)象
	 */
	protected void paint(Graphics g) {
		//以黑色清除背景
		g.setColor(0x00000000);
		g.fillRect(0, 0, screenWidth, screenHeight);

		g.setFont(defFont);

		String drawSt;
		int drawX, drawY, stWidth;
		int stHeight = defFont.getHeight();

		//根據(jù)游戲狀態(tài)來改變描繪內(nèi)容
		switch(gameState) {
			case TITLE://顯示標(biāo)題時(shí)
				//描繪標(biāo)題圖像
				drawX = (screenWidth - titleImg.getWidth()) /2;
				g.drawImage(titleImg, drawX, 0, Graphics.TOP|Graphics.LEFT);

				//顯示最高分?jǐn)?shù)
				g.setColor(0x00FFFFFF);
				g.setFont(defFont);
				drawSt = "High Score";
				drawX = (screenWidth - defFont.stringWidth(drawSt)) / 2;
				drawY = titleImg.getHeight() -5;
				g.drawString(drawSt, drawX, drawY, Graphics.TOP|Graphics.LEFT);
				drawX = drawX + defFont.stringWidth(drawSt) - defFont.stringWidth(String.valueOf(highScore));
				drawY = drawY + stHeight;
				g.drawString(String.valueOf(highScore), drawX, drawY, Graphics.TOP|Graphics.LEFT);

				//顯示著作權(quán)
				drawSt = "Copyright 2001";
				drawX = (screenWidth - defFont.stringWidth(drawSt)) / 2;
				drawY = getHeight() - stHeight *2;
				g.drawString(drawSt, drawX, drawY, Graphics.TOP|Graphics.LEFT);

				drawSt = "SkyArts.com";
				drawX = (screenWidth - defFont.stringWidth(drawSt)) / 2;
				drawY = drawY + stHeight;
				g.drawString(drawSt, drawX, drawY, Graphics.TOP|Graphics.LEFT);
			return;

			case GAME_START://游戲開始時(shí)
				//描繪游戲開始畫面
				g.setColor(0x00FFFFFF);
				drawSt = "Ready go !";
				stWidth = defFont.stringWidth(drawSt);
				drawX = (screenWidth - stWidth) / 2;
				drawY = (screenHeight - stHeight) / 2;
				g.drawString(drawSt, drawX, drawY, Graphics.TOP|Graphics.LEFT);
			return;

			case GAME_PLAYING:
			case GAME_END:
			//游戲中或是游戲結(jié)束時(shí)
				g.setColor(0x00FFFFFF);
				//將分?jǐn)?shù)描繪到左邊
				drawSt = "S:" + String.valueOf(score);
				g.drawString(drawSt, 0, 0, Graphics.TOP|Graphics.LEFT);

				//將生命點(diǎn)數(shù)描繪到右邊
				drawSt = "L:" + String.valueOf(lives);
				g.drawString(drawSt, screenWidth- defFont.stringWidth(drawSt), 0, Graphics.TOP|Graphics.LEFT);

				//描繪自機(jī)
				myShip.doDraw(g);

				//描繪UFO
				for(int i=0; i < ufos.length; i++) {
					ufos[i].doDraw(g);
				}

				//描繪自機(jī)飛彈
				for(int i=0; i < myMissiles.length; i++) {
					myMissiles[i].doDraw(g);
				}

				//描繪UFO飛彈
				for(int i=0; i < ufoMissiles.length; i++) {
					ufoMissiles[i].doDraw(g);
				}

				//在暫停時(shí)等畫面中顯示文本
				switch(gameState) {
					case GAME_PLAYING://游戲中
						if(isPaused) {
						//顯示代表暫停的字符串
							drawSt = "Pause";
						}else {
						//不是暫停時(shí)就return
							return;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情五月婷婷综合网| 久久国产精品72免费观看| 欧美一区二区三区免费观看视频| 国产精品自拍av| 五月激情综合色| 国产精品色一区二区三区| 欧美一级在线免费| 91麻豆免费观看| 国产成人在线观看免费网站| 日韩国产精品大片| 一级特黄大欧美久久久| 久久免费的精品国产v∧| 日韩一区二区在线播放| 日本高清不卡一区| av一区二区三区黑人| 国产精品一区久久久久| 精品亚洲欧美一区| 亚洲第一会所有码转帖| 自拍av一区二区三区| 久久精品视频在线免费观看 | 欧美日韩亚州综合| 色域天天综合网| 成人99免费视频| 国产精品99久| 国内精品久久久久影院薰衣草| 爽好久久久欧美精品| 亚洲午夜影视影院在线观看| 亚洲美女视频在线观看| 国产精品久久久一本精品| 国产亚洲欧洲997久久综合| 欧美成人一区二区三区片免费 | 91高清在线观看| 91在线porny国产在线看| 成人久久18免费网站麻豆| 国产精品99久久久久久似苏梦涵| 韩国v欧美v日本v亚洲v| 国产乱对白刺激视频不卡| 紧缚捆绑精品一区二区| 久久丁香综合五月国产三级网站| 青青国产91久久久久久| 麻豆精品在线播放| 精品无人区卡一卡二卡三乱码免费卡 | 亚洲精品免费在线播放| 亚洲色图清纯唯美| 国产精品久久久久永久免费观看| 国产精品每日更新| 国产精品国产三级国产三级人妇| 国产女同性恋一区二区| 国产女同互慰高潮91漫画| 国产精品电影一区二区| 亚洲色图都市小说| 亚洲午夜久久久久久久久电影网 | 亚洲午夜久久久久久久久电影院 | 91看片淫黄大片一级在线观看| 99天天综合性| 在线免费观看视频一区| 欧美系列在线观看| 91精品欧美综合在线观看最新| 日韩欧美久久久| 久久婷婷国产综合国色天香| 国产日韩欧美不卡| 亚洲人吸女人奶水| 视频一区二区中文字幕| 国产中文字幕一区| 99在线精品免费| 欧美日本高清视频在线观看| 精品国产精品一区二区夜夜嗨| 1000部国产精品成人观看| 亚洲男同1069视频| 日韩不卡一二三区| 国产99久久久国产精品潘金网站| 91浏览器在线视频| 日韩视频国产视频| 中文字幕成人av| 婷婷丁香激情综合| 国产.欧美.日韩| 欧美日韩一区在线| 久久久www免费人成精品| 亚洲码国产岛国毛片在线| 日韩av在线发布| av电影在线观看不卡| 555夜色666亚洲国产免| 中文一区二区在线观看| 午夜免费久久看| 豆国产96在线|亚洲| 91精品婷婷国产综合久久性色 | 亚洲mv大片欧洲mv大片精品| 国内精品免费**视频| 在线看国产一区| 久久综合久久鬼色| 亚洲精品一二三区| 国产精品77777| 91精品欧美福利在线观看| 国产精品乱码一区二区三区软件| 日韩精品三区四区| 91免费小视频| 国产视频一区在线观看| 日本成人中文字幕在线视频| 不卡av在线网| 精品国产露脸精彩对白| 亚洲成av人影院在线观看网| 波多野结衣中文一区| 日韩亚洲欧美综合| 亚洲免费成人av| 成a人片国产精品| 久久久久高清精品| 免费精品视频最新在线| 欧美日韩一区不卡| 亚洲欧美自拍偷拍| 国产精品自拍一区| 欧美www视频| 男男成人高潮片免费网站| 欧美图片一区二区三区| 最新不卡av在线| 成人综合在线观看| 久久久久久久久久久久久夜| 麻豆freexxxx性91精品| 91麻豆精品国产自产在线| 又紧又大又爽精品一区二区| av在线不卡电影| 国产精品久久久久婷婷| 成人精品免费网站| 欧美激情一区二区三区不卡| 国产精品一区久久久久| 久久综合av免费| 国产一区二区视频在线| 日韩欧美成人一区| 美女一区二区三区| 欧美tk—视频vk| 久久成人免费电影| 亚洲精品在线观看网站| 韩国欧美一区二区| 国产亚洲欧美日韩在线一区| 国产一区二区精品久久| 2019国产精品| 丁香婷婷综合色啪| 亚洲视频网在线直播| 色哟哟国产精品| 一区二区三区欧美在线观看| 色悠悠久久综合| 亚洲一区二区影院| 欧美日韩精品免费| 美女一区二区久久| 26uuu国产电影一区二区| 国产精品1区2区3区在线观看| 国产亲近乱来精品视频| 99久久久精品免费观看国产蜜| 国产精品成人免费在线| 色妹子一区二区| 日韩精品一卡二卡三卡四卡无卡| 51精品国自产在线| 久久66热偷产精品| 欧美激情一区二区三区全黄| 99精品国产热久久91蜜凸| 亚洲一区在线观看免费| 欧美一级高清大全免费观看| 韩国精品免费视频| 最新热久久免费视频| 欧美日韩一级二级三级| 久久99久久久久久久久久久| 国产欧美一区二区在线| 色婷婷综合久久| 六月丁香婷婷久久| 亚洲国产精品国自产拍av| 欧美亚洲一区二区在线| 老司机免费视频一区二区| 国产精品毛片高清在线完整版 | 久久久影视传媒| 91在线视频18| 午夜欧美在线一二页| 久久久综合网站| 在线国产电影不卡| 久久97超碰色| 亚洲色图在线看| 日韩亚洲欧美高清| 99国产麻豆精品| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产欧美一区二区三区网站| 欧美日韩视频在线观看一区二区三区 | 日韩精品一区二区在线观看| 成人91在线观看| 麻豆91在线看| 一区二区三区欧美日韩| 26uuu国产一区二区三区| 99精品欧美一区二区三区综合在线| 日韩国产欧美视频| 亚洲欧美激情插| 久久欧美一区二区| 欧美系列一区二区| av激情综合网| 国产精品资源在线看| 视频在线观看一区| 亚洲精品视频在线| 久久一夜天堂av一区二区三区| 欧美性极品少妇| 91在线观看美女| 粉嫩绯色av一区二区在线观看| 全国精品久久少妇| 亚洲午夜精品在线| 亚洲欧洲精品一区二区三区不卡|