freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于j2me的小球快跑游戲畢業(yè)論文-資料下載頁(yè)

2025-08-19 19:16本頁(yè)面

【導(dǎo)讀】隨著JAVA技術(shù)的不斷更新。提高,J2ME技術(shù)的出現(xiàn),使得手機(jī)游戲越來(lái)越成為我們關(guān)注的焦點(diǎn)。J2ME技術(shù)目前最流行?;?、輕便、快捷的作用。J2ME平臺(tái)被是最杰出的手機(jī)游戲手機(jī)游戲平臺(tái),它一些非常重要的。特征對(duì)開發(fā)者都有很大益處。因?yàn)镴2ME應(yīng)用在不同設(shè)備上都是便攜式的,他們常??梢栽诰W(wǎng)。絡(luò)上下載和執(zhí)行。WeleThread類的開發(fā)………菜單界面的用戶交互事件處理…………本設(shè)計(jì)針對(duì)小球快跑實(shí)現(xiàn)了新游戲、選關(guān)、恭喜過關(guān),繼續(xù)或沖完等過程。環(huán)漸進(jìn)和關(guān)卡之間的互異性以及關(guān)卡的可玩性是需要重視的問題。WeleView類繼承自SurfaceView類,其主要負(fù)責(zé)播放歡迎動(dòng)畫和顯示游戲主菜單。GameView類繼承自SurfaceView,其主要負(fù)責(zé)游戲主畫面的渲染。對(duì)外提供了方法用于獲得指定關(guān)卡的地圖信息。用戶單擊屏幕事件。BaiiListener類繼承自SensorListener類,氣質(zhì)要負(fù)責(zé)監(jiān)聽手機(jī)姿態(tài)的變化并將捕獲到的數(shù)。據(jù)傳遞給RotateUtil進(jìn)行分析計(jì)算。的小球的運(yùn)動(dòng)方向。

  

【正文】 checkCollision()){ //檢測(cè)是否發(fā)生碰撞 = 。 //若發(fā)生碰撞就撤銷移動(dòng) } 25 break。 case 5: //方向左下 = 。 //X方向上的移動(dòng) if(checkCollision()){ //檢測(cè)是否發(fā)生碰撞 += 。 //若發(fā)生碰撞就撤銷移動(dòng) } += 。 //Y方向上的移動(dòng) if(checkCollision()){ //若發(fā)生碰撞就撤銷移動(dòng) = 。 //若發(fā)生碰撞就撤銷移動(dòng) } break。 case 6: //方向向左 = 。 //X方向上的移動(dòng) if(checkCollision()){ //若發(fā)生碰撞就撤銷移動(dòng) += 。 //若發(fā)生碰撞就撤銷移動(dòng) } break。 case 7: //方向左上 = 。 //X方向上的移動(dòng) if(checkCollision()){ //若發(fā)生碰撞就撤銷移動(dòng) += 。 //若發(fā)生碰撞就撤銷移動(dòng) } = 。 //Y方向上的移動(dòng) if(checkCollision()){ //若發(fā)生碰撞就撤銷移動(dòng) += 。 //若發(fā)生碰撞就撤銷移動(dòng) } break。 } } ( 2) 小球的碰撞檢測(cè) 代碼如下: public boolean checkCollision() { int size = 。 //獲取地圖圖元大小 byte [][] map = 。 //獲取地圖矩陣 int row=0。 int col=0。 //檢查左上角 col = 。 //求出左上角在地圖中所占的列數(shù) row = 。 //求出左上角在地圖中所占的行數(shù) if(col=0 amp。amp。 colmap[0].length amp。amp。 row=0amp。amp。row amp。amp。 map[row][col] == 0){ return true。 } //檢查右上角 26 col = ( + size1)/size。//求出右上角在地圖中所占的列數(shù) row = 。 //求出右上角在地圖中所占的行數(shù) if(col=0 amp。amp。 colmap[0].length amp。amp。 row=0amp。amp。row amp。amp。 map[row][col] == 0){ return true。 } //檢查右下角 col = (+size1)/size。//求出右下角在地圖中所占的列數(shù) row = (+size1)/size。//求出右下角在地圖中所占的行數(shù) if(col=0 amp。amp。 colmap[0].length amp。amp。 row=0amp。amp。row amp。amp。 map[row][col] == 0){ return true。 } //檢查左下角 col = 。 //求出左下角在地圖中所占的列數(shù) row = (+size1)/size。 //求出左下角在地圖中所占的行數(shù) if(col=0 amp。amp。 colmap[0].length amp。amp。 row=0amp。amp。row amp。amp。 map[row][col] == 0){ return true。 } //檢查左邊界 if( 0){ return true。 } //檢查上邊界 if( 0){ return true。 } //檢查右 邊界 if( + size [0].length * size){ // 前面 的size指的是小球的尺寸,后面的是指圖元尺寸 return true。 } //檢查下邊界 if( + size *size){ return true。 } //檢查是否遇到其他情況 col = 。 row = 。 if(col == ( + size1)/size amp。amp。 row==(+size1)/size){ //判斷小球是否正好在某個(gè)格子里 switch([row][col]){ case 2: //到家了 = STATUS_WIN。 //設(shè)置游戲狀態(tài)為 STATUS_WIN if(){ //如有需要 播放聲音 try { ()。 } catch (Exception e) {} 27 } isGameOn = false。 //暫停 GameThread的執(zhí)行 if( == MAX_LEVEL){ //檢查是否是最后一關(guān) = STATUS_PASS。 //設(shè)置游戲狀態(tài)為 STATUS_PASS } else{ += 1。 //如果不是最后一關(guān),就將關(guān)卡加 1 } break。 case 3: //吃到加命的 if(){ //如有需要播放聲音 try{ ()。 } catch(Exception e){} } = col*size。 //修正小球的 X坐標(biāo) = row*size。 //修正小球的 Y坐標(biāo) [row][col] = 1。 //將地圖矩陣中該位置改為道路 += 1。 //小球的生命數(shù)加 1 break。 case 4: //被吃了 = STATUS_LOSE。 //設(shè)置游戲狀態(tài)為 STATUS_LOSE if(){ //如有需要播放聲音 try { ()。 } catch (Exception e) {} } =1。 //小球的生命數(shù)減 1 if( =0){ =STATUS_OVER。 //如果小球生命耗盡,設(shè)置狀態(tài)位為STATUS_OVER } else{ = 0。 //復(fù)位小球坐標(biāo) = 0。 } break。 } 六. 傳感器計(jì)算模塊的開發(fā) ( 1) BallListener 類的開發(fā) 代碼如下: package 。 //聲明包語(yǔ)句 28 import 。//引入相關(guān)類 import 。//引入相關(guān)類 /* * 該類繼承自 SensorListener,主要功能是感應(yīng)傳感器的姿態(tài)數(shù)據(jù) * 通過 onSensorChanged方法讀取數(shù)據(jù) ,并調(diào)用 RoatatUtil中的靜態(tài) * 方法來(lái)確定小球應(yīng)該移動(dòng)的方向。 */ public class BallListener implements SensorListener{ DriftBall father。 //DriftBall引用 int timeSpan = 500。 //500MS檢查一次 long startTime。 //記錄開始的時(shí) 間 public BallListener(DriftBall father){ //構(gòu)造器,初始化成員變量 = father。 startTime = ()。 //記錄系統(tǒng)時(shí)間作為當(dāng)前時(shí)間 } @Override public void onAccuracyChanged(int sensor, int accuracy) {//重寫 onAccuracyChanged方法 } @Override public void onSensorChanged(int sensor, float[] values) {//重寫 onSensorChanged方法 long now = ()。 //獲取系統(tǒng)當(dāng)前時(shí)間 if(now startTime = timeSpan){ //判斷是否走過指定的時(shí)間間隔 if(sensor == ){ analysisData(values)。 //調(diào)用 analysisData方法對(duì)數(shù)據(jù)進(jìn)行分析 } startTime = now。 //重新計(jì)時(shí) } } public void analysisData(float[] values) { //對(duì)讀取的姿態(tài)數(shù)據(jù)進(jìn)行分析,調(diào)用RoateUtil的靜態(tài)方法解析出方向 double[] valuesTemp=new double[]{values[0],values[1],values[2]}。 //對(duì) y軸進(jìn)行修正 = (valuesTemp)。 // 調(diào)用RotateUtil的靜態(tài)方法計(jì)算出小球方向 } } ( 2) RotateUtil 類的開發(fā) 代碼如下: package 。 //聲明包語(yǔ)句 /* * 該類為靜態(tài)工具類,提供靜態(tài)方法來(lái)計(jì)算 * 小球應(yīng)該的運(yùn)動(dòng)方向 29 */ public class RotateUtil{ //方法:計(jì)算小球的方向 public static int getDirectionCase(double[] values){ double zAngle=(values[0])。//獲取 z軸旋轉(zhuǎn)角度弧度 double xAngle=(values[1])。//獲取 x軸旋轉(zhuǎn)角度弧度 double yAngle=(values[2])。//獲取 y軸旋轉(zhuǎn)角度弧度 /* * 算法思想為手機(jī)在一個(gè)姿態(tài)后首先虛擬出一個(gè)重力向量, * 然后三次選裝把手機(jī)恢復(fù)到原始姿態(tài),期間重力向量伴隨 * 變化,最 后重力向量往手機(jī)平面上一投影,根據(jù)投影點(diǎn)的 * 位置即可得到位置編號(hào) 07 * 0 * 7 | 1 * \ | / * \ | / * 6|2 * / | \ * / | \ * 5 | 3 * 4 */ //虛擬一個(gè)重力向量 double[] gVector={0,0,100,1}。 /* * 在這里需要注意沿三個(gè)空間方向 x,y,z軸所旋轉(zhuǎn)的角度的恢復(fù)順序,由于 Yaw軸始終指向豎直向上(重力加速度反向),和 * 標(biāo)準(zhǔn)的空間坐標(biāo)系的 z軸一樣,所以 可以通過負(fù)向旋轉(zhuǎn)直接進(jìn)行角度恢復(fù);沿 yaw軸將轉(zhuǎn)過的角度恢復(fù)后,此時(shí)的 pitch軸 * 就變成了空間坐標(biāo)系中的 x軸,沿 pitch( x)軸將 轉(zhuǎn)過 的角度恢復(fù),此時(shí)的 roll軸就修正為了空間坐標(biāo)系中的 y軸,最后 * 按照 y軸將轉(zhuǎn)過的角度恢復(fù),則此時(shí)手機(jī)平面所在的平面變成了空間坐標(biāo) 系中 xy平面,而附著于手機(jī)平面上的重力加速度 * 的則是一個(gè)與手機(jī)平面相交的向量,將該向量投影到手機(jī)平面,通過投影點(diǎn)就可以計(jì)算出小球要滾動(dòng)的方向 * 如果不按照上述順序進(jìn)行角度恢復(fù),則空間坐標(biāo)的計(jì)算轉(zhuǎn)換將會(huì)非常復(fù)雜,而上述方法中每一步的角度恢復(fù)都是基于標(biāo)準(zhǔn) * 的坐標(biāo)系軸,而對(duì)標(biāo)準(zhǔn)坐標(biāo)軸的轉(zhuǎn)換在計(jì)算機(jī)圖形 * 學(xué)中很容易實(shí)現(xiàn) */ //yaw軸恢復(fù) gVector=(zAngle,gVector)。 //pitch軸恢復(fù) 30 gVector=(xAngle,gVector)。 //roll軸恢復(fù) gVector=(yAngle,gVector)。 double mapX=gVector[0]。 //mapX為重力向量在 X、 Y軸平面上的投影的 X坐標(biāo) double mapY=gVector[1]。 //mapY為重力向量在 X、 Y軸平面上的投影的 Y坐標(biāo) if(mapX==0){ //如果 mapX等于 0 if(mapY0){ //mapY大于 0 return 0。 //返回方向?yàn)?0,向上 } else{ //mapY小于 0 return
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1