版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、計(jì)算機(jī)科學(xué)與技術(shù)專業(yè) 12級(jí)綜合課程設(shè)計(jì)報(bào)告題目貪吃蛇小游戲成員:姓名學(xué)號(hào)郝興明201207051扌旨導(dǎo)教師:王金龍開始日期: 2015 年12月7日完成日期: 2016 年01月8日2012級(jí)綜合課程設(shè)計(jì)評(píng)價(jià)表題目貪吃蛇小游戲指導(dǎo)老師王金龍項(xiàng)目內(nèi)容簡介本次綜合課程設(shè)計(jì)的內(nèi)容為“貪吃蛇”小游戲,游戲操作簡單,設(shè)計(jì)卻很復(fù) 雜,主要實(shí)現(xiàn)的內(nèi)容為:通過鍵盤控制蛇的移動(dòng),判斷蛇是否死亡,以及通過相應(yīng) 按鈕來控制游戲的進(jìn)程。評(píng)價(jià)工作量(飽滿、達(dá)到要求、不飽滿 ); 運(yùn)行效果(良好、有小問題、錯(cuò)誤較多 ); 文檔及報(bào)告撰寫(規(guī)范、較規(guī)范、不規(guī)范、未提交);答辯(優(yōu)秀、良好、一般、較差);團(tuán)隊(duì)分工及協(xié)作(很
2、好、較好、一般、較差)。成績學(xué)號(hào)姓名組內(nèi)分工貝獻(xiàn)排名成績201207051郝興明程序設(shè)計(jì)、編寫、測試、報(bào)告答辯小組簽字青島理工大學(xué)課程設(shè)計(jì)任務(wù)書姓名組內(nèi)分工郝興明程序設(shè)計(jì)、編寫、測試、報(bào)告院(系):計(jì)算機(jī)工程專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)任務(wù)起至日期:2015年12月7日至2016年01月8日課程設(shè)計(jì)題目:貪吃蛇小游戲主要內(nèi)容及要求:“貪吃蛇”小游戲主要應(yīng)實(shí)現(xiàn)以下幾個(gè)方面的功能:1. 通過方向鍵控制蛇的移動(dòng)2. 蛇吃到食物后身體變長3. 食物的隨機(jī)產(chǎn)生4. 蛇吃到自己身體或墻后死亡5. 蛇在移動(dòng)過程中可以暫停/繼續(xù)6. 可手動(dòng)停止游戲2015年12月07日-20152015年12月11日-201520
3、15年12月16日-20152015年12月21日-20152015年12月31日-20162016年01月04日-20162016年01月06日工作計(jì)劃安排:年12月10日年12月15日年12月20日年12月30日年01月03日年01月05日需求分析 概要設(shè)計(jì) 框架搭建 詳細(xì)功能設(shè)計(jì) 程序測試 書寫報(bào)告 項(xiàng)目答辯第1部分概述1. 內(nèi)容簡介“貪吃蛇”是一款經(jīng)典的小游戲,以其操作簡單、娛樂性強(qiáng)而廣受歡 迎。一條蛇在封閉的圍墻內(nèi)移動(dòng),在圍墻內(nèi)隨機(jī)出現(xiàn)一個(gè)食物,通過鍵盤的 方向鍵來控制蛇的移動(dòng),當(dāng)蛇吃到食物后蛇的身體長一節(jié),同時(shí)出現(xiàn)一個(gè)新 的食物等待蛇去吃,如果蛇在移動(dòng)過程中蛇頭吃到自己身體或者吃到
4、圍墻的 石頭,則蛇死亡,游戲結(jié)束。作為一個(gè)小游戲,設(shè)計(jì)中必須要考慮人機(jī)交互和用戶體驗(yàn),因此游戲界 面應(yīng)簡潔直觀,讓用戶可直接了解游戲的操作?!柏澇陨摺钡脑O(shè)計(jì)對(duì) java編程的提高和進(jìn)階是一次很好的鍛煉機(jī)會(huì)。 本次設(shè)計(jì)使用java語言,通過 GUI編程、線程、事件監(jiān)聽等技術(shù)來實(shí)現(xiàn)游 戲的開發(fā),功能雖然較少,但游戲的基本功能都具備,可正常進(jìn)行游戲。2. 功能介紹“貪吃蛇”小游戲的設(shè)計(jì)較復(fù)雜,要想實(shí)現(xiàn)所有功能需要很高的技術(shù)要 求和很強(qiáng)的編程能力。由于本人技術(shù)能力欠缺,所以只能實(shí)現(xiàn)基本的游 戲功能,通過畫圖的方法來顯示出蛇的身體,食物的位置和墻的位置。 主要操作是通過鍵盤的方向鍵來控制蛇的移動(dòng)方向,無
5、效方向要忽略; 當(dāng)蛇吃到食物時(shí)蛇的身體變長一節(jié),同時(shí)產(chǎn)生一個(gè)新的食物;蛇吃到自 己身體或者吃到石頭時(shí)死亡,游戲結(jié)束;在游戲控制區(qū)域可通過相應(yīng)按 鈕來控制游戲的運(yùn)行進(jìn)度。3. 設(shè)計(jì)環(huán)境本次游戲設(shè)計(jì)的環(huán)境及開發(fā)工具如下:運(yùn)行環(huán)境:Win dows 7編程語言:java開發(fā)環(huán)境:eclipse第2部分需求分析1. 用戶特點(diǎn)分析游戲開發(fā)成功后,可適用于各類人群使用,所以要求界面簡單,操作 方便,不需要進(jìn)行專門培訓(xùn)就可以學(xué)會(huì)如何操作2. 功能需求2.1圖形界面的需求游戲畫布區(qū)主要包括蛇的身體出現(xiàn)的位置,食物隨機(jī)出現(xiàn)的位置,墻 的固定位置,以及蛇可移動(dòng)的區(qū)域。游戲控制區(qū)域顯示按鈕及操作提示。2.2屬性需求
6、在可使用性方面,要求各個(gè)功能實(shí)現(xiàn)簡單,操作方便,系統(tǒng)處理正 確;整個(gè)系統(tǒng)恢復(fù)性能號(hào),鏈接速度快,以確保系統(tǒng)可適用性好。另外,還要求系統(tǒng)的可擴(kuò)展性、可維護(hù)性、可移植性良好。2.3功能模塊需求軟件開發(fā)過程中的功能模塊設(shè)計(jì),主要解決實(shí)現(xiàn)該游戲需求的程序模 塊設(shè)計(jì)問題。包括如何把該游戲劃分成若干個(gè)模塊、決定各個(gè)模塊之間的接 口、模塊之間穿的的信息,以及模塊結(jié)構(gòu)的設(shè)計(jì)等。2.3.1游戲功能本游戲主要完成以下幾方面的功能:1) 游戲控制功能2) 界面布局3) 其他輔助功能232功能模塊劃分根據(jù)游戲需求,整個(gè)游戲主要?jiǎng)澐譃橛螒蚪缑婧陀螒蚩刂苾蓚€(gè)模塊。 見圖2.1 。游戲界面是整個(gè)游戲的運(yùn)行區(qū)域,可動(dòng)態(tài)的觀察
7、游戲過程。游 戲控制是用來控制游戲進(jìn)程的,可以開始游戲,暫停/繼續(xù)游戲,停止游戲。圖2.1游戲模塊劃分第3部分系統(tǒng)設(shè)計(jì)1.系統(tǒng)流程圖系統(tǒng)流程圖是描繪系統(tǒng)物理模型的傳統(tǒng)工具。它的基本思想是用圖形符號(hào)描繪系統(tǒng)里面的每個(gè)部件,表達(dá)信息在各個(gè)部件之間流動(dòng)的情況。圖3.1系統(tǒng)流程圖2.類模塊設(shè)計(jì)本次設(shè)計(jì)遵循 MVC設(shè)計(jì)模式,主要類之間的關(guān)系如下:圖3.2 MVC設(shè)計(jì)模式體現(xiàn)Sn ake類:設(shè)置蛇的屬性,以及蛇的產(chǎn)生、移動(dòng)、吃食物、死亡等方法。Food類:設(shè)置食物的隨機(jī)產(chǎn)生和是否被吃掉等方法。Controller 類:監(jiān)聽Snake類以及按鍵事件,并進(jìn)行處理。Game類:用來控制游戲進(jìn)程和界面的顯示。3.
8、 各類的詳細(xì)設(shè)計(jì)表 3.1 Snake 類成員作用private boolea n pause;判斷是否暫停private boolea n life;判斷蛇是否死亡private boolea n isM oving;判斷蛇是否在移動(dòng)private Lin kedListvPo in t>body;存放蛇的身體節(jié)點(diǎn)private void in it();初始化方法public void move();蛇的移動(dòng)方法public void drawMe(Graphics g);畫出蛇的身體public void start();讓蛇開始移動(dòng)public void die();讓蛇死亡表
9、3.2 Food 類:Public void n ewFood(Po int p);設(shè)置食物產(chǎn)生的位置PublicBoolea nisS nakeEatFood(S nakesn ake);判斷蛇是否吃到食物public void drawMe(Graphics g);在畫布上畫出食物表 3.3 Ground 類:Private in t rocks;存放石頭的數(shù)組Public Grou nd();初始化石頭PublicBoolea nisS nakeEatRock(S nakesn ake);判斷是否吃到石頭Public Poi nt getPoi nt();設(shè)置食物產(chǎn)生的位置public
10、void drawMe(Graphics g);在畫布上畫出石頭表 3.4 Controller類:PublicCon troller(S nakesn ake,Foodfood,Gro und groun d,GamePa nel gamePa nel);初始化控制器類Public void keyPressed(KeyEve nt e);監(jiān)聽按鍵事件Public void sn akeMoved(S nake sn ake);監(jiān)聽蛇的移動(dòng)Public void n ewGame();創(chuàng)建新游戲Public void sets nake(S nake sn ake);設(shè)置蛇第4部分系統(tǒng)實(shí)現(xiàn)1
11、.界面展示“貪吃蛇”小游戲適合廣大群體,故界面應(yīng)以簡潔直觀為主,讓玩家一眼便可了解游戲的操作。具體游戲界面如下:游戲初始化界面圖4.1游戲初始化界面圖4.2游戲開始運(yùn)行界面游戲結(jié)束界面圖4.3游戲結(jié)束界面2.游戲的具體實(shí)現(xiàn)代碼2.1游戲畫布區(qū)public void display(Snake snake,Food food ,Ground ground)System. out .println("GamePanel's display");this . snake = snake;this . food = food ;this . ground = ground
12、;this .repaint();protected void paintComponen"Graphicsg)g.setColor( new Color(Oxcfcfcf);g.fillRect(O, 0, Global.WIDTH* Global. CELL_SIZEGlobal. HEIGHT* Global. CELL_SIZE);if (ground != null && snake != null && food != null ) this . ground .drawMe(g);this . snake.drawMe( g);this
13、. food .drawMe( g);2.2控制區(qū)private staticfinal longprivate final JButt onprivate final JButt onprivate final JButt onprivate final JLabelserialVersio nUID = 1L;button_start = new JButton("開始游戲"); button_wait = new JButton("暫停游戲"); button_stop = new JButton("停止游戲");label_t
14、ips = new JLabel("方向鍵控制蛇的移動(dòng)");public GameOptionPanel()super ();setLayout( null );setFocusable( false );setVisible( true );PLAIN, 17);PLAIN, 17);PLAIN, 17);PLAIN, 25);button_start .setFont( new Font("楷體",Font button_wait .setFont( new Font("楷體",Font. button_stop .setFont
15、( new Font("楷體",Font. label_tips .setFont( new Font("楷體",Font.butt on _start.setFocusable( false );butt on _wait .setFocusable( false ); butt on _stop .setFocusable( false ); label_tips .setFocusable( false );button_start .setBou nds(10, 10, 110, 40); button_wait .setBounds(145,
16、10, 110, 40); button_stop .setBounds(280, 10, 110, 40); label_tips.setBou nds(70, 70, 300, 40);add( butt on _start);add( butt on _wait );add( butt on _stop );add( label_tips );public JButton getStartButton()return button_start ;public JButton getWaitButton()returnbutt on _wait ;public JButton getSto
17、pButton()return button_stop ;public JLabel getTipsLabel()retur nlabel_tips ;2.3蛇的移動(dòng)public void move()if (!( oldDirection + newDirection= 0)oldDirection = newDirection ;System. out .println("Snake's move");oldTail = body.removeLast();int x = body.getFirst(). x;int y = body.getFirst(). y
18、;switch (oldDirection)caseUPy-;if (y < 0)y = Global.HEIGHTS;break;caseDOWNy+;if (y = Global.HEIGHTy = 0;break;caseLEFT:x-;if (x < 0)x = Global. WIDTH- 1; break;case RIGHTx+;if (x = Global. WIDTHSx = 0; break;Point newHead= new Point( x, y);body.addFirst( n ewHead;2.4監(jiān)聽按鍵public void keyPressed(
19、KeyEvente)if (! snake.isPause()&& snake.isLive()&& snake.isMoving()switch (e.getKeyCode()case KeyEvent. VK_UPsn ake .cha ngeDirectio n(S nake.UP;break ;case KeyEvent. VK_DOWNsn ake .cha ngeDirectio n(S nake.dow)Nbreak ;case KeyEvent. VK_LEFTsn ake .cha ngeDirectio n(S nake.LEFT);brea
20、k ;case KeyEvent. VK_RIGHTsn ake .cha ngeDirectio n(S nake.RIGHT);break ;2.5畫出蛇的身體public void drawMe(Graphics g)g.setColor(Color. BLUE);for (Point p: body)g.fill3DRect( p. x * Global. CELL_SIZ£ p. y *Global. CELL_SIZE Global. CELL_SIZE Global. CELL_SIZE true ); 2.6隨機(jī)產(chǎn)生食物public Point getPoint()R
21、an dom radom = new Ran dom();int x = 0, y = 0;dox = radom. nextl nt(Global.WIDTH;y = radom. nextl nt(Global.HEIGHT; while (rocks x y=1); return (new Poi nt( x, y);2.7初始化墻public Ground()for (int x=0; x<Global. WIDTHx+)rocks x0 = 1;rocks xGlobal. WIDTH1 = 1;for (int y=0;y<Global. HEIGHTy+)rocks
22、0 y = 1;rocks Global. HEIGHT1 y = 1;第5部分系統(tǒng)測試5.1測試概述進(jìn)行軟件測試是對(duì)系統(tǒng)的性能、完善程度以及安全性進(jìn)行測試,在現(xiàn)今 這個(gè)科技發(fā)達(dá)的時(shí)代,軟件應(yīng)用于各個(gè)領(lǐng)域,如果一個(gè)軟件未經(jīng)過細(xì)致的系 統(tǒng)測試就投入使用,在使用過程中一旦出現(xiàn)問題后果將不堪設(shè)想,這不僅僅 是對(duì)用戶負(fù)責(zé),更是對(duì)開發(fā)人員自身負(fù)責(zé),通過系統(tǒng)測試不斷地發(fā)現(xiàn)問題和 解決問題,在以后的工作中就會(huì)減小這些漏洞出現(xiàn)的幾率,不斷地完善每一 個(gè)軟件是每一個(gè)軟件開發(fā)人員共同的愿望。所以,進(jìn)行系統(tǒng)測試是十分必要 的。在進(jìn)行本次游戲設(shè)計(jì)的過程中,對(duì)于軟件的測試一直貫穿始終,對(duì)于在 開發(fā)過程中的代碼和文檔,以
23、及系統(tǒng)完成后都在進(jìn)行測試。測試并不僅僅是 為了找出錯(cuò)誤,通過分析錯(cuò)誤產(chǎn)生的原因和錯(cuò)誤的發(fā)生趨勢,可以幫助項(xiàng)目 管理者發(fā)現(xiàn)當(dāng)前軟件開發(fā)過程中的缺陷,以便及時(shí)改進(jìn)。測試主要分5種,即單元測試、集成測試、確認(rèn)測試和白盒測試和黑盒 測試。本次游戲測試主要采用黑盒測試方法,檢查游戲功能是否能實(shí)現(xiàn)。5.2詳細(xì)測試5.2.1測試一測試內(nèi)容:是否能正常開始游戲測試方法:點(diǎn)擊開始按鈕預(yù)期結(jié)果:游戲區(qū)出現(xiàn)蛇、食物和墻,蛇會(huì)移動(dòng)測試結(jié)果:和預(yù)期一樣,祥見圖 5.1 I II "游戲I I心戲方向鍵控制蛇的移動(dòng)圖5.1開始按鈕測試522測試二測試內(nèi)容:是否能暫停/繼續(xù)游戲測試方法:點(diǎn)擊暫停/繼續(xù)按鈕預(yù)期結(jié)果:點(diǎn)擊暫停后蛇停止移動(dòng),按鈕變?yōu)槔^續(xù)游戲,點(diǎn)擊繼續(xù)后沿原 方向移動(dòng),按鈕變?yōu)闀和S螒?。測試結(jié)果:和預(yù)期一樣,
溫馨提示
- 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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度民房租賃服務(wù)合同范本
- 2025建筑工程合同
- 2025個(gè)人正規(guī)借款合同參考范文
- 2025北京市房屋出租代理合同
- 2025年度高速公路服務(wù)區(qū)停車場地租賃合同
- 2025服務(wù)器租用合同范文
- 2025年上海職工勞動(dòng)合同范文(2篇)
- 2025招標(biāo)代理合同條款
- 海產(chǎn)商店租賃合同
- 2025原材料采購合同
- 重慶市2023-2024學(xué)年七年級(jí)上學(xué)期期末考試數(shù)學(xué)試題(含答案)
- 《七律二首 送瘟神》教案- 2023-2024學(xué)年高教版(2023)中職語文職業(yè)模塊
- 2024年中考語文滿分作文6篇(含題目)
- 2024年安全員之江蘇省C2證(土建安全員)題庫與答案
- 第一節(jié)-貨幣資金資料講解
- 電力基建復(fù)工安全教育培訓(xùn)
- 2018注冊環(huán)保工程師考試公共基礎(chǔ)真題及答案
- 如何提高售后服務(wù)的快速響應(yīng)能力
- Unit-3-Reading-and-thinking課文詳解課件-高中英語人教版必修第二冊
- 婚介公司紅娘管理制度
- 煤礦電氣試驗(yàn)規(guī)程
評(píng)論
0/150
提交評(píng)論