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

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

?? gamecanvas.java

?? 為解壓縮文件
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
						}
					break;

					case GAME_END://游戲結束時
						//顯示游戲結束字符串
						drawSt = "Game over";
					break;

					default:
					return;
				}
				stWidth = defFont.stringWidth(drawSt);
				drawX = (screenWidth-stWidth) / 2;
				drawY = (screenHeight - (stHeight)) / 2;

				//描繪文本框
				g.setColor(0x00BBBBBB);
				g.fillRoundRect(drawX-2, drawY+2, stWidth+9, stHeight+2, 5, 5);
				g.setColor(0x00000000);
				g.fillRoundRect(drawX-6, drawY-2, stWidth+11, stHeight+4, 5, 5);
				g.setColor(0x00FFFFFF);
				g.fillRoundRect(drawX-4, drawY, stWidth+7, stHeight, 5, 5);

				//輸出消息
				g.setColor(0x00000000);
				g.drawString(drawSt, drawX, drawY, Graphics.TOP|Graphics.LEFT);
			break;
		}
	}

	/** 指定的事件發生時被調用出來的方法 */
	public void commandAction(Command c, Displayable s) {
		if(c == startCmd) {//Start指令
			//初始化游戲以開始游戲
			doGameInit();
			gameState = GAME_START;
			doThreadStart();

		}else if(c == exitCmd) {//EXIT指令
			//調用出SpaceShooter類別的doExit方法以結束MIDlet本身
			spaceShooter.doExit();

		}else if(c == pauseCmd) {//Pause指令
			//交換Pause指令與Resume指令,調用出Pause、Resume處理方法
			removeCommand(pauseCmd);
			addCommand(resumeCmd);
			doPauseOrResume();

		}else if(c == resumeCmd) {//Resume指令
			//交換Resume指令與Pause指令,調用出Pause、Resume處理方法
			removeCommand(resumeCmd);
			addCommand(pauseCmd);
			doPauseOrResume();

		}else if(c == quitCmd) {//Quit指令
			//調用出游戲結束方法
			doGameStop();
			//刪除指令
			removeCommand(pauseCmd);
			removeCommand(resumeCmd);
			removeCommand(quitCmd);
			//顯示標題
			doTitle();
		}
	}

	/** 按鍵按下事件發生時被調用出來的方法 */
	protected synchronized void keyPressed(int keyCode) {
		if(	gameState != GAME_PLAYING ||
			(gameState == GAME_PLAYING && isPaused)) {
		//非游戲中,或在游戲中暫停時為return
			return;
		}

		//為清除按鍵時不處理
		if(keyCode == 0) return;	//for KDDI

		int gameCode = getGameAction(keyCode);
		switch(gameCode) {
			case LEFT:	//按下向左按鍵時
				doLeft();
			break;

			case RIGHT:	//按下向右按鍵時
				doRight();
			break;

			case FIRE:	//按下Fire按鍵時
			case UP:	//按下向上按鍵時
				doFire();
			break;
		}
	}

	/** 壓下按鍵狀態時被重復調用的方法 */
	protected void keyRepeated(int keyCode) {
		keyPressed(keyCode);
	}

	/** 線程的運作部分 */
	public void run() {
		try {
			switch(gameState) {
				case GAME_START:	//游戲開始時
					//先將標題的指令刪除
					removeCommand(startCmd);
					removeCommand(exitCmd);

					//顯示游戲開始畫面
					repaint();
					Thread.sleep(1500);

					//新增指令
					addCommand(quitCmd);
					if(! isPaused) {
						addCommand(pauseCmd);
					}

					//將狀態設為游戲中,然后就此轉移到游戲中的處理
					gameState = GAME_PLAYING;

				case GAME_PLAYING:	//游戲中
					repaint();
					//游戲結束標志
					boolean isGameOver = false;

					//開始游戲循環
					while(! isStopped) {//在Stop前持續循環
						//再描繪
						repaint();

						//移動自機(利用在爆炸顯示時)
						myShip.doMove();

						//UFO處理
						for(int i=0; i < ufos.length; i++) {
							if(ufos[i].isAlive()) {
							//只處理在Alive狀態的UFO
								//移動UFO
								ufos[i].doMove();
								if(! ufos[i].isAlive() ||
									ufos[i].getX()+ufos[i].getWidth() < 0 ||
									ufos[i].getX() > screenWidth) {
								//移動UFO之后不是Alive狀態時
								//或是UFO跑到畫面外時
									//設定UFO不是Alive狀態,減少UFO數目
									ufos[i].setAlive(false);
									ufoCount--;

									//若UFO為命中狀態的話,在分數中新增DEFAULT_SCORE
									if(ufos[i].isHit()) score = score + DEFAULT_SCORE;

								}else if(ufoMissileCount < ufoMissiles.length &&
										ufos[i].isDropBomb()) {
								//UFO在Alive狀態下發射飛彈時
									//進行炸彈處理
									//在飛彈數組中尋找不是Alive狀態的飛彈
									for(int j=0; j < ufoMissiles.length; j++) {
										if(! ufoMissiles[j].isAlive()) {
										//不是Alive狀態的飛彈時
											//符合飛彈的座標來攻擊
											ufoMissiles[j].setX((
												ufos[i].getWidth() - ufoMissiles[j].getWidth()) /2 +
														ufos[i].getX());
											ufoMissiles[j].setY(ufos[i].getY() + ufos[i].getHeight());
											ufoMissiles[j].setAlive(true);
											ufoMissileCount++;
											break;
										}
									}
								}
							}
						}// end for

						//UFO飛彈處理
						for(int i=0; i < ufoMissiles.length; i++) {
							if(ufoMissiles[i].isAlive()) {
							//只處理Alive狀態的UFO飛彈
								//移動UFO飛彈
								ufoMissiles[i].doMove();

								//命中判定
								if(myShip.isOverlaps(ufoMissiles[i])) {
								//UFO飛彈與自機重疊時
									myShip.setHit(true);
									//刪除飛彈
									ufoMissiles[i].setAlive(false);
									ufoMissileCount--;

									//減少生命點數
									lives--;
									if(lives < 1) {
									//當生命點數用完時
										//刪除指令
										removeCommand(pauseCmd);
										removeCommand(resumeCmd);
										removeCommand(quitCmd);
										//建立游戲結束標志
										isGameOver = true;
										//抽出for語法
										break;
									}

								}else if(ufoMissiles[i].getY() > getHeight()) {
								//UFO飛彈跑到畫面外時
									//將UFO飛彈設為無效
									ufoMissiles[i].setAlive(false);
									ufoMissileCount--;
								}
							}
						}

						//自機飛彈處理
						for(int i=0; i < myMissiles.length; i++) {
							if(myMissiles[i].isAlive()) {
							//只處理Alive狀態的自機飛彈
								//移動自機飛彈
								myMissiles[i].doMove();

								//命中判定
								for(int j=0; j < ufos.length; j++) {
									if(ufos[j].isAlive() && ! ufos[j].isHit()) {
									//當UFO為在Alive狀態,而不是被擊中狀態時
										if(ufos[j].isOverlaps(myMissiles[i])) {
										//自機飛彈與UFO重疊時
											//將UFO設為擊中狀態
											ufos[j].setHit(true);

											//刪除飛彈
											myMissiles[i].setAlive(false);
											myMissileCount--;
											break;
										}
									}
								}
							}
							if(	myMissiles[i].isAlive() &&
								myMissiles[i].getY() + myMissiles[i].getHeight() < SCORE_AREA)
							{
							//從畫面消失時
								//刪除自機飛彈
								myMissiles[i].setAlive(false);
								myMissileCount--;
							}
						}// end for

						if(isGameOver) {
						//當游戲結束標志建立時
							//刪除指令
							removeCommand(pauseCmd);
							removeCommand(resumeCmd);
							removeCommand(quitCmd);

							//結束這個循環
							doGameStop();

							//顯示游戲結束,再等待一段時間后顯示標題
							gameState = GAME_END;
							repaint();
							Thread.sleep(5000);
							doTitle();
							break;

						}else {
						//游戲未結束時
							//讓UFO出現
							doEmerge4UFO();
							//在描繪間隔中待命
							Thread.sleep(DRAW_INTERVAL);
						}
					}// end while
				break;
			}
		}catch(Exception e) {}
	}

	/** 左按鍵被壓下時所調用的方法 */
	private void doLeft() {
		//向左移動自機大小的一半
		int tmpX = myShip.getX() - (myShip.getWidth() /2);
		if(tmpX < 0) {
			tmpX = 0;
		}
		myShip.setX(tmpX);
	}

	/** 右按鍵被壓下時所調用的方法 */
	private void doRight() {
		//向右移動自機大小的一半
		int tmpX = myShip.getX() + (myShip.getWidth() /2);
		if(tmpX > screenWidth -myShip.getWidth()) {
			tmpX = screenWidth -myShip.getWidth();
		}
		myShip.setX(tmpX);
	}

	/** 按下決定按鍵、下按鍵時被調用的方法 */
	private void doFire() {
		if(myMissileCount < myMissiles.length) {
		//比飛彈數的上限還少時
			for(int i=0; i < myMissiles.length; i++) {
				if(! myMissiles[i].isAlive()) {
				//自機飛彈不是Alive狀態時
					//發射飛彈
					myMissiles[i].setX((myShip.getWidth() - myMissiles[i].getWidth()) /2 +
										myShip.getX());
					myMissiles[i].setY(myShip.getY() - myMissiles[i].getHeight());
					myMissiles[i].setAlive(true);
					myMissileCount++;
					break;
				}
			}
		}
	}

	/** 要讓UFO出現時所調用的方法 */
	private void doEmerge4UFO() {
		//在Tick計數中增加1
		tickCount4UFO++;
		if(ufoCount < 1 || tickCount4UFO > 4) {
		//UFO為0時,或是是Tick計數比4還大時
			tickCount4UFO = 0;

			if(ufoCount < ufos.length) {
			//UFO的數目比上限還少時

				//取得亂數的int值
				int tmpInt = random.nextInt() % 2;
				if(tmpInt == 1 || tmpInt == -1) {
				//讓其出現時

					tmpInt = random.nextInt() % 2;
					//尋找不是Alive狀態的UFO
					UFO ufo;
					for(int i=0; i < ufos.length; i++) {
						if(! ufos[i].isAlive()) {
							if(tmpInt == 0) {
							//從右邊出現時
								tmpInt = random.nextInt() % 2;//改變高度
								if(tmpInt < 0) tmpInt = tmpInt* (-1);
								ufos[i].setDirection(UFO.DIRECTION_RIGHT);
								ufos[i].setX(0 +2);
								ufos[i].setY(SCORE_AREA + (((ufos[i].getHeight() +2) *2) * tmpInt));

							}else {
							//從左邊出現時
								tmpInt = random.nextInt() % 2;//改變高度
								if(tmpInt < 0) tmpInt = tmpInt* (-1);
								ufos[i].setDirection(UFO.DIRECTION_LEFT);
								ufos[i].setX((screenWidth - ufos[i].getWidth() / 2) -2);
								ufos[i].setY(SCORE_AREA +
											(((ufos[i].getHeight() +2) *2) * tmpInt) +
											(ufos[i].getHeight() +2));
							}
							ufos[i].setAlive(true);
							ufoCount++;
							break;
						}
					}
				}
			}
		}
	}

	/** 設定最高分數的方法 */
	private void setHighScore(long score) {
		if(score > highScore) {
			highScore = score;
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美伊人精品成人久久综合97| 26uuu亚洲综合色欧美| 成人黄色免费短视频| 国产综合久久久久久久久久久久| 免费成人在线播放| 久久狠狠亚洲综合| 精品夜夜嗨av一区二区三区| 精品一区二区三区不卡 | 国产馆精品极品| 狠狠色丁香婷婷综合| 国产在线不卡一区| 国产一区二区三区四区五区入口| 国产乱子伦视频一区二区三区| 国精产品一区一区三区mba桃花 | av在线不卡网| 99久久综合狠狠综合久久| 99久久精品免费看国产免费软件| 欧美高清视频不卡网| 91精品国产91综合久久蜜臀| 欧美一级免费观看| 精品美女一区二区| 久久久久久久久久久电影| 中文字幕+乱码+中文字幕一区| 中文字幕中文在线不卡住| 亚洲精品日韩综合观看成人91| 午夜精品一区二区三区三上悠亚| 蜜桃视频在线观看一区二区| 国产自产高清不卡| 成人免费高清视频在线观看| 日本福利一区二区| 欧美电影一区二区| 久久久精品tv| 中文字幕制服丝袜成人av | 五月婷婷另类国产| 久久99久久久久久久久久久| k8久久久一区二区三区| 欧美丝袜自拍制服另类| 精品日韩99亚洲| 国产精品乱人伦| 亚洲国产精品一区二区尤物区| 久久国产欧美日韩精品| jvid福利写真一区二区三区| 51久久夜色精品国产麻豆| 久久精品视频网| 夜夜嗨av一区二区三区网页| 经典三级视频一区| 色哟哟国产精品| 欧美大片拔萝卜| 日韩理论片一区二区| 丝袜美腿成人在线| 床上的激情91.| 日韩一区二区影院| 国产精品网站在线播放| 日本麻豆一区二区三区视频| 成人ar影院免费观看视频| 欧美高清hd18日本| 国产精品少妇自拍| 日韩vs国产vs欧美| 91丨九色porny丨蝌蚪| 欧美一级欧美三级在线观看 | 久久er精品视频| 在线看国产一区| 日本一区二区三区在线不卡| 午夜久久久影院| 91免费视频网址| 久久色视频免费观看| 亚洲最新在线观看| 黄页视频在线91| 91.com在线观看| 亚洲美女在线一区| 国产99久久久国产精品潘金网站| 欧美精品在线一区二区三区| 中文字幕色av一区二区三区| 狠狠色综合色综合网络| 欧美日韩三级一区二区| 亚洲欧美日韩国产另类专区| 国产精品538一区二区在线| 欧美一区二区网站| 蜜桃精品在线观看| 欧美在线啊v一区| 亚洲三级在线免费观看| 国产99精品国产| 国产亚洲欧美色| 国产一区福利在线| 精品久久久久久久久久久院品网| 午夜精品123| 欧美亚洲高清一区| 亚洲精品自拍动漫在线| jvid福利写真一区二区三区| 中文字幕精品一区| 国产成人在线视频免费播放| 久久―日本道色综合久久| 免费视频最近日韩| 欧美一级艳片视频免费观看| 日韩电影在线观看一区| 欧美剧情电影在线观看完整版免费励志电影 | 韩国三级在线一区| 日韩欧美精品三级| 蜜桃精品视频在线| 欧美大胆人体bbbb| 久久精品国产久精国产| 日韩免费一区二区| 老汉av免费一区二区三区| 日韩欧美精品在线视频| 久久精品国产亚洲aⅴ| 精品国精品自拍自在线| 狠狠狠色丁香婷婷综合激情 | 精品日韩欧美一区二区| 韩国女主播一区二区三区| 精品久久国产字幕高潮| 精品午夜久久福利影院| 久久综合资源网| 成人网页在线观看| 中文字幕在线观看一区二区| 99精品在线观看视频| 亚洲一区在线看| 7777精品伊人久久久大香线蕉 | 日韩精品欧美精品| 欧美一级日韩免费不卡| 国产伦精品一区二区三区视频青涩| 久久综合色鬼综合色| 成人毛片老司机大片| 一区二区三区 在线观看视频| 欧美日韩一区二区在线观看视频| 日韩福利视频导航| 久久综合色婷婷| 不卡大黄网站免费看| 亚洲成国产人片在线观看| 日韩一区二区三区四区| 国产成人啪免费观看软件| 亚洲天堂福利av| 在线播放欧美女士性生活| 久久91精品国产91久久小草| 国产精品毛片高清在线完整版| 欧美午夜宅男影院| 国产在线精品一区在线观看麻豆| 欧美激情在线观看视频免费| 欧美在线免费视屏| 久久国产婷婷国产香蕉| 中文字幕一区在线| 欧美高清激情brazzers| 欧美日韩亚州综合| 久久国产精品99精品国产| 国产精品国产馆在线真实露脸 | 亚洲一级在线观看| www亚洲一区| 91精品办公室少妇高潮对白| 久久激五月天综合精品| 亚洲人成亚洲人成在线观看图片 | 日韩综合小视频| 国产蜜臀av在线一区二区三区| 在线观看区一区二| 国产高清不卡一区二区| 亚洲成人777| 国产精品精品国产色婷婷| 91精品国产综合久久小美女| 成人av手机在线观看| 丝袜美腿亚洲综合| 1000精品久久久久久久久| 欧美mv日韩mv国产网站| 欧美网站大全在线观看| 国产福利精品一区| 日韩精品免费专区| 亚洲区小说区图片区qvod| 久久香蕉国产线看观看99| 精品视频资源站| 国产91精品一区二区麻豆网站| 视频一区国产视频| 亚洲日本丝袜连裤袜办公室| 久久婷婷国产综合国色天香| 欧美日本在线播放| 91麻豆免费视频| 国产成人自拍网| 久久精品久久99精品久久| 亚洲电影在线免费观看| 中文字幕亚洲综合久久菠萝蜜| 欧美精品一区二区三区在线播放 | 国产精品久久网站| 精品国产伦一区二区三区观看方式| 欧美日韩中文一区| 成人激情视频网站| 国产精品亚洲人在线观看| 日本午夜精品视频在线观看| 亚洲人精品午夜| 中文字幕日韩一区| 国产欧美日韩另类视频免费观看| 日韩美女一区二区三区四区| 欧美色综合网站| 色欧美片视频在线观看| 成人h精品动漫一区二区三区| 国产精品一二三区在线| 激情欧美一区二区三区在线观看| 男人操女人的视频在线观看欧美| 亚洲综合999| 亚洲综合区在线| 亚洲香肠在线观看| 亚洲午夜一区二区三区| 亚洲亚洲人成综合网络| 亚洲国产精品影院| 亚洲成年人网站在线观看|