java貪吃蛇課程設(shè)計(jì).doc_第1頁
java貪吃蛇課程設(shè)計(jì).doc_第2頁
java貪吃蛇課程設(shè)計(jì).doc_第3頁
java貪吃蛇課程設(shè)計(jì).doc_第4頁
java貪吃蛇課程設(shè)計(jì).doc_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余14頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

學(xué)院: 計(jì)算機(jī)工程學(xué)院 班 級: 11級計(jì)算機(jī)科學(xué)與技術(shù)1班 設(shè)計(jì)人員: 設(shè)計(jì)地點(diǎn)(單位): A5-103 設(shè)計(jì)題目: 貪吃蛇游戲 完成日期: 年 月 日 指導(dǎo)教師評語: _ 成績(五級記分制):_ 教師簽名:_摘要近年來,java作為一種新的編程語言,以其簡單性、可移植性和平臺(tái)無關(guān)性等優(yōu)點(diǎn),得到了各個(gè)國家廣泛地認(rèn)可。本文基于java技術(shù)和Eclipse開發(fā)環(huán)境,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)操作簡單、界面美觀的“貪吃蛇”游戲。“貪吃蛇”游戲是一個(gè)經(jīng)典的游戲,它因操作簡單、娛樂性強(qiáng)而廣受歡迎。就整個(gè)游戲來說,目的是通過本游戲的設(shè)計(jì)與實(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è)計(jì)目的42.3 需求分析42.3.1 游戲形狀需求42.3.2 鍵盤事件處理42.3.3 顯示需求42.3.4 接口控制43 系統(tǒng)設(shè)計(jì)53.1 系統(tǒng)所需定義的類53.2 功能設(shè)計(jì)64 系統(tǒng)實(shí)現(xiàn)64.1 界面初始化64.2 蛇體實(shí)現(xiàn)84.2.1 蛇體坐標(biāo)類84.2.2 初始化蛇體94.2.3 蛇體變化94.3 食物實(shí)現(xiàn)124.4 障礙物實(shí)現(xiàn)124.5 游戲控制實(shí)現(xiàn)124.6 排行榜實(shí)現(xiàn)125 游戲的測試136 總結(jié)14致 謝14參考文獻(xiàn)15 緒論“貪吃蛇”游戲是一個(gè)經(jīng)典的游戲,對于程序來說貪吃蛇制作相對簡單,而且邏輯性強(qiáng),通常是要步入游戲開發(fā)這個(gè)隊(duì)伍前必練的項(xiàng)目。貪吃蛇這個(gè)游戲的制作方法對于以前的我而言是很神秘的,我希望通過我們所學(xué)的知識和自己的努力把它剖析起來。正是由于這個(gè)想法,本文基于java技術(shù)和Eclipse開發(fā)環(huán)境,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)操作簡單、界面美觀的“貪吃蛇”游戲。由于時(shí)間的緊迫和技術(shù)有限,編寫的貪吃蛇游戲還是相對簡單,但就整個(gè)游戲來說,目的是通過本游戲的設(shè)計(jì)與實(shí)現(xiàn),達(dá)到學(xué)習(xí)java技術(shù)和熟悉軟件開發(fā)流程的目的。我相信在以后通過自己不斷的努力我會(huì)在編程這條路上越走越遠(yuǎn)。本文首先介紹了java技術(shù),對java技術(shù)進(jìn)行了概述,然后對開發(fā)工具進(jìn)行了選擇,又進(jìn)行了需求分析進(jìn)而通過java語言設(shè)計(jì)出了貪吃蛇這個(gè)經(jīng)典的小游戲,為了保證代碼的正確性和可靠性最后還進(jìn)行了系統(tǒng)測試。1 Java的概述1.1 java的簡介java最初被命名為Oak,目標(biāo)設(shè)定在家用電器等小型系統(tǒng)的編程語言,來解決諸如電視機(jī)、電話、鬧鐘、烤面包機(jī)等家用電器的控制和通訊問題。由于這些智能化家電的市場需求沒有預(yù)期的高,Sun放棄了該項(xiàng)計(jì)劃。就在Oak幾近失敗之時(shí),隨著互聯(lián)網(wǎng)的發(fā)展,Sun看到了Oak在計(jì)算機(jī)網(wǎng)絡(luò)上的廣闊應(yīng)用前景,于是改造了Oak,以“Java”的名稱正式發(fā)布。Java 不同于一般的編譯執(zhí)行計(jì)算機(jī)語言和解釋執(zhí)行計(jì)算機(jī)語言。它首先將源代碼編譯成二進(jìn)制字節(jié)碼(bytecode),然后依賴各種不同平臺(tái)上的虛擬機(jī)來解釋執(zhí)行字節(jié)碼,從而實(shí)現(xiàn)了“一次編譯、到處執(zhí)行”的跨平臺(tái)特性。不過,每次的編譯執(zhí)行需要消耗一定的時(shí)間,這同時(shí)也在一定程度上降低了 Java 程序的運(yùn)行效率。但在 J2SE 1.4.2 發(fā)布后,Java 的執(zhí)行速度有了大幅提升3。Java是一種跨平臺(tái),適合于分布式計(jì)算環(huán)境的面向?qū)ο缶幊陶Z言。 具體來說,它具有如下特性: 簡單性、面向?qū)ο?、分布式、健壯性、結(jié)構(gòu)中立、安全性、可移植、解釋的、高性能、多線程、動(dòng)態(tài)性等。1.2 環(huán)境配置1.2.1 JDK安裝 安裝JDK,安裝過程中可以自定義安裝目錄等信息,例如我們選擇安裝目錄為D:javajdk1.6.0_02; 安裝完成后,右擊“我的電腦”,點(diǎn)擊“屬性”; 選擇“高級”選項(xiàng)卡,點(diǎn)擊“環(huán)境變量” 在“系統(tǒng)變量”中,設(shè)置三項(xiàng)屬性,JAVA_HOME,PATH,CLASSPATH,若已存在則點(diǎn)擊“編輯”,不存在則點(diǎn)擊“新建”; JAVA_HOME指明JDK安裝路徑。 “開始”;“運(yùn)行”,鍵入“cmd”; 鍵入命令“java -version”,“java”,“javac”幾個(gè)命令,出現(xiàn)畫面,說明環(huán)境變量配置成功。1.2.2 系統(tǒng)工具的選擇安裝本論文采用的工具是Eclipse。Eclipse 是一個(gè)開放源代碼的、基于 Java 的可擴(kuò)展開發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)的是,Eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括 Java 開發(fā)工具(Java Development Tools,JDT)。 2 系統(tǒng)介紹2.1 系統(tǒng)的介紹本論文設(shè)計(jì)的游戲名稱為貪吃蛇,蛇身是有很多的小方塊組成的,蛇頭與蛇身都是用小方塊來組成,每一個(gè)小方塊是蛇身上的最小單位,貪吃蛇所吃的食物也是有一個(gè)個(gè)小方塊兒組成,食物會(huì)隨機(jī)出現(xiàn),當(dāng)蛇吃掉一個(gè)小方塊兒后蛇身會(huì)變長然后會(huì)隨機(jī)出現(xiàn)下一個(gè)小方塊兒。障礙物也會(huì)隨機(jī)出現(xiàn),而且隨著時(shí)間增長,障礙物會(huì)增多,當(dāng)蛇頭碰到蛇身、障礙物或者邊框的時(shí)游戲會(huì)自動(dòng)結(jié)束。2.2 設(shè)計(jì)目的 綜合運(yùn)用在校所學(xué)的知識和技能,設(shè)計(jì)并實(shí)現(xiàn)貪吃蛇游戲,使自己熟悉應(yīng)用系統(tǒng)的開發(fā)的過程,培養(yǎng)獨(dú)立的思考能力,校驗(yàn)學(xué)習(xí)效果和動(dòng)手能力,提高實(shí)踐動(dòng)手能力。2.3 需求分析在一定的范圍內(nèi), 給出一條小蛇和隨機(jī)出現(xiàn)一個(gè)食物與一個(gè)障礙物,當(dāng)小蛇吃到食物時(shí)蛇身就長長??紤]到用戶需求對蛇的移動(dòng)做了多組快捷鍵設(shè)置,游戲整體界面簡潔,操作簡單。2.3.1 游戲形狀需求繪制簡潔清晰的小蛇和食物,小蛇由幾個(gè)方塊組成,食物由一個(gè)圖片組成。障礙物由多個(gè)圖片組成隨機(jī)形狀。2.3.2 鍵盤事件處理小蛇可以通過鍵盤方向鍵(上,下,左,右)或者按鍵(W,S,A,D)進(jìn)行方向的移動(dòng)。當(dāng)蛇頭碰到障礙物,蛇身或者墻壁的時(shí)候游戲會(huì)結(jié)束。2.3.3 顯示需求當(dāng)小蛇吃掉食物后會(huì)變長,并且吃完食物時(shí)食物會(huì)消失,并立即產(chǎn)生一個(gè)1個(gè)新的食物,蛇身隨著蛇的移動(dòng)不斷刷新。2.3.4 接口控制本軟件通過鍵盤進(jìn)行操作,在windows操作系統(tǒng)下,利用鍵盤的按鍵進(jìn)行操作,要使用鍵盤的接口事件。3 系統(tǒng)設(shè)計(jì)3.1 系統(tǒng)所需定義的類游戲設(shè)計(jì)中所涉及的相關(guān)資源,如圖3.1:圖3.1 系統(tǒng)資源涉及資源如下:1、SnakeMain.java 類是程序運(yùn)行主類,通過調(diào)用相關(guān)資源實(shí)現(xiàn)游戲運(yùn)行。2、SnakeAt.java 類是蛇的實(shí)體類,包含蛇身點(diǎn)的橫坐標(biāo)與縱坐標(biāo)屬性,通過多個(gè)此類對象實(shí)現(xiàn)蛇身。3、SnakeFrame 類是游戲主體設(shè)計(jì)類,包含游戲界面、蛇身繪制,游戲設(shè)置、監(jiān)聽,蛇身移動(dòng)操作。4、image文件夾包含游戲主體背景圖片,食物圖片與障礙物圖片。5、Jdbc_connect.java 連接ORACLE數(shù)據(jù)庫,實(shí)現(xiàn)記錄游戲記錄與游戲排行。6、score.java 游戲記錄類。3.2功能設(shè)計(jì)1、 主界面通過一個(gè)窗口與各按鈕實(shí)現(xiàn)主界面設(shè)計(jì),主界面主體為一個(gè)窗口,通過繪制一個(gè)方框做為游戲邊界,以圖片分別實(shí)現(xiàn)蛇身與障礙物顯示。按鈕與狀態(tài)進(jìn)行游戲控制與顯示游戲狀態(tài)。2、 游戲操作通過對游戲線程控制實(shí)現(xiàn)游戲不同難度(移動(dòng)速度)設(shè)定,通過鍵盤監(jiān)聽器設(shè)置實(shí)現(xiàn)貪吃蛇移動(dòng)方向控制,用集合存儲(chǔ)蛇身,通過對集合的操作實(shí)現(xiàn)蛇身的移動(dòng),吃到食物集合長度加一,以線程中斷彈窗實(shí)現(xiàn)游戲結(jié)束。3、 參數(shù)設(shè)置游戲開始時(shí)設(shè)置保護(hù)蛇頭操作,障礙物與食物的出現(xiàn)位置為隨機(jī)的,且隨著游戲時(shí)間增長障礙物數(shù)量增加,且食物與障礙物不得出現(xiàn)在蛇身存在的位置,使用ORACLE數(shù)據(jù)庫記錄游戲記錄并進(jìn)行排行操作。4 系統(tǒng)實(shí)現(xiàn)4.1界面初始化public void paintComponent(Graphics g) super.paintComponent(g);g.drawImage(img,5, 45, 765, 510,null); /設(shè)置一個(gè)方框,窗口的游戲主界面/繪制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è)就畫幾個(gè)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é)點(diǎn)集合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蛇體實(shí)現(xiàn)4.2.1 蛇體坐標(biāo)類package testfile;public class SnakeAct /蛇體坐標(biāo)類private int x; /蛇身點(diǎn)橫坐標(biāo)private int y; /蛇身點(diǎn)縱坐標(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;通過兩個(gè)坐標(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è)就畫幾個(gè)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() /蛇身移動(dòng)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() /蛇 自動(dòng)移動(dòng)/ 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); /移動(dòng)速率 catch (InterruptedException e) e.printStackTrace();初始化設(shè)置蛇體基本方塊的形狀與顏色,切對初始蛇頭文職進(jìn)行限制,避免開始游戲時(shí)由于蛇頭位置導(dǎo)致游戲直接結(jié)束,通過對蛇身集合的操作實(shí)現(xiàn)蛇身的增長與蛇的移動(dòng)。4.3食物實(shí)現(xiàn)通過隨機(jī)函數(shù)生成食物坐標(biāo),且對食物出現(xiàn)位置進(jìn)行判斷,食物不能出現(xiàn)在蛇身坐標(biāo)上。4.4 障礙物實(shí)現(xiàn)通過隨機(jī)函數(shù)生成障礙物坐標(biāo)進(jìn)行障礙物顯示,并對障礙物位置進(jìn)行判斷,不允許障礙物出現(xiàn)在蛇身坐標(biāo)。4.5游戲控制實(shí)現(xiàn)通過鍵位監(jiān)聽器對鍵位響應(yīng)與相關(guān)操作實(shí)現(xiàn)游戲操作,控制貪吃蛇的上下左右的移動(dòng),當(dāng)沒有監(jiān)聽到響應(yīng)鍵位操作時(shí)貪吃蛇保持當(dāng)前移動(dòng)狀態(tài)。4.6 排行榜實(shí)現(xiàn)4.6.1數(shù)據(jù)庫結(jié)構(gòu)4.6.2排行榜簡介通過ORACLE數(shù)據(jù)庫記錄游戲記錄,從數(shù)據(jù)庫中讀取數(shù)據(jù)并排序,通過窗口顯示排行數(shù)據(jù),實(shí)現(xiàn)游戲排行榜功能。5 游戲的測試測試的目的是盡可能的發(fā)現(xiàn)潛在的錯(cuò)誤和缺陷,為了保證系統(tǒng)的質(zhì)量和可靠性,我們對游戲進(jìn)行了測試。在開發(fā)的每一個(gè)階段都應(yīng)精心設(shè)計(jì),并利用實(shí)例來運(yùn)行程序,使可以發(fā)現(xiàn)錯(cuò)誤。系統(tǒng)的測試是為了發(fā)現(xiàn)錯(cuò)誤而要執(zhí)行的過程。由于技術(shù)水平有限此課程設(shè)計(jì)所設(shè)計(jì)的貪吃蛇游戲過于簡單,但是也付出了巨大的努力,所以無論簡單與否測試都是必須執(zhí)行的過程。本程序進(jìn)行測試后沒有發(fā)現(xiàn)異常。6 總結(jié)此次課程設(shè)計(jì)讓我們學(xué)到很多,也了解了程序開發(fā)的具體過程。在學(xué)習(xí)、使用java的過程中,讓我沒們對編程語言有了新的認(rèn)識。在不斷的調(diào)試、修改的過程當(dāng)中,我們對程序的設(shè)計(jì)與構(gòu)架在整體上有了長足的進(jìn)步。在做java課程設(shè)計(jì)以前,我們對Java游戲開發(fā)只是停留在理論知識的水平上,缺乏實(shí)際的軟件開發(fā)經(jīng)驗(yàn)。這次通過做java課程設(shè)計(jì),我們完成了貪吃蛇游戲的軟件開發(fā)任務(wù)。在整個(gè)開發(fā)過程中遇到了很多問題,如蛇的移動(dòng)的表示、圖形化界面的設(shè)計(jì)問題,但這些問題最終都被攻克了下來。首先,完成了從局部到整體從細(xì)節(jié)到大局的轉(zhuǎn)變。設(shè)計(jì)過程中,經(jīng)常會(huì)遇到困難,我們學(xué)會(huì)通過反復(fù)思考和測試,然后找出自己的錯(cuò)誤并加以改正,再進(jìn)行下一個(gè)步驟。這個(gè)程序就是在這樣反復(fù)過程序中一點(diǎn)一點(diǎn)的完成的。其次,做設(shè)計(jì)是一個(gè)不斷學(xué)習(xí)新事物的過程

溫馨提示

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

評論

0/150

提交評論