版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)12級(jí)綜合課程設(shè)計(jì)報(bào)告題目: 貪吃蛇小游戲 成員: 姓名 學(xué)號(hào) 郝興明 201207051 指導(dǎo)教師: 王金龍 開(kāi)始日期: 2015 年 12月 7 日 完成日期: 2016 年 01月 8 日 計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)2012級(jí)綜合課程設(shè)計(jì)報(bào)告2012級(jí)綜合課程設(shè)計(jì)評(píng)價(jià)表題 目貪吃蛇小游戲指導(dǎo)老師王金龍項(xiàng) 目 內(nèi) 容 簡(jiǎn) 介本次綜合課程設(shè)計(jì)的內(nèi)容為“貪吃蛇”小游戲,游戲操作簡(jiǎn)單,設(shè)計(jì)卻很復(fù)雜,主要實(shí)現(xiàn)的內(nèi)容為:通過(guò)鍵盤控制蛇的移動(dòng),判斷蛇是否死亡,以及通過(guò)相應(yīng)按鈕來(lái)控制游戲的進(jìn)程。評(píng)價(jià)工作量 (飽滿、達(dá)到要求、不飽滿);運(yùn)行效果 (良好、有小問(wèn)題、錯(cuò)誤較多);文檔及報(bào)告撰寫
2、 (規(guī)范、較規(guī)范、 不規(guī)范、未提交);答辯 (優(yōu)秀、良好、 一般、 較差);團(tuán)隊(duì)分工及協(xié)作 (很好、較好、 一般、 較差)。成績(jī)學(xué) 號(hào)姓 名組內(nèi)分工貢獻(xiàn)排名成 績(jī)201207051郝興明程序設(shè)計(jì)、編寫、測(cè)試、報(bào)告答辯小組簽字青島理工大學(xué)課程設(shè)計(jì)任務(wù)書姓 名 組內(nèi)分工 郝興明 程序設(shè)計(jì)、編寫、測(cè)試、報(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. 通過(guò)方向鍵控制蛇的移動(dòng)2.蛇吃到食物后身體變長(zhǎng)3.食物的隨機(jī)產(chǎn)生4
3、.蛇吃到自己身體或墻后死亡5.蛇在移動(dòng)過(guò)程中可以暫停/繼續(xù)6.可手動(dòng)停止游戲工作計(jì)劃安排:2015年12月07日-2015年12月10日 需求分析2015年12月11日-2015年12月15日 概要設(shè)計(jì)2015年12月16日-2015年12月20日 框架搭建2015年12月21日-2015年12月30日 詳細(xì)功能設(shè)計(jì)2015年12月31日-2016年01月03日 程序測(cè)試2016年01月04日-2016年01月05日 書寫報(bào)告2016年01月06日 項(xiàng)目答辯- II -第1部分 概述1. 內(nèi)容簡(jiǎn)介“貪吃蛇”是一款經(jīng)典的小游戲,以其操作簡(jiǎn)單、娛樂(lè)性強(qiáng)而廣受歡迎。一條蛇在封閉的圍墻內(nèi)移動(dòng),在圍墻內(nèi)
4、隨機(jī)出現(xiàn)一個(gè)食物,通過(guò)鍵盤的方向鍵來(lái)控制蛇的移動(dòng),當(dāng)蛇吃到食物后蛇的身體長(zhǎng)一節(jié),同時(shí)出現(xiàn)一個(gè)新的食物等待蛇去吃,如果蛇在移動(dòng)過(guò)程中蛇頭吃到自己身體或者吃到圍墻的石頭,則蛇死亡,游戲結(jié)束。作為一個(gè)小游戲,設(shè)計(jì)中必須要考慮人機(jī)交互和用戶體驗(yàn),因此游戲界面應(yīng)簡(jiǎn)潔直觀,讓用戶可直接了解游戲的操作?!柏澇陨摺钡脑O(shè)計(jì)對(duì)java編程的提高和進(jìn)階是一次很好的鍛煉機(jī)會(huì)。本次設(shè)計(jì)使用java語(yǔ)言,通過(guò)GUI編程、線程、事件監(jiān)聽(tīng)等技術(shù)來(lái)實(shí)現(xiàn)游戲的開(kāi)發(fā),功能雖然較少,但游戲的基本功能都具備,可正常進(jìn)行游戲。2. 功能介紹“貪吃蛇”小游戲的設(shè)計(jì)較復(fù)雜,要想實(shí)現(xiàn)所有功能需要很高的技術(shù)要求和很強(qiáng)的編程能力。由于本人技術(shù)能力
5、欠缺,所以只能實(shí)現(xiàn)基本的游戲功能,通過(guò)畫圖的方法來(lái)顯示出蛇的身體,食物的位置和墻的位置。主要操作是通過(guò)鍵盤的方向鍵來(lái)控制蛇的移動(dòng)方向,無(wú)效方向要忽略;當(dāng)蛇吃到食物時(shí)蛇的身體變長(zhǎng)一節(jié),同時(shí)產(chǎn)生一個(gè)新的食物;蛇吃到自己身體或者吃到石頭時(shí)死亡,游戲結(jié)束;在游戲控制區(qū)域可通過(guò)相應(yīng)按鈕來(lái)控制游戲的運(yùn)行進(jìn)度。3. 設(shè)計(jì)環(huán)境本次游戲設(shè)計(jì)的環(huán)境及開(kāi)發(fā)工具如下:運(yùn)行環(huán)境:Windows 7編程語(yǔ)言:java開(kāi)發(fā)環(huán)境:eclipse第2部分 需求分析1 用戶特點(diǎn)分析游戲開(kāi)發(fā)成功后,可適用于各類人群使用,所以要求界面簡(jiǎn)單,操作方便, 不需要進(jìn)行專門培訓(xùn)就可以學(xué)會(huì)如何操作2.功能需求2.1圖形界面的需求游戲畫布區(qū)主要
6、包括蛇的身體出現(xiàn)的位置,食物隨機(jī)出現(xiàn)的位置,墻的固定位置,以及蛇可移動(dòng)的區(qū)域。游戲控制區(qū)域顯示按鈕及操作提示。2.2屬性需求在可使用性方面,要求各個(gè)功能實(shí)現(xiàn)簡(jiǎn)單,操作方便,系統(tǒng)處理正確;整個(gè)系統(tǒng)恢復(fù)性能號(hào),鏈接速度快,以確保系統(tǒng)可適用性好。另外,還要求系統(tǒng)的可擴(kuò)展性、可維護(hù)性、可移植性良好。2.3功能模塊需求軟件開(kāi)發(fā)過(guò)程中的功能模塊設(shè)計(jì),主要解決實(shí)現(xiàn)該游戲需求的程序模塊設(shè)計(jì)問(wèn)題。包括如何把該游戲劃分成若干個(gè)模塊、決定各個(gè)模塊之間的接口、模塊之間穿的的信息,以及模塊結(jié)構(gòu)的設(shè)計(jì)等。2.3.1游戲功能本游戲主要完成以下幾方面的功能:1) 游戲控制功能2) 界面布局3) 其他輔助功能2.3.2功能模塊
7、劃分根據(jù)游戲需求,整個(gè)游戲主要?jiǎng)澐譃橛螒蚪缑婧陀螒蚩刂苾蓚€(gè)模塊。見(jiàn)圖2.1 。游戲界面是整個(gè)游戲的運(yùn)行區(qū)域,可動(dòng)態(tài)的觀察游戲過(guò)程。游戲控制是用來(lái)控制游戲進(jìn)程的,可以開(kāi)始游戲,暫停/繼續(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)的情況。開(kāi)始游戲控制蛇移動(dòng)身體變長(zhǎng)是否吃到自己 是 是 是否吃到食物 否 否 是否撞墻 否游戲結(jié)束蛇死亡是 圖3.1 系統(tǒng)流程圖2.類模塊設(shè)計(jì)本次設(shè)計(jì)遵循MVC設(shè)計(jì)模式,主要類之間的關(guān)系如下:Sn
8、ake類(蛇類)Game類(主面板)Controller類(控制器)Ground類(墻類)Food類(食物類) 圖3.2 MVC設(shè)計(jì)模式體現(xiàn)Snake類:設(shè)置蛇的屬性,以及蛇的產(chǎn)生、移動(dòng)、吃食物、死亡等方法。Food類:設(shè)置食物的隨機(jī)產(chǎn)生和是否被吃掉等方法。Controller類:監(jiān)聽(tīng)Snake類以及按鍵事件,并進(jìn)行處理。Game類:用來(lái)控制游戲進(jìn)程和界面的顯示。3.各類的詳細(xì)設(shè)計(jì)表3.1 Snake類成員作用private boolean pause;判斷是否暫停private boolean life;判斷蛇是否死亡private boolean isMoving;判斷蛇是否在移動(dòng)priv
9、ate LinkedList<Point>body;存放蛇的身體節(jié)點(diǎn)private void init();初始化方法public void move();蛇的移動(dòng)方法public void drawMe(Graphics g);畫出蛇的身體public void start();讓蛇開(kāi)始移動(dòng)public void die();讓蛇死亡表3.2 Food類:Public void newFood(Point p);設(shè)置食物產(chǎn)生的位置Public Boolean isSnakeEatFood(Snake snake);判斷蛇是否吃到食物public void drawMe(Graph
10、ics g);在畫布上畫出食物表3.3 Ground類:Private int rocks;存放石頭的數(shù)組Public Ground();初始化石頭Public Boolean isSnakeEatRock(Snake snake);判斷是否吃到石頭Public Point getPoint();設(shè)置食物產(chǎn)生的位置public void drawMe(Graphics g);在畫布上畫出石頭表3.4 Controller類:Public Controller(Snake snake,Food food,Ground ground,GamePanel gamePanel);初始化控制器類Publ
11、ic void keyPressed(KeyEvent e);監(jiān)聽(tīng)按鍵事件Public void snakeMoved(Snake snake);監(jiān)聽(tīng)蛇的移動(dòng)Public void newGame();創(chuàng)建新游戲Public void setSnake(Snake snake);設(shè)置蛇第4部分 系統(tǒng)實(shí)現(xiàn)1. 界面展示“貪吃蛇”小游戲適合廣大群體,故界面應(yīng)以簡(jiǎn)潔直觀為主,讓玩家一眼便可了解游戲的操作。具體游戲界面如下:游戲初始化界面圖 4.1 游戲初始化界面游戲開(kāi)始界面圖 4.2 游戲開(kāi)始運(yùn)行界面游戲結(jié)束界面圖 4.3 游戲結(jié)束界面2.游戲的具體實(shí)現(xiàn)代碼2.1游戲畫布區(qū)public void d
12、isplay(Snake snake,Food food,Ground ground)System.out.println("GamePanel's display");this.snake = snake;this.food = food;this.ground = ground;this.repaint();protected void paintComponent(Graphics g)g.setColor(new Color(0xcfcfcf);g.fillRect(0, 0, Global.WIDTH * Global.CELL_SIZE, Global.
13、HEIGHT * Global.CELL_SIZE);if(ground != null && snake != null && food != null)this.ground.drawMe(g);this.snake.drawMe(g);this.food.drawMe(g);2.2控制區(qū)private static final long serialVersionUID = 1L;private final JButton button_start = new JButton("開(kāi)始游戲");private final JButton
14、button_wait = new JButton("暫停游戲");private final JButton button_stop = new JButton("停止游戲");private final JLabel label_tips = new JLabel("方向鍵控制蛇的移動(dòng)");public GameOptionPanel()super();setLayout(null);setFocusable(false);setVisible(true);button_start.setFont(new Font("楷
15、體", Font.PLAIN, 17);button_wait.setFont(new Font("楷體", Font.PLAIN, 17);button_stop.setFont(new Font("楷體", Font.PLAIN, 17);label_tips.setFont(new Font("楷體", Font.PLAIN, 25);button_start.setFocusable(false);button_wait.setFocusable(false);button_stop.setFocusable(fal
16、se);label_tips.setFocusable(false);button_start.setBounds(10, 10, 110, 40);button_wait.setBounds(145, 10, 110, 40);button_stop.setBounds(280, 10, 110, 40);label_tips.setBounds(70, 70, 300, 40);add(button_start);add(button_wait);add(button_stop);add(label_tips);public JButton getStartButton()return b
17、utton_start;public JButton getWaitButton()return button_wait;public JButton getStopButton()return button_stop;public JLabel getTipsLabel()return label_tips;2.3蛇的移動(dòng)public void move()if(!(oldDirection + newDirection = 0)oldDirection = newDirection;System.out.println("Snake's move");oldTa
18、il = body.removeLast();int x = body.getFirst().x;int y = body.getFirst().y;switch(oldDirection)case UP:y-;if(y < 0)y = Global.HEIGHT -1;break;case DOWN:y+;if(y = Global.HEIGHT)y = 0;break;case LEFT:x-;if(x < 0)x = Global.WIDTH - 1;break;case RIGHT:x+;if(x = Global.WIDTH)x = 0;break;Point newHe
19、ad = new Point(x,y);body.addFirst(newHead);2.4監(jiān)聽(tīng)按鍵public void keyPressed(KeyEvent e)if(!snake.isPause()&&snake.isLive()&&snake.isMoving()switch(e.getKeyCode()case KeyEvent.VK_UP:snake.changeDirection(Snake.UP);break;case KeyEvent.VK_DOWN:snake.changeDirection(Snake.DOWN);break;case K
20、eyEvent.VK_LEFT:snake.changeDirection(Snake.LEFT);break;case KeyEvent.VK_RIGHT:snake.changeDirection(Snake.RIGHT);break;2.5畫出蛇的身體public void drawMe(Graphics g)g.setColor(Color.BLUE);for(Point p:body)g.fill3DRect(p.x * Global.CELL_SIZE, p.y * Global.CELL_SIZE, Global.CELL_SIZE, Global.CELL_SIZE, true
21、);2.6隨機(jī)產(chǎn)生食物public Point getPoint()Random radom = new Random();int x = 0, y = 0;dox = radom.nextInt(Global.WIDTH);y = radom.nextInt(Global.HEIGHT);while(rocksxy=1);return (new Point(x,y);2.7初始化墻public Ground()for(int x=0;x<Global.WIDTH;x+)rocksx0 = 1;rocksxGlobal.WIDTH-1 = 1;for(int y=0;y<Globa
22、l.HEIGHT;y+)rocks0y = 1;rocksGlobal.HEIGHT-1y = 1;第5部分 系統(tǒng)測(cè)試5.1測(cè)試概述進(jìn)行軟件測(cè)試是對(duì)系統(tǒng)的性能、完善程度以及安全性進(jìn)行測(cè)試,在現(xiàn)今這個(gè)科技發(fā)達(dá)的時(shí)代,軟件應(yīng)用于各個(gè)領(lǐng)域,如果一個(gè)軟件未經(jīng)過(guò)細(xì)致的系統(tǒng)測(cè)試就投入使用,在使用過(guò)程中一旦出現(xiàn)問(wèn)題后果將不堪設(shè)想,這不僅僅是對(duì)用戶負(fù)責(zé),更是對(duì)開(kāi)發(fā)人員自身負(fù)責(zé),通過(guò)系統(tǒng)測(cè)試不斷地發(fā)現(xiàn)問(wèn)題和解決問(wèn)題,在以后的工作中就會(huì)減小這些漏洞出現(xiàn)的幾率,不斷地完善每一個(gè)軟件是每一個(gè)軟件開(kāi)發(fā)人員共同的愿望。所以,進(jìn)行系統(tǒng)測(cè)試是十分必要的。在進(jìn)行本次游戲設(shè)計(jì)的過(guò)程中,對(duì)于軟件的測(cè)試一直貫穿始終,對(duì)于在開(kāi)發(fā)過(guò)程中
23、的代碼和文檔,以及系統(tǒng)完成后都在進(jìn)行測(cè)試。測(cè)試并不僅僅是為了找出錯(cuò)誤,通過(guò)分析錯(cuò)誤產(chǎn)生的原因和錯(cuò)誤的發(fā)生趨勢(shì),可以幫助項(xiàng)目管理者發(fā)現(xiàn)當(dāng)前軟件開(kāi)發(fā)過(guò)程中的缺陷,以便及時(shí)改進(jìn)。測(cè)試主要分5種,即單元測(cè)試、集成測(cè)試、確認(rèn)測(cè)試和白盒測(cè)試和黑盒測(cè)試。 本次游戲測(cè)試主要采用黑盒測(cè)試方法,檢查游戲功能是否能實(shí)現(xiàn)。5.2 詳細(xì)測(cè)試5.2.1測(cè)試一測(cè)試內(nèi)容:是否能正常開(kāi)始游戲測(cè)試方法:點(diǎn)擊開(kāi)始按鈕預(yù)期結(jié)果:游戲區(qū)出現(xiàn)蛇、食物和墻,蛇會(huì)移動(dòng)測(cè)試結(jié)果:和預(yù)期一樣,祥見(jiàn)圖5.1圖 5.1 開(kāi)始按鈕測(cè)試5.2.2測(cè)試二測(cè)試內(nèi)容:是否能暫停/繼續(xù)游戲測(cè)試方法:點(diǎn)擊暫停/繼續(xù)按鈕預(yù)期結(jié)果:點(diǎn)擊暫停后蛇停止移動(dòng),按鈕變?yōu)槔^續(xù)游戲,點(diǎn)擊繼續(xù)后沿原方向移動(dòng),按鈕變?yōu)闀和S螒颉?測(cè)試結(jié)果:和預(yù)期一樣,祥見(jiàn)圖5.2和圖5.3圖5.2 暫停游戲測(cè)試圖5.3 繼續(xù)游戲測(cè)試5.2
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒交通安全國(guó)旗下精彩講話稿范文(5篇)
- 感謝老師學(xué)生演講稿
- 小孩百日宴父母感謝致辭6篇
- 公眾平臺(tái)相關(guān)知識(shí)
- 銀星養(yǎng)腦片治療彌漫性軸索損傷瘀阻腦絡(luò)證的臨床研究
- 國(guó)家知識(shí)產(chǎn)權(quán)政策
- 電廠鍋爐補(bǔ)給水和凝結(jié)水處理工藝設(shè)計(jì)
- 初級(jí)會(huì)計(jì)經(jīng)濟(jì)法基礎(chǔ)-初級(jí)會(huì)計(jì)《經(jīng)濟(jì)法基礎(chǔ)》模擬試卷421
- 智研咨詢發(fā)布-2024年中國(guó)光儲(chǔ)一體化行業(yè)市場(chǎng)運(yùn)行態(tài)勢(shì)及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 水下機(jī)器人航跡跟蹤及容錯(cuò)控制方法研究
- 北師大版三年級(jí)數(shù)學(xué)(上冊(cè))看圖列式計(jì)算(完整版)
- 2024年云南省中考英語(yǔ)題庫(kù)【歷年真題+章節(jié)題庫(kù)+模擬試題】
- 2023中考地理真題(含解析)
- 麻醉藥品、精神藥品月檢查記錄表
- 浙江省寧波市海曙區(qū)2022學(xué)年第一學(xué)期九年級(jí)期末測(cè)試科學(xué)試題卷(含答案和答題卡)
- 為了自由呼吸的教育
- 高考英語(yǔ)詞匯3500電子版
- 建院新聞社成立策劃書
- JJF 1101-2019環(huán)境試驗(yàn)設(shè)備溫度、濕度參數(shù)校準(zhǔn)規(guī)范
- GB/T 25000.51-2016系統(tǒng)與軟件工程系統(tǒng)與軟件質(zhì)量要求和評(píng)價(jià)(SQuaRE)第51部分:就緒可用軟件產(chǎn)品(RUSP)的質(zhì)量要求和測(cè)試細(xì)則
- 外科學(xué)試題庫(kù)及答案(共1000題)
評(píng)論
0/150
提交評(píng)論