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

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

?? gamecanvas.java

?? 《MIDP手機游戲設計》是一本運用MIDP進行J2ME手機游戲編程的JAVA書籍
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
					if( pieces[centerPoint -1] == null &&
						pieces[centerPoint  +ROW_LENGTH -1] == null)
					{
					//在左下與左方沒有任何東西時向左移動
						pieces[centerPoint -1] = pieces[centerPoint +ROW_LENGTH];
						pieces[centerPoint +ROW_LENGTH] = null;

						//將方向變為向左
						currentDirection = DIRECTION_LEFT;
					}
				}
			break;

			case DIRECTION_LEFT:	//方向為向左時
				//因為要作順時鐘旋轉,所以要檢查上方
				if(centerPoint > ROW_LENGTH -1) {
				//當不在最上面的時候
					if( pieces[centerPoint -ROW_LENGTH] == null &&
						pieces[centerPoint -ROW_LENGTH -1] == null)
					{
					//在左上與上方都沒有東西時向上移動
						pieces[centerPoint -ROW_LENGTH] = pieces[centerPoint -1];
						pieces[centerPoint -1] = null;

						//將方向設為向上
						currentDirection = DIRECTION_UP;
					}
				}
			break;
		}
	}

	/** 按下左按鍵后被調用出來的方法 */
	private void doLeft() {
		switch(currentDirection) {
			case DIRECTION_UP:		//方向向上時
				if(centerPoint % ROW_LENGTH != 0) {
				//不是在最左邊的時候
					//檢查左方與左上
					if( pieces[centerPoint -1] == null &&
						pieces[centerPoint -ROW_LENGTH -1] == null)
					{
					//當左與左上都是空的時候
						//向左移動一格
						pieces[centerPoint -1] = pieces[centerPoint];
						pieces[centerPoint -ROW_LENGTH -1] = pieces[centerPoint -ROW_LENGTH];
						pieces[centerPoint] = null;
						pieces[centerPoint -ROW_LENGTH] = null;
						//移動中心位置
						centerPoint--;
					}
				}
			break;

			case DIRECTION_RIGHT:	//方向向右時
				//檢查左方
				if(centerPoint % ROW_LENGTH != 0) {
				//不是在最左邊的時候
					if( pieces[centerPoint -1] == null ) {
					//當左與左上都是空的時候
					//向左移動一格
						pieces[centerPoint -1] = pieces[centerPoint];
						pieces[centerPoint] = pieces[centerPoint +1];
						pieces[centerPoint +1] = null;
						//移動中心位置
						centerPoint--;
					}
				}
			break;

			case DIRECTION_DOWN:	//方向向下時
				//檢查左方與左下
				if(centerPoint % ROW_LENGTH != 0) {
				//不是在最左邊的時候
					if( pieces[centerPoint -1] == null &&
						pieces[centerPoint +ROW_LENGTH -1] == null ) {
					//當左與左下都是空的時候
						//向左移動一格
						pieces[centerPoint -1] = pieces[centerPoint];
						pieces[centerPoint +ROW_LENGTH -1] = pieces[centerPoint +ROW_LENGTH];
						pieces[centerPoint] = null;
						pieces[centerPoint +ROW_LENGTH] = null;
						//移動中心位置
						centerPoint--;
					}
				}
			break;

			case DIRECTION_LEFT:	//方向向下時
				//檢查左方
				if((centerPoint -1)% ROW_LENGTH != 0) {
				//不是在最左邊的時候
					if( pieces[centerPoint -1 -1] == null ) {
					//當附在左方的方塊不在最左邊、且左方為空的時候
						//向左移動一格
						pieces[centerPoint -1 -1] = pieces[centerPoint -1];
						pieces[centerPoint -1] = pieces[centerPoint];
						pieces[centerPoint] = null;
						//移動中心位置
						centerPoint--;
					}
				}
			break;
		}
	}

	/** 按下右按鍵時被調用出來的方法 */
	private void doRight() {
		switch(currentDirection) {
			case DIRECTION_UP:		//方向向上時
			if(centerPoint % ROW_LENGTH != ROW_LENGTH-1) {
			//不是在最右邊的時候
				//檢查右與右上
				if( pieces[centerPoint +1] == null &&
					pieces[centerPoint -ROW_LENGTH +1] == null ) {
				//當右與右上為空白的時候
					//向右移動一格
					pieces[centerPoint +1] = pieces[centerPoint];
					pieces[centerPoint -ROW_LENGTH +1] = pieces[centerPoint -ROW_LENGTH];
					pieces[centerPoint] = null;
					pieces[centerPoint -ROW_LENGTH] = null;
					//移動中心位置
					centerPoint++;
				}
			}
			break;

			case DIRECTION_RIGHT:	//方向向右時
				if((centerPoint +1) % ROW_LENGTH != ROW_LENGTH-1) {
				//不是在最右邊的時候
					//檢查右邊
					if( pieces[centerPoint +1 +1] == null ) {
					//當附在右方的方塊不在最右邊、且右方為空白的時候
						//向右移動一格
						pieces[centerPoint +1 +1] = pieces[centerPoint +1];
						pieces[centerPoint +1] = pieces[centerPoint];
						pieces[centerPoint] = null;
						//移動中心位置
						centerPoint++;
					}
				}
			break;

			case DIRECTION_DOWN:	//方向向下時
				if(centerPoint % ROW_LENGTH != ROW_LENGTH-1) {
				//不是在最右邊的時候
					//檢查右與右下
					if( pieces[centerPoint +1] == null &&
						pieces[centerPoint +ROW_LENGTH +1] == null ) {
					//當右與右下為空白的時候
						//向右移動一格
						pieces[centerPoint +1] = pieces[centerPoint];
						pieces[centerPoint +ROW_LENGTH +1] = pieces[centerPoint +ROW_LENGTH];
						pieces[centerPoint] = null;
						pieces[centerPoint +ROW_LENGTH] = null;
						//移動中心位置
						centerPoint++;
					}
				}
			break;

			case DIRECTION_LEFT:	//方向向左時
				if(centerPoint % ROW_LENGTH != ROW_LENGTH-1) {
				//不是在最右邊的時候
					//檢查右邊
					if( pieces[centerPoint +1] == null ) {
					//當右方為空白的時候
						//向右移動一格
						pieces[centerPoint +1] = pieces[centerPoint];
						pieces[centerPoint] = pieces[centerPoint -1];
						pieces[centerPoint -1] = null;
						//移動中心位置
						centerPoint++;
					}
				}
			break;
		}
	}

	/**
	 * 按下下按鍵或是向下落下時被調用的方法
	 * @return	boolean	當可以向下落下時就會傳回true、不能落下時就會傳回false
	 */
	private boolean doFall() {
		switch(currentDirection) {
			case DIRECTION_UP:		//方向為向上時
				//檢查正下方
				if(centerPoint < (COLUMN_LENGTH -1) * ROW_LENGTH) {
					//當不是最下方的時候
					if( pieces[centerPoint +ROW_LENGTH] == null ) {
						//當正下方為空白時
						//就往下一格
						pieces[centerPoint +ROW_LENGTH] = pieces[centerPoint];
						pieces[centerPoint] = pieces[centerPoint -ROW_LENGTH];
						pieces[centerPoint -ROW_LENGTH] = null;
						//移動中心位置
						centerPoint = centerPoint + ROW_LENGTH;
						return true;
					}
				}
			break;

			case DIRECTION_RIGHT:	//方向為向右時
			//檢查正下方與右下
				if(centerPoint < (COLUMN_LENGTH -1) * ROW_LENGTH) {
				//當不是最下方的時候
					if( pieces[centerPoint +ROW_LENGTH]  == null &&
						pieces[centerPoint +1 +ROW_LENGTH] == null ) {
					//當正下方與右下為空白時
						//就往下一格
						pieces[centerPoint +ROW_LENGTH] = pieces[centerPoint];
						pieces[centerPoint +1 +ROW_LENGTH] = pieces[centerPoint +1];
						pieces[centerPoint] = null;
						pieces[centerPoint +1] = null;
						//移動中心位置
						centerPoint = centerPoint +ROW_LENGTH;
						return true;
					}
				}
			break;

			case DIRECTION_DOWN:	//方向為向下時
			//檢查正下方
				if(centerPoint +ROW_LENGTH < (COLUMN_LENGTH -1) * ROW_LENGTH) {
				//當附屬的方塊不是最下方的時候
					if( pieces[centerPoint +ROW_LENGTH +ROW_LENGTH]  == null) {
						//當附屬在下面的方塊不是在最下面,而正下方為空白時						//往下移動一格
						pieces[centerPoint +ROW_LENGTH +ROW_LENGTH] = pieces[centerPoint +ROW_LENGTH];
						pieces[centerPoint +ROW_LENGTH] = pieces[centerPoint];
						pieces[centerPoint] = null;
						//移動中心位置
						centerPoint = centerPoint + ROW_LENGTH;
						return true;
					}
				}
			break;

			case DIRECTION_LEFT:	//當方向為向左時
			//調查正下方與左下
				if(centerPoint < (COLUMN_LENGTH -1) * ROW_LENGTH) {
					if( pieces[centerPoint +ROW_LENGTH]  == null &&
					pieces[centerPoint -1 +ROW_LENGTH] == null ) {
					//正下方與左下為空白時
						//往下移動一格
						pieces[centerPoint +ROW_LENGTH] = pieces[centerPoint];
						pieces[centerPoint -1 +ROW_LENGTH] = pieces[centerPoint -1];
						pieces[centerPoint] = null;
						pieces[centerPoint -1] = null;
						//移動中心位置
						centerPoint = centerPoint +ROW_LENGTH;
						return true;
					}
				}
			break;
		}
		return false;
	}


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

	/** 線程的運作部分 */
	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前持續循環
						if(isNextFall) {
						//落下下一個時
							if(	pieces[FALL_START_INDEX1] != null ||
								pieces[FALL_START_INDEX2] != null)
							{
							//無法落下下一個時就算游戲結束
								isGameOver = true;
								//將此循環結束
								doGameStop();
								pieces[FALL_START_INDEX1] = nextPieces[0];
								pieces[FALL_START_INDEX2] = nextPieces[1];
								break;
							}else {
							//讓下一個落下時
								pieces[FALL_START_INDEX1] = nextPieces[0];
								pieces[FALL_START_INDEX2] = nextPieces[1];
								currentDirection = DIRECTION_DEFAULT;
								centerPoint = FALL_START_INDEX1;
								isNextFall = false;
								//準備下一個方塊組
								nextPieces = getNextPieces();

								//加速落下速度
								fallCount++;
								if(fallCount > 4) {
									fallCount = 0;
									if(tickCount4Speed > 2) {
										tickCount4Speed--;
									}
								}
								isKeyEnable = true;
							}
						}else {
						//已經落下時
							tickCount4Fall++;
							if(tickCount4Fall == tickCount4Speed) {
							//為落下時機時
								tickCount4Fall = 0;

								if(! doFall()) {
								//不讓其落下后
									repaint();
									//使按鍵無效
									isKeyEnable = false;
									if(doDropDown()) {
									//不能若下全體方塊組、而能夠落下方塊時
										//暫停后進行下一個處理
										repaint();
										Thread.sleep(500);
									}

									//連鎖回數
									int chainCount = 1;
									while(true) {
										//檢查是否湊成同色
										//取得傳回放有湊成同色之Index之Vector的Vector
										Vector matchVect = doMatchCheck();
										int matchVectSize = matchVect.size();
										if(matchVectSize > 0) {
										//當有湊成同色的地方時
											repaint();
											Thread.sleep(200);

											boolean isDropDown = false;
											//檢查湊成同色的地方
											for(int i=0; i < matchVectSize; i++) {
												Vector inxVect = (Vector)matchVect.elementAt(i);
												int matchInxLeng = inxVect.size();
												if(matchInxLeng >= 4) {
												//當湊成4個以上
													//加上分數
													int tmpScore = DEFAULT_SCORE_VALUE;
													tmpScore = tmpScore + ((matchInxLeng-4) * DEFAULT_SCORE_VALUE);
													tmpScore = tmpScore * chainCount;
													score = score + tmpScore;

													isDropDown = true;
													for(int j=0; j < matchInxLeng; j++) {
													//清除各方塊
														Integer inxInteg = (Integer)inxVect.elementAt(j);
														pieces[inxInteg.intValue()] = null;
													}
												}
											}
											repaint();
											Thread.sleep(200);

											if(isDropDown) {
											//要刪除時就在暫停后進行下一個處理
												doDropDown();
												repaint();
												Thread.sleep(500);
											}else {
											//都沒有結合的部分就撥除while
												break;
											}
										}else {
										//當湊成同色的部分不見時就撥除while
											break;
										}
										chainCount++;
									}
									//落下下一個方塊組
									isNextFall = true;
								}
							}
						}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
狠狠色2019综合网| 91免费小视频| 亚洲色图丝袜美腿| 欧美一区二区三区色| www.亚洲在线| 久久av老司机精品网站导航| 18欧美亚洲精品| 精品精品国产高清a毛片牛牛| www.激情成人| 精品亚洲国产成人av制服丝袜 | 欧美二区在线观看| 成人午夜免费视频| 日本在线不卡视频一二三区| 亚洲色图色小说| 国产清纯美女被跳蛋高潮一区二区久久w| 欧美精品一二三四| 91官网在线免费观看| 91精品国产91久久久久久一区二区 | 337p亚洲精品色噜噜噜| 91小视频在线免费看| 国产精品一区二区在线看| 午夜精品影院在线观看| 亚洲免费观看高清完整版在线观看| 精品少妇一区二区三区| 5566中文字幕一区二区电影| 欧洲精品在线观看| 91美女片黄在线观看91美女| 国产盗摄一区二区| 国产一区二区三区电影在线观看| 日本亚洲欧美天堂免费| 天堂久久久久va久久久久| 亚洲乱码国产乱码精品精小说| 国产欧美1区2区3区| 久久久久亚洲蜜桃| 欧美成人精品二区三区99精品| 91精品婷婷国产综合久久性色| 欧美日韩极品在线观看一区| 欧美视频你懂的| 欧美性色综合网| 欧美色老头old∨ideo| 欧美亚洲综合色| 欧美日韩三级一区| 欧美日本乱大交xxxxx| 欧美日韩黄色影视| 欧美猛男gaygay网站| 欧美久久久久久久久| 欧美一二三区精品| 欧美www视频| 国产亚洲成aⅴ人片在线观看| 久久久精品黄色| 亚洲国产成人在线| 一区免费观看视频| 亚洲午夜电影网| 日韩黄色一级片| 久久精品国产免费| 国产麻豆成人精品| hitomi一区二区三区精品| 99久久久久久| 欧美网站一区二区| 91精品国产综合久久久久久漫画| 日韩三级高清在线| 国产亚洲va综合人人澡精品| 国产精品久久精品日日| 一区二区三区欧美激情| 色综合一区二区| 色88888久久久久久影院野外| 欧美午夜精品一区二区三区| 欧美一区二区视频观看视频| 精品福利二区三区| 国产精品夫妻自拍| 亚洲国产成人91porn| 精久久久久久久久久久| 成人精品免费网站| 欧美日韩一区二区三区四区 | 亚洲午夜一区二区| 免费一级欧美片在线观看| 国产精品综合av一区二区国产馆| 99在线精品观看| 欧美久久久一区| 久久色在线观看| 亚洲最大色网站| 韩国在线一区二区| 欧美在线你懂得| 久久欧美中文字幕| 亚洲电影一区二区| 国产成人精品午夜视频免费| 91成人在线精品| 久久婷婷成人综合色| 亚洲最色的网站| 国v精品久久久网| 亚洲精品视频自拍| 蜜桃传媒麻豆第一区在线观看| www.av亚洲| 欧美岛国在线观看| 亚洲激情男女视频| 国产乱码精品一区二区三| 色八戒一区二区三区| 久久精品日产第一区二区三区高清版| 亚洲一区在线观看网站| 豆国产96在线|亚洲| 91精品婷婷国产综合久久竹菊| 日韩一区在线看| 国产专区综合网| 91精品国产综合久久精品app| 1024成人网色www| 国产尤物一区二区在线| 欧美高清视频在线高清观看mv色露露十八| 国产女人18毛片水真多成人如厕 | 欧美xingq一区二区| 一区二区三区在线视频观看| 国产激情偷乱视频一区二区三区| 在线不卡的av| 亚洲午夜三级在线| 91美女在线观看| 中文字幕不卡一区| 国产一区二区三区蝌蚪| 91精品国产综合久久婷婷香蕉 | 亚洲欧美色综合| 国产精品一二三四区| 日韩欧美国产不卡| 爽爽淫人综合网网站| 日本韩国欧美三级| 亚洲同性同志一二三专区| 国产成人精品午夜视频免费| www激情久久| 精品亚洲免费视频| 欧美成人一区二区三区在线观看| 视频一区中文字幕| 欧美喷水一区二区| 婷婷亚洲久悠悠色悠在线播放| 在线观看视频欧美| 一区二区三区四区国产精品| 91影院在线免费观看| 国产精品成人午夜| www.综合网.com| 中文字幕一区在线观看| 不卡区在线中文字幕| 国产精品久久久久9999吃药| 成人av影院在线| 国产酒店精品激情| 精品久久久久久久久久久久久久久久久| 丝袜美腿成人在线| 欧美高清dvd| 免费精品视频在线| 日韩免费成人网| 激情欧美日韩一区二区| 久久嫩草精品久久久精品| 国产精品77777竹菊影视小说| 久久久久久久久久久99999| 国产高清在线精品| 国产精品国产自产拍在线| 91在线porny国产在线看| 亚洲人成在线播放网站岛国| 91成人看片片| 日韩在线观看一区二区| 日韩写真欧美这视频| 国产一区二区三区免费在线观看| 国产无遮挡一区二区三区毛片日本| 成人晚上爱看视频| 亚洲男人的天堂在线aⅴ视频| 在线视频中文字幕一区二区| 日韩国产欧美在线播放| 久久综合资源网| 99国产精品久久久久久久久久| 亚洲精品菠萝久久久久久久| 91麻豆精品国产91久久久| 国产一区中文字幕| 亚洲欧洲成人av每日更新| 欧美三级视频在线| 激情六月婷婷久久| 中文字幕一区二区三区视频| 欧美亚洲禁片免费| 国产精一区二区三区| 一区二区三区在线观看视频 | 欧美另类高清zo欧美| 麻豆精品蜜桃视频网站| 国产精品国产a| 欧美男女性生活在线直播观看| 韩国午夜理伦三级不卡影院| 亚洲欧美日本韩国| 日韩免费一区二区三区在线播放| 播五月开心婷婷综合| 日韩福利视频网| 国产精品久久久久久妇女6080| 欧美欧美欧美欧美首页| 成人黄色在线视频| 日韩黄色免费电影| 一区在线观看视频| 欧美mv和日韩mv的网站| 色综合久久中文字幕综合网| 蜜桃一区二区三区四区| 亚洲情趣在线观看| 欧美精品一区二区高清在线观看 | 国内外精品视频| 一个色综合网站| 中文字幕乱码久久午夜不卡| 3d动漫精品啪啪| 欧美最猛性xxxxx直播| 国产福利视频一区二区三区| 丝袜美腿高跟呻吟高潮一区|