![手機(jī)貪吃蛇游戲的開發(fā)_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/3/9454ae43-09c7-4453-b085-8b18fc6d3735/9454ae43-09c7-4453-b085-8b18fc6d37351.gif)
![手機(jī)貪吃蛇游戲的開發(fā)_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/3/9454ae43-09c7-4453-b085-8b18fc6d3735/9454ae43-09c7-4453-b085-8b18fc6d37352.gif)
![手機(jī)貪吃蛇游戲的開發(fā)_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/3/9454ae43-09c7-4453-b085-8b18fc6d3735/9454ae43-09c7-4453-b085-8b18fc6d37353.gif)
![手機(jī)貪吃蛇游戲的開發(fā)_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/3/9454ae43-09c7-4453-b085-8b18fc6d3735/9454ae43-09c7-4453-b085-8b18fc6d37354.gif)
![手機(jī)貪吃蛇游戲的開發(fā)_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/3/9454ae43-09c7-4453-b085-8b18fc6d3735/9454ae43-09c7-4453-b085-8b18fc6d37355.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 計(jì)算機(jī)項(xiàng)目實(shí)踐(1)課程設(shè)計(jì)說(shuō) 明 書設(shè)計(jì)題目: 手機(jī)貪吃蛇游戲開發(fā) 班 級(jí):學(xué) 號(hào):姓 名:指導(dǎo)教師:完成日期:2010-1-14目 錄一、需求分析 31.1 概述 31.2 技術(shù)原理 3二、模塊功能說(shuō)明(概要設(shè)計(jì)) 3三、詳細(xì)設(shè)計(jì) 43.1 系統(tǒng)設(shè)計(jì) 43.2 功能實(shí)現(xiàn) 4四、任務(wù)進(jìn)度表 9五、測(cè)試結(jié)果 9六、設(shè)計(jì)小結(jié) 10七、用戶使用說(shuō)明 10參考文獻(xiàn) 10一、需求分析1.1 概述隨著通信技術(shù)的發(fā)展和手機(jī)的普與,手機(jī)游戲的開發(fā)技術(shù)越來(lái)越為人們所關(guān)注,這次的項(xiàng)目就是用J2ME開發(fā)的貪吃蛇游戲的應(yīng)用程序,設(shè)計(jì)一個(gè)基于Java語(yǔ)言的游戲程序,使它能在手機(jī)模擬器上運(yùn)行經(jīng)典的貪吃蛇游戲。它的主要
2、功能有:游戲規(guī)則的實(shí)現(xiàn),積分計(jì)算,界面功能。1.2 技術(shù)原理J2ME游戲開發(fā)技術(shù)是支持像小型嵌入式設(shè)備或移動(dòng)設(shè)備而制定的一系列的技術(shù)和規(guī)的總稱,它是JAVA語(yǔ)言的一個(gè)分支,遵循JAVA 的規(guī)則,是一個(gè)運(yùn)行平臺(tái),特別適用于手機(jī)用戶的游戲開發(fā)。本項(xiàng)目的貪吃蛇游戲就是基于J2ME游戲技術(shù)開發(fā)的。本次實(shí)訓(xùn)開發(fā)工具為Eclipse,使用JAVA 功能,支持RMS持久化數(shù)據(jù)庫(kù),可以保存游戲的積分,等級(jí),速度等。用戶也可以自行設(shè)置游戲的一些規(guī)則。其技術(shù)原理涉與MIDP簡(jiǎn)表:針對(duì)移動(dòng)信息處理設(shè)備(主要指智能手機(jī)和一部分具有無(wú)線通信功能的PDA)的圖形界面、輸入和時(shí)間處理、持久性存儲(chǔ)、無(wú)線。MIDP的總體框架:
3、MID硬件層、本地系統(tǒng)軟件層、KVM層、CLDC層、MIDP層。其中還涉與到MIDP2.0的新特性,MIDP的安全機(jī)制等。二、模塊功能說(shuō)明(概要設(shè)計(jì))模塊一:歡迎界面與游戲選擇界面。模塊二:用戶界面的編寫和游戲元素的功能。模塊三:蛇的移動(dòng)。模塊四:蛇吃掉一個(gè)目標(biāo)并積分。模塊五:游戲規(guī)則的設(shè)定和實(shí)現(xiàn)。模塊六:游戲匯總和積分計(jì)算。三、詳細(xì)設(shè)計(jì)3.1 系統(tǒng)設(shè)計(jì)1.food類:Int foodX Int foodY int foodC;2.snake類:Int Snake int snakeNum;3. GameObj類:int SNAKE_Wint SNAKE_H4. SnakeCanvas類:in
4、t direction3.2 功能實(shí)現(xiàn):1、 游戲初始化:其實(shí)現(xiàn)的功能是初始化游戲的數(shù)據(jù),實(shí)現(xiàn)該功能首先需要清晰的知道需要初始化那些數(shù)據(jù),如何進(jìn)行初始化。將貪吃蛇基本初始化在屏幕的中央,初始移動(dòng)方向和貪吃蛇節(jié)點(diǎn)的排列順序一致,食物的坐標(biāo)固定位置。游戲初始化的代碼如下: /*初始化開始數(shù)據(jù)*/ private void init() / 初始化節(jié)點(diǎn)數(shù)量 snakeNum = 7; / 初始化節(jié)點(diǎn)數(shù)據(jù) for (int i = 0; i < snakeNum; i+) snakei0 = 100 - SNAKEWIDTH * i; snakei1 = 40; / 初始化移動(dòng)方向 direct
5、ion = DIRECTION_RIGHT;/ 初始化食物坐標(biāo) foodX = 100; foodY = 100; isPaused = false; /初始化暫停 如圖所示:2、 貪吃蛇的移動(dòng):實(shí)現(xiàn)貪吃蛇移動(dòng)的代碼如下: /*貪吃蛇移動(dòng)*/ private void move() / 蛇身移動(dòng) for (int i = snakeNum; i > 0; i-) snakei0 = snakei - 10; snakei1 = snakei - 11; / 第一個(gè)單元格移動(dòng) switch (direction) case DIRECTION_UP: snake01 = snake01 -
6、 SNAKEWIDTH; break; case DIRECTION_DOWN: snake01 = snake01 + SNAKEWIDTH; break; case DIRECTION_LEFT: snake00 = snake00 - SNAKEWIDTH; break; case DIRECTION_RIGHT: snake00 = snake00 + SNAKEWIDTH; break; 如圖所示:3、 貪吃蛇方向控制:貪吃蛇方向的控制需要根據(jù)玩家的按鍵來(lái)改變蛇的方向,根據(jù)J2ME技術(shù)中事件處理的編程方式,實(shí)現(xiàn)的代碼如下: /*事件處理*/ public void keyPresse
7、d(int keyCode) int action = this.getGameAction(keyCode); switch (action) case UP: if (direction != DIRECTION_DOWN) direction = DIRECTION_UP; break; case DOWN: if (direction != DIRECTION_UP) direction = DIRECTION_DOWN; break; case LEFT: if (direction != DIRECTION_RIGHT) direction = DIRECTION_LEFT; br
8、eak; case RIGHT: if (direction != DIRECTION_LEFT) direction = DIRECTION_RIGHT; reak; 4、 貪吃蛇和食物的碰撞和處理:則本規(guī)則的實(shí)現(xiàn)代碼如下: /*吃掉食物,自身增長(zhǎng)*/ private void eatFood() / 判別蛇頭是否和食物重疊 if (snake00 = foodX && snake01 = foodY) snakeNum+; generateFood(); 5、 食物坐標(biāo)的隨機(jī)生成:需要實(shí)現(xiàn)如下要求:a、 坐標(biāo)位于屏幕以b、 坐標(biāo)不能和貪吃蛇任何一個(gè)節(jié)點(diǎn)重合c、 坐標(biāo)必須是貪
9、吃蛇節(jié)點(diǎn)寬度的整數(shù)倍(該要求和貪吃蛇的碰撞檢測(cè)算法匹配)。按照以上邏輯實(shí)現(xiàn)的程序代碼如下: /*產(chǎn)生食物*/ private void generateFood() while (true) /屏幕圍,且是蛇身寬度的整數(shù)倍 foodX = Math.abs(random.nextInt() % (width - SNAKEWIDTH + 1) / SNAKEWIDTH * SNAKEWIDTH;foodY = Math.abs(random.nextInt() % (height - SNAKEWIDTH + 1) / SNAKEWIDTH * SNAKEWIDTH; /判斷是否和蛇節(jié)點(diǎn)重疊
10、boolean b = true; for (int i = 0; i < snakeNum; i+) if (foodX = snakei0 && snakei1 = foodY) b = false; break; if (b) break; 6、 游戲結(jié)束的判別:游戲結(jié)束的規(guī)則主要有兩個(gè):a、 貪吃蛇超出游戲區(qū)域b、 貪吃蛇自身的節(jié)點(diǎn)之間存在重疊代碼如下所示: /*判斷下一步是否超出屏幕而越界,或者碰到自身,游戲結(jié)束*/ if(isGameOver() isShow = false; isExit = true; return; /*蛇身移動(dòng)過(guò)程*/ for(int
11、 i = snakeNum - 1;i > 0;i-) snakei*3+0 = snake(i-1)*3+0; snakei*3+1 = snake(i-1)*3+1; /第一個(gè)單元格移動(dòng) stepX = 0; stepY = 0; switch(direction) case DIR_UP: stepY = -SNAKE_H; break; case DIR_DOWN: stepY = SNAKE_H; break; case DIR_LEFT: stepX = -SNAKE_W; break; case DIR_RIGHT: stepX = SNAKE_W; break; snak
12、e0*3+0 += stepX; snake0*3+1 += stepY; 然后在程序中利用該方法的返回值,控制游戲中界面的切換等,從而實(shí)現(xiàn)游戲結(jié)束的功能。7、 游戲暫停的控制在程序中這樣來(lái)實(shí)現(xiàn)暫停,使用變量isPaused的值來(lái)控制線程邏輯和事件處理,當(dāng)按下暫停鍵時(shí)設(shè)置該變量為true,當(dāng)按下繼續(xù)鍵時(shí)設(shè)置該變量為false。實(shí)現(xiàn)的代碼如下: /*事件處理*/ public void keyPressed(int keyCode) if(keyCode = -6) /左軟鍵 isPaused = !isPaused; if(keyCode = -7) /右軟鍵 SnakeMIDlet.quit
13、App(); if(isPaused) /如果暫停則不能控制移動(dòng)方向return; 代碼如下:/*線程方法 使用精確延時(shí)*/ public void run() try while (isRun) / 開始時(shí)間long start = System.currentTimeMillis();if (!isPaused) /如果不暫停 eatFood(); / 吃食物 move(); / 移動(dòng)if (isGameOver() / 結(jié)束游戲 break; b = !b; / 控制閃爍 repaint(); / 重新繪制 long end = System.currentTimeMillis();if
14、 (end - start < SLEEP_TIME) / 延時(shí)Thread.sleep(SLEEP_TIME - (end - start); catch (Exception e) 四、任務(wù)進(jìn)度表日期計(jì)劃任務(wù)完成任務(wù)缺陷報(bào)告2009年12月30日2010年1月2日開發(fā)環(huán)境安裝配置,系統(tǒng)需求分析完成無(wú)1月3到1月6日用戶界面設(shè)置與相關(guān)完成無(wú)1月7日到1月10日實(shí)現(xiàn)蛇的運(yùn)動(dòng)和食物的事件完成無(wú)1月11日到12號(hào)實(shí)現(xiàn)方向控制,事件處理完成無(wú)1月13日到14號(hào)游戲操作控制的設(shè)置,界面的設(shè)置完成無(wú)1月15日說(shuō)明書的撰寫完成無(wú)五、測(cè)試結(jié)果表5.1 系統(tǒng)測(cè)試結(jié)果測(cè)試容預(yù)期結(jié)果實(shí)際結(jié)果評(píng)價(jià)游戲初始化實(shí)
15、現(xiàn)初始化實(shí)現(xiàn)完成很好貪吃蛇方向控制實(shí)現(xiàn)控制實(shí)現(xiàn)完成良好貪吃蛇和食物的碰撞處理能正常實(shí)現(xiàn)實(shí)現(xiàn)完成很好游戲結(jié)束的判別能正確判別實(shí)現(xiàn)完成很好游戲暫停的控制能無(wú)誤控制實(shí)現(xiàn)完成良好六、設(shè)計(jì)小結(jié)經(jīng)過(guò)兩周的程序綜合實(shí)訓(xùn),我們對(duì)ECLIPSE這個(gè)開發(fā)軟件有了更深一步的了解,對(duì)J2ME的認(rèn)識(shí)也有所提高。本次JAVA貪吃蛇游戲設(shè)計(jì)意義深重,對(duì)于鞏固JAVA知識(shí)的運(yùn)用和實(shí)踐的推廣起到重要的意義。雖然在游戲的開發(fā)過(guò)程中,我遇到了許多的問(wèn)題和錯(cuò)誤,但是面對(duì)這些,我還是想盡一切辦法去解決,或是上網(wǎng)找資料,或者請(qǐng)教同學(xué)互相討論一番。經(jīng)過(guò)種種的曲折,現(xiàn)在一個(gè)比較完善的貪吃蛇游戲總算完成了,我這兩周的所付出的努力和心血總算沒有
16、白費(fèi)。JAVA程序編程時(shí)實(shí)踐性很強(qiáng)的一門計(jì)算機(jī)課程。其目的是使我們能夠鞏固所學(xué)的J2ME語(yǔ)言知識(shí),增進(jìn)J2ME語(yǔ)言編程的的理解。通過(guò)這次實(shí)訓(xùn),我學(xué)會(huì)了用J2ME進(jìn)行手機(jī)游戲的簡(jiǎn)單編寫,讓我更好的了解了相應(yīng)的專業(yè)知識(shí)和技能,更加明白理論和實(shí)踐相結(jié)合的重要意義。其實(shí),J2ME并不是那么難的,只要用心,打好基礎(chǔ),把它掌握好還不會(huì)是問(wèn)題的。希望在以后能對(duì)J2ME 有更好的了解!七、用戶使用說(shuō)明首先但運(yùn)行游戲代碼時(shí),則會(huì)出現(xiàn)一個(gè)用戶界面,上面會(huì)提示你按屏幕右下角的菜單鍵就會(huì)進(jìn)入游戲,左邊則是退出游戲。點(diǎn)擊menu后,又會(huì)顯示游戲界面,上面會(huì)有“幫助說(shuō)明“,”返回“,”難度選擇“,”新游戲“等按鍵。1. 點(diǎn)擊“開始游戲“時(shí),則會(huì)出現(xiàn)貪吃蛇的游戲,按上下左右就可以移動(dòng)蛇去吃食物了。2. 點(diǎn)擊“幫助說(shuō)明“時(shí),則會(huì)顯示如何使用該游戲。以與一些游戲的規(guī)則。3. 點(diǎn)擊“難度選擇“時(shí),則又會(huì)出現(xiàn)選擇”初級(jí)“,”中級(jí)“,”高級(jí)“的選項(xiàng)按鈕,這個(gè)可以根據(jù)用戶
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)吊襪帶市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)反光馬甲市場(chǎng)調(diào)查研究報(bào)告
- 2025至2031年中國(guó)筆形低壓電烙鐵行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年度國(guó)際貨運(yùn)代理集裝箱租賃代理合同
- 2025年度寵物活體銷售代理合同模板3篇
- 2025年企業(yè)信息安全管理顧問(wèn)服務(wù)合同
- 2025年度工程圍擋材料環(huán)保認(rèn)證與質(zhì)量檢測(cè)服務(wù)合同
- 2025年度城市道路綠化帶花木租賃合同范本
- 2025年度文化企業(yè)總經(jīng)理職務(wù)聘任合同書
- 2025年度國(guó)際體育賽事組織服務(wù)合同范本
- 2025年中國(guó)濕度傳感器行業(yè)深度分析、投資前景、趨勢(shì)預(yù)測(cè)報(bào)告(智研咨詢)
- 人教版道德與法治二年級(jí)下冊(cè)《第一單元 讓我試試看》大單元整體教學(xué)設(shè)計(jì)2022課標(biāo)
- 甘肅省蘭州市蘭煉一中2025屆數(shù)學(xué)高一上期末統(tǒng)考試題含解析
- 聯(lián)合體三方協(xié)議合同模板
- 2024年3季度青島房地產(chǎn)市場(chǎng)季度簡(jiǎn)報(bào)
- 蘇東坡詞十首
- 山東省臨沂市2024年中考物理真題
- 2023年天津市文化和旅游局直屬事業(yè)單位招聘考試真題及答案
- 電力系統(tǒng)分析(郝亮亮)
- 改善護(hù)理服務(wù)行動(dòng)計(jì)劃方案
- 建筑材料包銷協(xié)議書
評(píng)論
0/150
提交評(píng)論