下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、學(xué)院:計算機(jī)工程學(xué)院班 級:11級計算機(jī)科學(xué)與技術(shù) 1班設(shè)計人員:設(shè)計地點(單位):A5-103設(shè)計題目:貪吃蛇游戲完成日期:年 月日指導(dǎo)教師評語:成績(五級記分制):教師簽名:精品摘要近年來, java 作為一種新的編程語言,以其簡單性、可移植性和平臺無關(guān)性等優(yōu)點,得到了各個 國家廣泛地認(rèn)可。本文基于 java 技術(shù)和 Eclipse 開發(fā)環(huán)境,設(shè)計并實現(xiàn)了一個操作簡單、界面美觀的 “貪吃蛇”游戲。 “貪吃蛇”游戲是一個經(jīng)典的游戲,它因操作簡單、娛樂性強(qiáng)而廣受歡迎。就整個游 戲來說,目的是通過本游戲的設(shè)計與實現(xiàn),達(dá)到學(xué)習(xí) java 技術(shù)和熟悉軟件開發(fā)流程的目的。關(guān)鍵詞: java , 貪吃蛇
2、 , eclipse目錄緒論 11 Java 的概述 21.1 java 的簡介 21.2 環(huán)境配置 21.2.1 JDK 安裝 2.1.2.2 系統(tǒng)工具的選擇安裝 3.2 系統(tǒng)介紹 32.1 系統(tǒng)的介紹 32.2 設(shè)計目的 42.3 需求分析 42.3.1 游戲形狀需求 4.2.3.2 鍵盤事件處理 4.2.3.3 顯示需求 42.3.4 接口控制 43 系統(tǒng)設(shè)計 53.1 系統(tǒng)所需定義的類 5.3.2 功能設(shè)計 64 系統(tǒng)實現(xiàn) 64.1 界面初始化 64.2 蛇體實現(xiàn) 84.2.1 蛇體坐標(biāo)類 8.4.2.2 初始化蛇體 9.4.2.3 蛇體變化 94.3 食物實現(xiàn) 1.2.4.4 障礙物
3、實現(xiàn) 1.2.4.5 游戲控制實現(xiàn) 1.2.4.6 排行榜實現(xiàn) 1.2.5 游戲的測試 1.3.6 總結(jié) 1.4.致 謝 1.4.參考文獻(xiàn) 1.5.緒論貪吃蛇”游戲是一個經(jīng)典的游戲,對于程序來說貪吃蛇制作相對簡單,而且邏輯性強(qiáng),通常是要步入游戲開發(fā)這個隊伍前必練的項目。貪吃蛇這個游戲的制作方法 對于以前的我而言是很神秘的,我希望通過我們所學(xué)的知識和自己的努力把它剖析起 來。正是由于這個想法, 本文基于 java 技術(shù)和 Eclipse 開發(fā)環(huán)境, 設(shè)計并實現(xiàn)了一個 操作簡單、界面美觀的“貪吃蛇”游戲。由于時間的緊迫和技術(shù)有限,編寫的貪吃蛇 游戲還是相對簡單,但就整個游戲來說,目的是通過本游戲的
4、設(shè)計與實現(xiàn),達(dá)到學(xué)習(xí) java 技術(shù)和熟悉軟件開發(fā)流程的目的。 我相信在以后通過自己不斷的努力我會在編程 這條路上越走越遠(yuǎn)。本文首先介紹了 java 技術(shù),對 java 技術(shù)進(jìn)行了概述,然后對開 發(fā)工具進(jìn)行了選擇, 又進(jìn)行了需求分析進(jìn)而通過 java 語言設(shè)計出了貪吃蛇這個經(jīng)典的 小游戲,為了保證代碼的正確性和可靠性最后還進(jìn)行了系統(tǒng)測試。1 Java 的概述1.1 java 的簡介java最初被命名為Oak目標(biāo)設(shè)定在家用電器等小型系統(tǒng)的編程語言,來解決諸 如電視機(jī)、電話、鬧鐘、烤面包機(jī)等家用電器的控制和通訊問題。由于這些智能化家 電的市場需求沒有預(yù)期的高,Sun放棄了該項計劃。就在 Oak幾近
5、失敗之時,隨著互 聯(lián)網(wǎng)的發(fā)展,Sun看到了 Oak在計算機(jī)網(wǎng)絡(luò)上的廣闊應(yīng)用前景,于是改造了Oak,以“ Java ”的名稱正式發(fā)布。Java 不同于一般的編譯執(zhí)行計算機(jī)語言和解釋執(zhí)行計算機(jī)語言。 它首先將源代碼 編譯成二進(jìn)制字節(jié)碼 ( bytecode ),然后依賴各種不同平臺上的虛擬機(jī)來解釋執(zhí)行字節(jié) 碼,從而實現(xiàn)了“一次編譯、到處執(zhí)行”的跨平臺特性。不過,每次的編譯執(zhí)行需要 消耗一定的時間,這同時也在一定程度上降低了 Java 程序的運行效率。但在 J2SE1.4.2 發(fā)布后, Java 的執(zhí)行速度有了大幅提升 3 。Java 是一種跨平臺,適合于分布式計算環(huán)境的面向?qū)ο缶幊陶Z言。 具體來說
6、, 它具有如下特性: 簡單性、面向?qū)ο?、分布式、健壯性、結(jié)構(gòu)中立、 安全性、可移植、 解釋的、高性能、多線程、動態(tài)性等。1.2 環(huán)境配置1.2.1 JDK 安裝 安裝JDK安裝過程中可以自定義安裝目錄等信息,例如我們選擇安裝目錄為D:javajdk1.6.0_02; 安裝完成后,右擊“我的電腦” ,點擊“屬性”; 選擇“高級”選項卡,點擊“環(huán)境變量”在“系統(tǒng)變量”中,設(shè)置三項屬性, JAVA_HOME,PATH,CLASSPAff已存在貝U 點擊“編輯”,不存在則點擊“新建” ;(5) JAVA_HOM指明JDK安裝路徑?!伴_始” >“運行”,鍵入“ cm(” ; 鍵入命令“ java
7、-version ”,“java ”,“javac ”幾個命令,出現(xiàn)畫面,說明環(huán)境變量配置成功1.2.2 系統(tǒng)工具的選擇安裝本論文采用的工具是 Eclipse 。 Eclipse 是一個開放源代碼的、基于 Java 的可 擴(kuò)展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建 開發(fā)環(huán)境。幸運的是,Eclipse附帶了一個標(biāo)準(zhǔn)的插件集,包括Java開發(fā)工具(Java Development Tools , JDT)。2 系統(tǒng)介紹2.1 系統(tǒng)的介紹本論文設(shè)計的游戲名稱為貪吃蛇,蛇身是有很多的小方塊組成的,蛇頭與蛇身都是用小方塊來組成 , 每一個小方塊是蛇身上的最小單位, 貪吃蛇
8、所吃的食物也是有一個 個小方塊兒組成,食物會隨機(jī)出現(xiàn),當(dāng)蛇吃掉一個小方塊兒后蛇身會變長然后會隨機(jī) 出現(xiàn)下一個小方塊兒。障礙物也會隨機(jī)出現(xiàn),而且隨著時間增長,障礙物會增多,當(dāng) 蛇頭碰到蛇身、障礙物或者邊框的時游戲會自動結(jié)束。2.2 設(shè)計目的綜合運用在校所學(xué)的知識和技能,設(shè)計并實現(xiàn)貪吃蛇游戲,使自己熟悉應(yīng)用系統(tǒng) 的開發(fā)的過程, 培養(yǎng)獨立的思考能力, 校驗學(xué)習(xí)效果和動手能力, 提高實踐動手能力。2.3 需求分析在一定的范圍內(nèi), 給出一條小蛇和隨機(jī)出現(xiàn)一個食物與一個障礙物, 當(dāng)小蛇吃到 食物時蛇身就長長??紤]到用戶需求對蛇的移動做了多組快捷鍵設(shè)置,游戲整體界面 簡潔,操作簡單。2.3.1 游戲形狀需求
9、 繪制簡潔清晰的小蛇和食物,小蛇由幾個方塊組成,食物由一個圖片組成。障礙 物由多個圖片組成隨機(jī)形狀。2.3.2 鍵盤事件處理小蛇可以通過鍵盤方向鍵(上,下,左,右)或者按鍵(W,S,A,D)進(jìn)行方向的移動。當(dāng)蛇頭碰到障礙物,蛇身或者墻壁的時候游戲會結(jié)束。2.3.3 顯示需求 當(dāng)小蛇吃掉食物后會變長,并且吃完食物時食物會消失,并立即產(chǎn)生一個 1 個新 的食物,蛇身隨著蛇的移動不斷刷新。2.3.4 接口控制本軟件通過鍵盤進(jìn)行操作,在 windows 操作系統(tǒng)下,利用鍵盤的按鍵進(jìn)行操作, 要使用鍵盤的接口事件。3 系統(tǒng)設(shè)計3.1系統(tǒng)所需定義的類游戲設(shè)計中所涉及的相關(guān)資源,如圖3.1 : &
10、srcJ tjj stoTest-J Jdbc_connectj3Vd dbcT est.javaJ Score.iauaISnakeActjavs _ SnakFramt.java Snake MainH jdbc. propertiesA Bh JRE Systcrn Library JavSE-1*6 直 Referenced Libraries> 亟 JUnit Aj imageU back2jpgLal草莓J PgJi石頭J pg> & lib圖3.1系統(tǒng)資源涉及資源如下:1、SnakeMain.java類是程序運行主類,通過調(diào)用相關(guān)資源實現(xiàn)游戲運行。2、Snak
11、eAt.java類是蛇的實體類,包含蛇身點的橫坐標(biāo)與縱坐標(biāo)屬性,通過多 個此類對象實現(xiàn)蛇身。3、SnakeFrame類是游戲主體設(shè)計類,包含游戲界面、蛇身繪制,游戲設(shè)置、監(jiān) 聽,蛇身移動操作。4、image文件夾包含游戲主體背景圖片,食物圖片與障礙物圖片。5、Jdbc_connect.java 連接ORACL數(shù)據(jù)庫,實現(xiàn)記錄游戲記錄與游戲排行。6、score.java 游戲記錄類。3.2 功能設(shè)計1、主界面通過一個窗口與各按鈕實現(xiàn)主界面設(shè)計,主界面主體為一個窗口,通過繪制一個 方框做為游戲邊界,以圖片分別實現(xiàn)蛇身與障礙物顯示。按鈕與狀態(tài)進(jìn)行游戲控制與 顯示游戲狀態(tài)。2、游戲操作通過對游戲線程控
12、制實現(xiàn)游戲不同難度(移動速度)設(shè)定,通過鍵盤監(jiān)聽器設(shè)置實現(xiàn) 貪吃蛇移動方向控制,用集合存儲蛇身,通過對集合的操作實現(xiàn)蛇身的移動,吃到食 物集合長度加一,以線程中斷彈窗實現(xiàn)游戲結(jié)束。3、參數(shù)設(shè)置游戲開始時設(shè)置保護(hù)蛇頭操作,障礙物與食物的出現(xiàn)位置為隨機(jī)的,且隨著游戲 時間增長障礙物數(shù)量增加,且食物與障礙物不得出現(xiàn)在蛇身存在的位置,使用 ORACLE 數(shù)據(jù)庫記錄游戲記錄并進(jìn)行排行操作。4 系統(tǒng)實現(xiàn)4.1 界面初始化public void paintComponent(Graphics g) super.paintComponent(g);g.drawImage(img,5, 45, 765, 510
13、,null); /設(shè)置一個方框,窗口的游戲主界面 / 繪制 img 中當(dāng)前可用的圖像。/g.drawRect(5, 45, 765, 510);/ 51,34 g.drawString(" 分?jǐn)?shù): " + score, 650, 20); g.drawString(" 速度: " + speed, 650, 35); if (start) /開始游戲g.setColor(Color.RED); / 設(shè)置游戲中的食物的顏色為紅色g.drawImage(img1,5 + rx * 15, 45 + ry * 15, 15, 15,null,null);/ 蛇
14、開始出現(xiàn)/g.fillOval(5 + rx * 15, 45 + ry * 15, 15, 15);g.setColor(Color.white); / 設(shè)置蛇的顏色for (int i = 0; i < list.size(); i+) /畫蛇身,有幾個就畫幾個g.fill3DRect(5 + list.get(i).getX() * 15, /使用當(dāng)前顏色填充突起 3d 方塊。45 + list.get(i).getY() * 15, 15, 15,true);/ 設(shè)置障礙物Set<SnakeAct> set = hinderSet;/障礙物節(jié)點集合Iterator&l
15、t;SnakeAct> it1 = set.iterator();while (it1.hasNext() SnakeAct f = (SnakeAct) it1.next();g.drawImage(img2,5 + f.getX() * 15, 45 + f.getY() * 15, 15, 15,null,null); 初始化結(jié)果如圖 3.2 :圖3.2初始化界面4.2 蛇體實現(xiàn)4.2.1蛇體坐標(biāo)類package testfile;public class Sn akeAct / 蛇體坐標(biāo)類private int x; /蛇身點橫坐標(biāo)private int y; /蛇身點縱坐標(biāo)pu
16、blic Sn akeAct(i nt x, i nt y) super();this.x = x;this.y = y;public Sn akeAct() super();public int getX() return x;public void setX(int x) this.x = x;public int getY() return y;public void setY(int y) this.y = y;通過兩個坐標(biāo)確定組成蛇身方塊的位置。4.2.2 初始化蛇體g.drawImage(img1,5 + rx * 15, 45 + ry * 15, 15, 15,null,nul
17、l); /蛇開始出現(xiàn)g.setColor(Color.white); / 設(shè)置蛇的顏色for (int i = 0; i < list.size(); i+) /畫蛇身,有幾個就畫幾個g.fill3DRect(5 + list.get(i).getX() * 15, /使用當(dāng)前顏色填充突起 3d 方塊。45 + list.get(i).getY() * 15, 15, 15,true);4.2.3 蛇體變化public void otherMove() /蛇身移動SnakeAct tempAct = new SnakeAct(); for (int i = 0; i < list.
18、size(); i+) if (i=1) / 保護(hù)蛇頭list.get(i).setX(list.get(0).getX();list.get(i).setY(list.get(0).getY();else if (i>1) tempAct = list.get(i-1);list.set(i-1, list.get(i); list.set(i,tempAct);private void eat() / 吃到食物if (rx=list.get(0).getX()&&ry=list.get(0).getY() createFood();SnakeAct tempAct =
19、 new SnakeAct();tempAct.setX(list.get(list.size()-1).getX();tempAct.setY(list.get(list.size()-1).getY(); list.add(tempAct);score += 100+100*speed;tempeat1+=1;if (tempeat1-tempeat2>=5) tempeat2 += 5;if (speed<9) speed+=1;if (speed-tempspeed>=3) tempspeed+=3; setHinder();public void run() /蛇
20、自動移動/ TODO Auto-generated method stub while (true) if (start) switch (temp) case 1:move(0, -1); break;case 2:move(0, 1); break;case 3:move(1, 0); break;case 4: move(-1, 0); break;default:move(1, 0); break;repaint();try Thread.sleep(500-(50*speed); /移動速率 catch (In terruptedExcepti on e) e.pri ntStack
21、Trace();初始化設(shè)置蛇體基本方塊的形狀與顏色,切對初始蛇頭文職進(jìn)行限制,避免開始 游戲時由于蛇頭位置導(dǎo)致游戲直接結(jié)束,通過對蛇身集合的操作實現(xiàn)蛇身的增長與蛇 的移動。4.3 食物實現(xiàn)通過隨機(jī)函數(shù)生成食物坐標(biāo),且對食物出現(xiàn)位置進(jìn)行判斷,食物不能出現(xiàn)在蛇身 坐標(biāo)上。4.4障礙物實現(xiàn)通過隨機(jī)函數(shù)生成障礙物坐標(biāo)進(jìn)行障礙物顯示,并對障礙物位置進(jìn)行判斷,不允 許障礙物出現(xiàn)在蛇身坐標(biāo)。4.5游戲控制實現(xiàn)通過鍵位監(jiān)聽器對鍵位響應(yīng)與相關(guān)操作實現(xiàn)游戲操作,控制貪吃蛇的上下左右的 移動,當(dāng)沒有監(jiān)聽到響應(yīng)鍵位操作時貪吃蛇保持當(dāng)前移動狀態(tài)。4.6排行榜實現(xiàn)4.6.1數(shù)據(jù)庫結(jié)構(gòu)UBJDSCOREIRDATE1221
22、90002014XG/191V0G14 221130002014X6/1911:06:14 -32710002014/1911:53:38 -4174002014/6/1313:5627 -5164002CJ14/6/1310:36:27 &243002014/6/1311-10:110 -TZ53002014/6/1311-10:10 -4.6.2排行榜簡介通過ORACL數(shù)據(jù)庫記錄游戲記錄,從數(shù)據(jù)庫中讀取數(shù)據(jù)并排序,通過窗口顯示排 行數(shù)據(jù),實現(xiàn)游戲排行榜功能。5游戲的測試測試的目的是盡可能的發(fā)現(xiàn)潛在的錯誤和缺陷,為了保證系統(tǒng)的質(zhì)量和可靠性,我們對游戲進(jìn)行了測試。在開發(fā)的每一個階段都應(yīng)
23、精心設(shè)計,并利用實例來運行程序, 使可以發(fā)現(xiàn)錯誤。系統(tǒng)的測試是為了發(fā)現(xiàn)錯誤而要執(zhí)行的過程。由于技術(shù)水平有限此 課程設(shè)計所設(shè)計的貪吃蛇游戲過于簡單,但是也付出了巨大的努力,所以無論簡單與 否測試都是必須執(zhí)行的過程。本程序進(jìn)行測試后沒有發(fā)現(xiàn)異常。6總結(jié)此次課程設(shè)計讓我們學(xué)到很多, 也了解了程序開發(fā)的具體過程。 在學(xué)習(xí)、使用 java 的過程中,讓我沒們對編程語言有了新的認(rèn)識。在不斷的調(diào)試、修改的過程當(dāng)中,我 們對程序的設(shè)計與構(gòu)架在整體上有了長足的進(jìn)步。在做 java 課程設(shè)計以前,我們對 Java 游戲開發(fā)只是停留在理論知識的水平上,缺乏實際的軟件開發(fā)經(jīng)驗。這次通過做 java 課程設(shè)計,我們完成了貪吃蛇游戲的軟件開發(fā)任務(wù)。在整個開發(fā)過程中遇到了很 多問題,如蛇的移動的表示、圖形化界面的設(shè)計問題,但這些問題最終都被攻克了下 來。首先,完成了從局部到整體從細(xì)節(jié)到大局的轉(zhuǎn)變。設(shè)計過程中 , 經(jīng)常會遇到困難 , 我們學(xué)會通過反復(fù)思考和測試, 然后找出自己的錯誤并加以改正, 再進(jìn)行下一個步驟。 這個程序就是在這樣反復(fù)過程序中一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 臨床醫(yī)生怎樣合理用血
- 2024民間車輛所有權(quán)轉(zhuǎn)讓及質(zhì)押借款合同3篇
- 啦啦操 說課稿-2023-2024學(xué)年高一上學(xué)期體育與健康人教版必修第一冊001
- 智能交通設(shè)備售后服務(wù)合同
- 教育機(jī)構(gòu)合作辦學(xué)合同
- 農(nóng)副產(chǎn)品直供配送服務(wù)協(xié)議書
- 智能健身設(shè)備開發(fā)合同
- 搜索引擎優(yōu)化咨詢服務(wù)協(xié)議
- 智能倉儲管理系統(tǒng)合同
- 新零售業(yè)線下門店數(shù)字化轉(zhuǎn)型方案
- 液壓爬模作業(yè)指導(dǎo)書
- 劇院的建筑設(shè)計規(guī)范標(biāo)準(zhǔn)
- 開封辦公樓頂發(fā)光字制作預(yù)算單
- 遺傳分析的一個基本原理是DNA的物理距離和遺傳距離方面...
- 安全生產(chǎn)標(biāo)準(zhǔn)化管理工作流程圖
- 德龍自卸車合格證掃描件(原圖)
- 初一英語單詞辨音專項練習(xí)(共4頁)
- [國家公務(wù)員考試密押題庫]申論模擬925
- 塔式起重機(jī)檢查表(共18頁)
- 河北省建設(shè)工程竣工驗收報告
- 付款申請單打印版模板
評論
0/150
提交評論