軟件技術畢業設計(論文)J2ME貪吃蛇游戲制作(含源程序)_第1頁
軟件技術畢業設計(論文)J2ME貪吃蛇游戲制作(含源程序)_第2頁
軟件技術畢業設計(論文)J2ME貪吃蛇游戲制作(含源程序)_第3頁
軟件技術畢業設計(論文)J2ME貪吃蛇游戲制作(含源程序)_第4頁
軟件技術畢業設計(論文)J2ME貪吃蛇游戲制作(含源程序)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、需源程序聯系qq153893706畢業設計總結貪吃蛇游戲制作 院 (系) 信息工程與藝術設計系 專 業 軟件技術 學生姓名 學生學號 指導教師 提交時間 2011年12月2日 目 錄目 錄2摘 要3引 言4第一章需求分析41.1游戲開發的可行性41.2設計目的41.3游戲需求4第二章j2me貪吃蛇項目說明與分析52.1游戲說明52.2游戲分析52.3具體實現代碼詳細介紹:72.4游戲控制界面實現代碼92.5下一關實現代碼162.6測試結果21第三章自我評價21第四章總結22致謝22主要參考文獻23摘 要隨著科技的發展,現在手機的功能已不僅僅是簡單的打接電話、收發短信了。更多的手機用戶希望在工作

2、、學習之余通過方便靈巧可隨身攜帶的儀器休閑娛樂。因此,為了迎合眾多用戶的需求并適應現在手機的規模,我們開發出一套適合各階層人士的具有很強的娛樂性和交互性的貪吃蛇小游戲。 貪吃蛇,之所以取這樣的名字,去用意還是很明顯的.貪吃蛇其實并不貪,它是人不斷向前追求的象征.就像現代的人只有不斷努力向前才能得到自己想要的。而食物也是隨機出現的,就像現在社會存在的機會,而我們只有找好自己的目標才能成功。 雖然現在市面上存在著各種各樣的游戲版本,可是貪吃蛇其市場還是相當大的。因為它的特殊在于它能吸引人更深入,愛不釋手.隨著游戲速度不斷加快,其刺激性也更強??梢哉f該游戲的優勢在于它的簡單易行,不論是手機,還是小游

3、戲機,都能很快順利的運行。對于在外忙碌的人,不可能花費大量時間在娛樂上,大型游戲是行不通的。這樣的小游戲剛好迎合了他們的需求。 本設計所開發的是基于java的一個貪吃蛇游戲軟件,主要實現游戲的開始、退出等功能,分為:游戲主界面模塊、游戲控制模塊兩個模塊。游戲主界面模塊:主要包括游戲初始界面、游戲開始按鈕、退出按鈕。游戲控制模塊:主要完成游戲的開始、退出等功能。關鍵詞:貪吃蛇;小游戲;j2me;引 言隨著科技的發展,現在手機的功能已不僅僅是簡單的打接電話、收發短信了。更多的手機用戶希望在工作、學習之余通過方便靈巧可隨身攜帶的儀器休閑娛樂。因此,為了迎合眾多用戶的需求并適應現在手機的規模,我們開發

4、出一套適合各階層人士的具有很強的娛樂性和交互性的貪吃蛇小游戲。 貪吃蛇,之所以取這樣的名字,去用意還是很明顯的.貪吃蛇其實并不貪,它是人不斷向前追求的象征.就像現代的人只有不斷努力向前才能得到自己想要的。而食物也是隨機出現的,就像現在社會存在的機會,而我們只有找好自己的目標才能成功。 雖然現在市面上存在著各種各樣的游戲版本,可是貪吃蛇其市場還是相當大的。因為它的特殊在于它能吸引人更深入,愛不釋手.隨著游戲速度不斷加快,其刺激性也更強??梢哉f該游戲的優勢在于它的簡單易行,不論是手機,還是小游戲機,都能很快順利的運行。對于在外忙碌的人,不可能花費大量時間在娛樂上,大型游戲是行不通的。這樣的小游戲剛

5、好迎合了他們的需求。 第一章需求分析1.1游戲開發的可行性游戲開發至今已經有30多年,在這個短暫的時期里,隨著硬件水平的提高,游戲開發新技術層出不窮,經典游戲比比皆是。游戲這個名稱一直就存在于每個人的日常生活中,如猜拳游戲、猜謎游戲、大地游戲、球類游戲等,林林總總,不勝枚舉,甚至于有些流行歌曲把人生也比喻為游戲,好比“一場游戲一場夢” 。因此,游戲對于現代人的成長歷程,絕對是一個不可或缺的重要角色。1.2設計目的綜合運用在校期間所學理論知識和技能,設計開發貪吃蛇游戲,使自己熟悉應用系統的開發過程,培養獨立思考能力,檢驗學習效果和動手能力,提高工程實踐能力。1.3游戲需求 給出1條小蛇和隨機出1

6、個食物當小蛇吃到食物時就加分。第二章j2me貪吃蛇項目說明與分析2.1游戲說明* 運行環境:手機移動平臺,經過實驗多種型號手機都可以運行。當然前提下是手機要支持java功能才行。* 本游戲支持rms持久化數據庫存,可以保存游戲計分,關數,速度。* 用戶可以自行設置游戲速度,游戲關數。* 想在手機上運行,可以通過多種方式,將文件傳送到手機中,當然最普通的方式就是通過usb連接將數據傳送到手機上。由于我把項目的所有源代碼都發布了,傳送時只需要將項目文件當中.jar和.jad傳進去。有的手機,可能不需要那個.jad的文件,這兩個文件在項目當中的dist目錄下。不需要將其他的文件發送到手機上去。2.2

7、游戲分析 首先分析此游戲,我們先來看一下貪吃蛇初始界面。圖一初始界面圖二 游戲運行過程中截圖圖三 本局積分游戲界面2.3具體實現代碼詳細介紹:import java.io.ioexception;import javax.microedition.lcdui.alert;import javax.microedition.lcdui.alerttype;import javax.microedition.lcdui.display;import javax.microedition.lcdui.displayable;import javax.microedition.lcdui.image;

8、import javax.microedition.midlet.midlet;import javax.microedition.midlet.midletstatechangeexception;public class snakemidlet extends midlet public display display;/顯示的對象public gamectrl game; public snakemidlet() super();/ todo auto-generated constructor stubprotected void destroyapp(boolean arg0) th

9、rows midletstatechangeexception / todo auto-generated method stubprotected void pauseapp() / todo auto-generated method stubprotected void startapp() throws midletstatechangeexception / 獲得displaydisplay = display.getdisplay(this);/ 獲得displayabledisplayable current = display.getcurrent();if (current

10、= null) / 裝載logo圖象image logo = null;trylogo = image.createimage(/logo.png);catch (ioexception e) / 顯示logoalert splashscreen = new alert(null, 山東勞動職業技術學院軟件技術班鄭珍珍, logo, alerttype.info);/ 延遲4秒 splashscreen.settimeout(2000);/新建choosedemo對象game = new gamectrl(this);/ 顯示閃屏界面display.setcurrent(splashscree

11、n, game);else / 顯示當前界面display.setcurrent(current); / todo auto-generated method stubpublic void quit() throws midletstatechangeexception / 退出程序destroyapp(false);notifydestroyed();2.4游戲控制界面實現代碼import java.util.timer;import javax.microedition.lcdui.alert;import javax.microedition.lcdui.alerttype;impor

12、t javax.microedition.lcdui.canvas;import javax.microedition.lcdui.command;import javax.microedition.lcdui.commandlistener;import javax.microedition.lcdui.displayable;import javax.microedition.lcdui.graphics;import javax.microedition.lcdui.image;import javax.microedition.midlet.midletstatechangeexcep

13、tion;public class gamectrl extends canvas implements commandlistenerprivate final command startcommand;private final command quitcommand;private final snakemidlet midlet;private graphics graph;private timer timer = new timer();private nextframe nextframe;/ 游戲結束標志public boolean isgameover = false;/ 游

14、戲開始標志public boolean isgamerun = false;/ 游戲積分public int score = 0;/ 屏幕尺寸public int width = 0;public int height = 0;/ 食物位置public int foodx = 0;public int foody = 0;/ 蛇身位置public int snakex = 10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50 ,54, 58, 62, 66, 70, 74, 78, 82, 86;public int snakey = 10, 10, 10, 1

15、0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10;/ 運動方向 0,1,2,3上,下,左,右public int direction = 0; / 食物圖象public image foodimage = null;/* * */public gamectrl(snakemidlet midlet) super();/ 保存midlet類對象this.midlet = midlet;/ 得到屏幕尺寸width = getwidth();height = getheight();/ 設置食物位置foodx = wi

16、dth / 2;foody = height / 2;try/ 裝載食物圖象foodimage = image.createimage(/food.png);catch(exception e)/ 添加命令按鍵quitcommand = new command(退出, command.exit, 2);addcommand(quitcommand);startcommand = new command(開始, command.ok, 1);addcommand(startcommand);/ 偵聽按鍵響應setcommandlistener(this);protected void paint

17、(graphics g) graph = g;if (isgameover = true & isgamerun = true)isgamerun = false;/ 顯示logoalert result = new alert(本局積分, string.valueof(score), null, alerttype.info);/ 延遲4秒 result.settimeout(2000);/ 顯示閃屏界面midlet.display.setcurrent(result, this);return;if (isgamerun = true)/ 白色清空畫布 graph.setcolor(255

18、, 255, 255);graph.fillrect(0, 0, width, height);/ 繪制食物g.drawimage(foodimage, foodx, foody, graphics.hcenter | graphics.vcenter);/ 繪制蛇身graph.setcolor(0, 0, 255);for (int i = 0; i 0 ; i-)gamectrl.snakexi = gamectrl.snakexi - 1;gamectrl.snakeyi = gamectrl.snakeyi - 1;/ 蛇頭處理if (gamectrl.snakey0 3)gamect

19、rl.snakey0 -= 4;elseif (gamectrl.snakex0 gamectrl.width / 2)/ 如果已到屏幕上界則左移gamectrl.direction = 2;gamectrl.snakex0 -= 4; else/ 如果已到屏幕上界則右移gamectrl.direction = 3;gamectrl.snakex0 += 4; break;case 1:/ 蛇身處理for (int i = 19; i 0 ; i-)gamectrl.snakexi = gamectrl.snakexi - 1;gamectrl.snakeyi = gamectrl.snake

20、yi - 1;/ 蛇頭處理if (gamectrl.snakey0 gamectrl.width / 2)/ 如果已到屏幕上界則左移gamectrl.direction = 2;gamectrl.snakex0 -= 4; else/ 如果已到屏幕上界則右移gamectrl.direction = 3;gamectrl.snakex0 += 4; break;case 2:/ 蛇身處理for (int i = 19; i 0 ; i-)gamectrl.snakexi = gamectrl.snakexi - 1;gamectrl.snakeyi = gamectrl.snakeyi - 1;

21、/ 蛇頭處理if (gamectrl.snakex0 3)gamectrl.snakex0 -= 4;elseif (gamectrl.snakey0 gamectrl.height / 2)/ 如果已到屏幕上界則左移gamectrl.direction = 0;gamectrl.snakey0 -= 4; else/ 如果已到屏幕上界則右移gamectrl.direction = 1;gamectrl.snakey0 += 4; break;case 3:/ 蛇身處理for (int i = 19; i 0 ; i-)gamectrl.snakexi = gamectrl.snakexi -

22、 1;gamectrl.snakeyi = gamectrl.snakeyi - 1;/ 蛇頭處理if (gamectrl.snakex0 gamectrl.height / 2)/ 如果已到屏幕上界則左移gamectrl.direction = 0;gamectrl.snakey0 -= 4; else/ 如果已到屏幕上界則右移gamectrl.direction = 1;gamectrl.snakey0 += 4; break;/ 碰撞檢測if (gamectrl.snakex0 gamectrl.foodx - foodwidth / 2 &gamectrl.snakex0 gamect

23、rl.foody - foodheight / 2 &gamectrl.snakey0 gamectrl.foody + foodheight / 2)/ 計分gamectrl.score += 10;/ 生成新的食物位置getnextpos();/ 計時tickcount+;if (tickcount = 300)gamectrl.isgameover = true;/ 重繪畫面gamectrl.repaint();public void getnextpos()/ 在屏幕內隨機設置位置int x = (int)(rand.nextlong();gamectrl.foodx = (int)(

24、x % gamectrl.width);int y = (int)(rand.nextlong();gamectrl.foody = (int)(y % gamectrl.height);/ 使圖像限定在屏幕內if (gamectrl.foodx gamectrl.width - foodwidth / 2)gamectrl.foodx = gamectrl.width - foodwidth / 2;if (gamectrl.foody gamectrl.height - foodheight / 2)gamectrl.foody = gamectrl.height - foodheight

25、 / 2;2.6測試結果游戲運行狀況良好,未發現bug。第三章自我評價先是不太清楚圖形化界面的設計,后來在同學的幫助和自己的查找下解決了這個問題。后來在蛇的移動的表示上也不太清楚,找了一些資料后發現蛇身由一串基本圖形構成,每過一秒,檢測前面是什么,如果是空的,那么把頭畫成普通身體的樣子,再在前方(或側面,如果轉彎的話)再畫一個頭,并將其坐標記入數組,數組要足夠大,再把尾巴畫成背景色;如果前面是食物,尾巴就不刪除,這里的難點是數組里的操作和坐標的表示:把頭添在最后一個元素,把第一個元素提取(也就是尾巴)。最后在排行榜和存檔的讀取問題上遇到了困難,在同學的幫助下解決了這個難題。第四章總結這次java課程設計讓我重新認識到了編程的藝術,在學習、使用java的過程中,通過與以前所學的c/c+內容的對比,讓我進一步鞏固了c/c+的知識,并更進一步在總體上讓我對編程語言有了更新的認識。在不斷的設計、調試、修改的過程當中,我對程序的設計與構架在整體上有了長足的進步。在做java課程設計以前,我對java游戲開發只是停留在理論知識的水平上,是“紙上談兵”,缺乏實際的軟件開發經驗。這次通過做java課程設計,我完成了貪吃蛇游戲的軟件開發任務。在整個開發過程中遇到了很多問題,如蛇的移動的表示、排行榜和存檔的讀取問題、屏幕太閃爍的問題、圖形化界面的設計問題,但最終都被我一一解決,對

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論