




免費預(yù)覽已結(jié)束,剩余14頁可下載查看
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
學(xué)院: 計算機工程學(xué)院 班 級: 11級計算機科學(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)典的游戲,它因操作簡單、娛樂性強而廣受歡迎。就整個游戲來說,目的是通過本游戲的設(shè)計與實現(xiàn),達(dá)到學(xué)習(xí)java技術(shù)和熟悉軟件開發(fā)流程的目的。關(guān)鍵詞:java , 貪吃蛇, eclipse目錄緒論11 Java的概述21.1 java的簡介21.2 環(huán)境配置21.2.1 JDK安裝21.2.2 系統(tǒng)工具的選擇安裝32 系統(tǒng)介紹32.1 系統(tǒng)的介紹32.2 設(shè)計目的42.3 需求分析42.3.1 游戲形狀需求42.3.2 鍵盤事件處理42.3.3 顯示需求42.3.4 接口控制43 系統(tǒng)設(shè)計53.1 系統(tǒng)所需定義的類53.2 功能設(shè)計64 系統(tǒng)實現(xiàn)64.1 界面初始化64.2 蛇體實現(xiàn)84.2.1 蛇體坐標(biāo)類84.2.2 初始化蛇體94.2.3 蛇體變化94.3 食物實現(xiàn)124.4 障礙物實現(xiàn)124.5 游戲控制實現(xiàn)124.6 排行榜實現(xiàn)125 游戲的測試136 總結(jié)14致 謝14參考文獻(xiàn)15 緒論“貪吃蛇”游戲是一個經(jīng)典的游戲,對于程序來說貪吃蛇制作相對簡單,而且邏輯性強,通常是要步入游戲開發(fā)這個隊伍前必練的項目。貪吃蛇這個游戲的制作方法對于以前的我而言是很神秘的,我希望通過我們所學(xué)的知識和自己的努力把它剖析起來。正是由于這個想法,本文基于java技術(shù)和Eclipse開發(fā)環(huán)境,設(shè)計并實現(xiàn)了一個操作簡單、界面美觀的“貪吃蛇”游戲。由于時間的緊迫和技術(shù)有限,編寫的貪吃蛇游戲還是相對簡單,但就整個游戲來說,目的是通過本游戲的設(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)的編程語言,來解決諸如電視機、電話、鬧鐘、烤面包機等家用電器的控制和通訊問題。由于這些智能化家電的市場需求沒有預(yù)期的高,Sun放棄了該項計劃。就在Oak幾近失敗之時,隨著互聯(lián)網(wǎng)的發(fā)展,Sun看到了Oak在計算機網(wǎng)絡(luò)上的廣闊應(yīng)用前景,于是改造了Oak,以“Java”的名稱正式發(fā)布。Java 不同于一般的編譯執(zhí)行計算機語言和解釋執(zhí)行計算機語言。它首先將源代碼編譯成二進(jìn)制字節(jié)碼(bytecode),然后依賴各種不同平臺上的虛擬機來解釋執(zhí)行字節(jié)碼,從而實現(xiàn)了“一次編譯、到處執(zhí)行”的跨平臺特性。不過,每次的編譯執(zhí)行需要消耗一定的時間,這同時也在一定程度上降低了 Java 程序的運行效率。但在 J2SE 1.4.2 發(fā)布后,Java 的執(zhí)行速度有了大幅提升3。Java是一種跨平臺,適合于分布式計算環(huán)境的面向?qū)ο缶幊陶Z言。 具體來說,它具有如下特性: 簡單性、面向?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,CLASSPATH,若已存在則點擊“編輯”,不存在則點擊“新建”; JAVA_HOME指明JDK安裝路徑。 “開始”;“運行”,鍵入“cmd”; 鍵入命令“java -version”,“java”,“javac”幾個命令,出現(xiàn)畫面,說明環(huán)境變量配置成功。1.2.2 系統(tǒng)工具的選擇安裝本論文采用的工具是Eclipse。Eclipse 是一個開放源代碼的、基于 Java 的可擴展開發(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è)計的游戲名稱為貪吃蛇,蛇身是有很多的小方塊組成的,蛇頭與蛇身都是用小方塊來組成,每一個小方塊是蛇身上的最小單位,貪吃蛇所吃的食物也是有一個個小方塊兒組成,食物會隨機出現(xiàn),當(dāng)蛇吃掉一個小方塊兒后蛇身會變長然后會隨機出現(xiàn)下一個小方塊兒。障礙物也會隨機出現(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), 給出一條小蛇和隨機出現(xiàn)一個食物與一個障礙物,當(dāng)小蛇吃到食物時蛇身就長長??紤]到用戶需求對蛇的移動做了多組快捷鍵設(shè)置,游戲整體界面簡潔,操作簡單。2.3.1 游戲形狀需求繪制簡潔清晰的小蛇和食物,小蛇由幾個方塊組成,食物由一個圖片組成。障礙物由多個圖片組成隨機形狀。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:圖3.1 系統(tǒng)資源涉及資源如下:1、SnakeMain.java 類是程序運行主類,通過調(diào)用相關(guān)資源實現(xiàn)游戲運行。2、SnakeAt.java 類是蛇的實體類,包含蛇身點的橫坐標(biāo)與縱坐標(biāo)屬性,通過多個此類對象實現(xiàn)蛇身。3、SnakeFrame 類是游戲主體設(shè)計類,包含游戲界面、蛇身繪制,游戲設(shè)置、監(jiān)聽,蛇身移動操作。4、image文件夾包含游戲主體背景圖片,食物圖片與障礙物圖片。5、Jdbc_connect.java 連接ORACLE數(shù)據(jù)庫,實現(xiàn)記錄游戲記錄與游戲排行。6、score.java 游戲記錄類。3.2功能設(shè)計1、 主界面通過一個窗口與各按鈕實現(xiàn)主界面設(shè)計,主界面主體為一個窗口,通過繪制一個方框做為游戲邊界,以圖片分別實現(xiàn)蛇身與障礙物顯示。按鈕與狀態(tài)進(jìn)行游戲控制與顯示游戲狀態(tài)。2、 游戲操作通過對游戲線程控制實現(xiàn)游戲不同難度(移動速度)設(shè)定,通過鍵盤監(jiān)聽器設(shè)置實現(xiàn)貪吃蛇移動方向控制,用集合存儲蛇身,通過對集合的操作實現(xiàn)蛇身的移動,吃到食物集合長度加一,以線程中斷彈窗實現(xiàn)游戲結(jié)束。3、 參數(shù)設(shè)置游戲開始時設(shè)置保護(hù)蛇頭操作,障礙物與食物的出現(xiàn)位置為隨機的,且隨著游戲時間增長障礙物數(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,null); /設(shè)置一個方框,窗口的游戲主界面/繪制img中當(dāng)前可用的圖像。/g.drawRect(5, 45, 765, 510);/ 51,34g.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); /蛇開始出現(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 set = hinderSet;/障礙物節(jié)點集合Iterator 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 SnakeAct /蛇體坐標(biāo)類private int x; /蛇身點橫坐標(biāo)private int y; /蛇身點縱坐標(biāo)public SnakeAct(int x, int y) super();this.x = x;this.y = y;public SnakeAct() 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,null); /蛇開始出現(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 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 = 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=3) tempspeed+=3;setHinder();public void run() /蛇 自動移動/ TODO Auto-generated method stubwhile (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 (InterruptedException e) e.printStackTrace();初始化設(shè)置蛇體基本方塊的形狀與顏色,切對初始蛇頭文職進(jìn)行限制,避免開始游戲時由于蛇頭位置導(dǎo)致游戲直接結(jié)束,通過對蛇身集合的操作實現(xiàn)蛇身的增長與蛇的移動。4.3食物實現(xiàn)通過隨機函數(shù)生成食物坐標(biāo),且對食物出現(xiàn)位置進(jìn)行判斷,食物不能出現(xiàn)在蛇身坐標(biāo)上。4.4 障礙物實現(xiàn)通過隨機函數(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)4.6.2排行榜簡介通過ORACLE數(shù)據(jù)庫記錄游戲記錄,從數(shù)據(jù)庫中讀取數(shù)據(jù)并排序,通過窗口顯示排行數(shù)據(jù),實現(xiàn)游戲排行榜功能。5 游戲的測試測試的目的是盡可能的發(fā)現(xiàn)潛在的錯誤和缺陷,為了保證系統(tǒng)的質(zhì)量和可靠性,我們對游戲進(jìn)行了測試。在開發(fā)的每一個階段都應(yīng)精心設(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ù)過程序中一點一點的完成的。其次,做設(shè)計是一個不斷學(xué)習(xí)新事物的過程
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 光伏電站節(jié)能改造與運維服務(wù)承包協(xié)議
- 廢舊金屬回收與環(huán)保技術(shù)研發(fā)合作協(xié)議
- 智能家居電商3D產(chǎn)品模型設(shè)計與用戶反饋服務(wù)協(xié)議
- 跨界新能源汽車電池梯次利用環(huán)保產(chǎn)業(yè)合作協(xié)議
- 購物中心運動品牌區(qū)品牌入駐與委托經(jīng)營合同
- 網(wǎng)絡(luò)游戲虛擬道具設(shè)計版權(quán)授權(quán)及衍生品開發(fā)協(xié)議
- 抖音直播平臺內(nèi)容創(chuàng)作者權(quán)益保障協(xié)議
- 箱包鞋帽五金配件品牌授權(quán)與銷售合作協(xié)議
- 產(chǎn)業(yè)園區(qū)廠房租賃及人才引進(jìn)合作協(xié)議
- 模具行業(yè)技術(shù)改造質(zhì)量檢測與改進(jìn)服務(wù)協(xié)議
- 上海市徐匯區(qū)2025屆八下物理期末考試試題含解析
- Java高級軟件開發(fā)面試題及答案
- 3.4 羧酸的衍生物 課件高二下學(xué)期化學(xué)人教版(2019)選擇性必修3
- 2025年消防安全培訓(xùn)考試試卷及完整答案
- 2025年信息科技與創(chuàng)新能力考核試題及答案
- 2025年智慧城市建設(shè)相關(guān)知識考試試卷及答案
- 2025年4月自考00522英語國家概況答案及評分參考
- 2025年江西南昌初三一模中考語文試卷試題(含答案詳解)
- 2025年吉林省長春市中考一模歷史試題(原卷版+解析版)
- 2024年安徽演藝集團(tuán)有限責(zé)任公司招聘筆試真題
- 天津2025年天津市面向昌都籍未就業(yè)少數(shù)民族高校畢業(yè)生招聘事業(yè)單位人員筆試歷年參考題庫附帶答案詳解
評論
0/150
提交評論