計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)《綜合課程設(shè)計(jì)》報(bào)告
《計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)《綜合課程設(shè)計(jì)》報(bào)告》由會(huì)員分享,可在線閱讀,更多相關(guān)《計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)《綜合課程設(shè)計(jì)》報(bào)告(18頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎ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)秀、良好、 一般
2、、 較差);團(tuán)隊(duì)分工及協(xié)作 (很好、較好、 一般、 較差)。成績學(xué) 號(hào)姓 名組內(nèi)分工貢獻(xiàn)排名成 績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. 通過方向鍵控制蛇的移動(dòng)2.蛇吃到食物后身體變長3.食物的隨機(jī)產(chǎn)生4.蛇吃到自己身體或墻后死亡5.蛇在移動(dòng)過程中可以暫停/繼續(xù)6.可
3、手動(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)目答辯第1部分 概述1. 內(nèi)容簡介“貪吃蛇”是一款經(jīng)典的小游戲,以其操作簡單、娛樂性強(qiáng)而廣受歡迎。一條蛇在封閉的圍墻內(nèi)移動(dòng),在圍墻內(nèi)隨機(jī)出現(xiàn)一個(gè)食物,通過鍵盤的方向鍵來控制蛇的移動(dòng),當(dāng)蛇吃到食物后蛇的身體長一
4、節(jié),同時(shí)出現(xiàn)一個(gè)新的食物等待蛇去吃,如果蛇在移動(dòng)過程中蛇頭吃到自己身體或者吃到圍墻的石頭,則蛇死亡,游戲結(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)基本的游戲功能,通過畫圖的方法來顯示出蛇的身體,食物的位置
5、和墻的位置。主要操作是通過鍵盤的方向鍵來控制蛇的移動(dòng)方向,無效方向要忽略;當(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)境:Windows 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ū)域。
6、游戲控制區(qū)域顯示按鈕及操作提示。2.2屬性需求在可使用性方面,要求各個(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) 其他輔助功能2.3.2功能模塊劃分根據(jù)游戲需求,整個(gè)游戲主要?jiǎng)澐譃橛螒蚪缑婧陀螒蚩刂苾蓚€(gè)模塊。見圖2.1 。
7、游戲界面是整個(gè)游戲的運(yùn)行區(qū)域,可動(dòng)態(tài)的觀察游戲過程。游戲控制是用來控制游戲進(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)的情況。開始游戲控制蛇移動(dòng)身體變長是否吃到自己 是 是 是否吃到食物 否 否 是否撞墻 否游戲結(jié)束蛇死亡是圖3.1 系統(tǒng)流程圖2.類模塊設(shè)計(jì)本次設(shè)計(jì)遵循MVC設(shè)計(jì)模式,主要類之間的關(guān)系如下:Snake類(蛇類)Game類(主面板)Controller類(控制器)Ground
8、類(墻類)Food類(食物類) 圖3.2 MVC設(shè)計(jì)模式體現(xiàn)Snake類:設(shè)置蛇的屬性,以及蛇的產(chǎn)生、移動(dòng)、吃食物、死亡等方法。Food類:設(shè)置食物的隨機(jī)產(chǎn)生和是否被吃掉等方法。Controller類:監(jiān)聽Snake類以及按鍵事件,并進(jìn)行處理。Game類:用來控制游戲進(jìn)程和界面的顯示。3.各類的詳細(xì)設(shè)計(jì)表3.1 Snake類成員作用private boolean pause;判斷是否暫停private boolean life;判斷蛇是否死亡private boolean isMoving;判斷蛇是否在移動(dòng)private LinkedListbody;存放蛇的身體節(jié)點(diǎn)private void
9、init();初始化方法public void move();蛇的移動(dòng)方法public void drawMe(Graphics g);畫出蛇的身體public void start();讓蛇開始移動(dòng)public void die();讓蛇死亡表3.2 Food類:Public void newFood(Point p);設(shè)置食物產(chǎn)生的位置Public Boolean isSnakeEatFood(Snake snake);判斷蛇是否吃到食物public void drawMe(Graphics g);在畫布上畫出食物表3.3 Ground類:Private int rocks;存放石頭的數(shù)組
10、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);初始化控制器類Public void keyPressed(KeyEvent e);監(jiān)聽按鍵事件Public void snak
11、eMoved(Snake snake);監(jiān)聽蛇的移動(dòng)Public void newGame();創(chuàng)建新游戲Public void setSnake(Snake snake);設(shè)置蛇第4部分 系統(tǒng)實(shí)現(xiàn)1. 界面展示“貪吃蛇”小游戲適合廣大群體,故界面應(yīng)以簡潔直觀為主,讓玩家一眼便可了解游戲的操作。具體游戲界面如下:游戲初始化界面圖 4.1 游戲初始化界面游戲開始界面圖 4.2 游戲開始運(yùn)行界面游戲結(jié)束界面圖 4.3 游戲結(jié)束界面2.游戲的具體實(shí)現(xiàn)代碼2.1游戲畫布區(qū)publicvoid display(Snake snake,Food food,Ground ground)System.out.
12、println(GamePanels display);this.snake = snake;this.food = food;this.ground = ground;this.repaint();protectedvoid paintComponent(Graphics g)g.setColor(new Color(0xcfcfcf);g.fillRect(0, 0, Global.WIDTH * Global.CELL_SIZE, Global.HEIGHT * Global.CELL_SIZE);if(ground != null & snake != null & food != n
13、ull)this.ground.drawMe(g);this.snake.drawMe(g);this.food.drawMe(g);2.2控制區(qū)privatestaticfinallongserialVersionUID = 1L;privatefinal JButton button_start = new JButton(開始游戲);privatefinal JButton button_wait = new JButton(暫停游戲);privatefinal JButton button_stop = new JButton(停止游戲);privatefinal JLabel lab
14、el_tips = new JLabel(方向鍵控制蛇的移動(dòng));public GameOptionPanel()super();setLayout(null);setFocusable(false);setVisible(true);button_start.setFont(new Font(楷體, Font.PLAIN, 17);button_wait.setFont(new Font(楷體, Font.PLAIN, 17);button_stop.setFont(new Font(楷體, Font.PLAIN, 17);label_tips.setFont(new Font(楷體, Fon
15、t.PLAIN, 25);button_start.setFocusable(false);button_wait.setFocusable(false);button_stop.setFocusable(false);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);a
16、dd(button_start);add(button_wait);add(button_stop);add(label_tips);public JButton getStartButton()returnbutton_start;public JButton getWaitButton()returnbutton_wait;public JButton getStopButton()returnbutton_stop;public JLabel getTipsLabel()returnlabel_tips;2.3蛇的移動(dòng)publicvoid move()if(!(oldDirection
17、+ newDirection = 0)oldDirection = newDirection;System.out.println(Snakes move);oldTail = body.removeLast();intx = body.getFirst().x;inty = body.getFirst().y;switch(oldDirection)caseUP:y-;if(y 0)y = Global.HEIGHT -1;break;caseDOWN:y+;if(y = Global.HEIGHT)y = 0;break;caseLEFT:x-;if(x 0)x = Global.WIDT
18、H - 1;break;caseRIGHT:x+;if(x = Global.WIDTH)x = 0;break;Point newHead = new Point(x,y);body.addFirst(newHead);2.4監(jiān)聽按鍵publicvoid 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_DO
19、WN:snake.changeDirection(Snake.DOWN);break;case KeyEvent.VK_LEFT:snake.changeDirection(Snake.LEFT);break;case KeyEvent.VK_RIGHT:snake.changeDirection(Snake.RIGHT);break;2.5畫出蛇的身體publicvoid drawMe(Graphics g)g.setColor(Color.BLUE);for(Point p:body)g.fill3DRect(p.x * Global.CELL_SIZE, p.y * Global.CEL
20、L_SIZE, Global.CELL_SIZE, Global.CELL_SIZE, true);2.6隨機(jī)產(chǎn)生食物public Point getPoint()Random radom = new Random();intx = 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(intx=0;xGlobal.WIDTH;x+)rocksx0 = 1;rocks
21、xGlobal.WIDTH-1 = 1;for(inty=0;yGlobal.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)過細(xì)致的系統(tǒng)測(cè)試就投入使用,在使用過程中一旦出現(xiàn)問題后果將不堪設(shè)想,這不僅僅是對(duì)用戶負(fù)責(zé),更是對(duì)開發(fā)人員自身負(fù)責(zé),通過系統(tǒng)測(cè)試不斷地發(fā)現(xiàn)問題和解決問題,在以后的工作中就會(huì)減小這些漏洞出現(xiàn)的幾率,不斷地完善每一個(gè)軟件是每一個(gè)軟件開發(fā)人員共同的愿望。所以,進(jìn)行系統(tǒng)測(cè)試是十分必要的
22、。在進(jìn)行本次游戲設(shè)計(jì)的過程中,對(duì)于軟件的測(cè)試一直貫穿始終,對(duì)于在開發(fā)過程中的代碼和文檔,以及系統(tǒng)完成后都在進(jìn)行測(cè)試。測(cè)試并不僅僅是為了找出錯(cuò)誤,通過分析錯(cuò)誤產(chǎn)生的原因和錯(cuò)誤的發(fā)生趨勢(shì),可以幫助項(xiàng)目管理者發(fā)現(xiàn)當(dāng)前軟件開發(fā)過程中的缺陷,以便及時(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)容:是否能正常開始游戲測(cè)試方法:點(diǎn)擊開始按鈕預(yù)期結(jié)果:游戲區(qū)出現(xiàn)蛇、食物和墻,蛇會(huì)移動(dòng)測(cè)試結(jié)果:和預(yù)期一樣,祥見圖5.1圖 5.1 開始按鈕測(cè)試5.2.2測(cè)試二測(cè)試內(nèi)容:是否能暫停/繼續(xù)游
23、戲測(cè)試方法:點(diǎn)擊暫停/繼續(xù)按鈕預(yù)期結(jié)果:點(diǎn)擊暫停后蛇停止移動(dòng),按鈕變?yōu)槔^續(xù)游戲,點(diǎn)擊繼續(xù)后沿原方向移動(dòng),按鈕變?yōu)闀和S螒颉?測(cè)試結(jié)果:和預(yù)期一樣,祥見圖5.2和圖5.3圖5.2 暫停游戲測(cè)試圖5.3 繼續(xù)游戲測(cè)試5.2.3測(cè)試三測(cè)試內(nèi)容:蛇是否能吃食物身體變長測(cè)試方法:控制蛇移動(dòng)去吃食物預(yù)期結(jié)果:吃食物后蛇身體變長一節(jié),同時(shí)產(chǎn)生一個(gè)新的食物 測(cè)試結(jié)果:和預(yù)期一樣,祥見圖5.4圖5.4 蛇吃食物測(cè)試(蛇身體默認(rèn)為3節(jié))5.2.4測(cè)試四測(cè)試內(nèi)容:蛇撞墻是否會(huì)死測(cè)試方法:控制蛇移動(dòng)去撞墻預(yù)期結(jié)果:蛇死亡不再移動(dòng),游戲結(jié)束 測(cè)試結(jié)果:和預(yù)期一樣,祥見圖5.5圖5.5 蛇撞墻死亡測(cè)試5.2.5測(cè)試五測(cè)試
24、內(nèi)容:蛇吃到自己身體是否會(huì)死測(cè)試方法:控制蛇移動(dòng)讓蛇頭吃到自己身體預(yù)期結(jié)果:蛇死亡不再移動(dòng),游戲結(jié)束 測(cè)試結(jié)果:和預(yù)期一樣,祥見圖5.6圖5.6 蛇吃到自己身體測(cè)試第6部分 系統(tǒng)總結(jié)本次課程設(shè)計(jì)從游戲界面和游戲控制兩方面實(shí)現(xiàn)了比較完善的功能,因?yàn)楸救四芰τ邢?,還需要學(xué)習(xí)的地方很多,所以還是不盡完美,有很多可以優(yōu)化的地方,但游戲的基本功能都很齊全,相比之前做的管理系統(tǒng)類的設(shè)計(jì),應(yīng)該可以說是又上升了一個(gè)層次。雖然在設(shè)計(jì)中遇到了很多困難,比如說為了修改一個(gè)小小的bug而花費(fèi)一整天,重新去學(xué)習(xí)新的知識(shí),改了一次又一次等等,但是終于功夫不負(fù)有心人,游戲的功能都基本上實(shí)現(xiàn)了,作為一個(gè)學(xué)習(xí)計(jì)算機(jī)的人,尤其是一個(gè)即將畢業(yè)的大四學(xué)生,更需要有堅(jiān)持不懈的毅力和不斷學(xué)習(xí)新知識(shí)的激情,困難只是我們走向成功的階梯。當(dāng)你克服一個(gè)一個(gè)的困難后,會(huì)感到滿滿的成就感??傮w來說,這次課設(shè)對(duì)我自己是一次很好的鍛煉機(jī)會(huì),不僅把以前學(xué)到的只是溫習(xí)了一遍,還學(xué)習(xí)到了很多新知識(shí),而且還提高了敲代碼的能力。對(duì)設(shè)計(jì)中遇到的問題,通過仔細(xì)思考和查閱資料,使得問題得以解決,對(duì)自己以后獨(dú)立思考解決問題的能力也有很大幫助。參考文獻(xiàn)1李芝興 楊瑞龍. Java程序設(shè)計(jì)之網(wǎng)絡(luò)編程(第2版). 清華大學(xué)出版社,2013.72張海藩 牟永敏. 軟件工程導(dǎo)論(第6版). 清華大學(xué)出版社,2015.7
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二月二來歷課件
- 炎黃國醫(yī)館市場(chǎng)推廣方案
- 醫(yī)患關(guān)系醫(yī)學(xué)知識(shí)
- 通信行業(yè)營業(yè)廳現(xiàn)場(chǎng)管理
- 北師大版數(shù)學(xué)五年級(jí)下冊(cè)《展開與折疊》PPT課件之二(教育精品)
- 工廠精益物流
- 統(tǒng)計(jì)過程控制培訓(xùn)
- 北師大數(shù)學(xué)八年級(jí)下冊(cè)第五章分式與分式方程認(rèn)識(shí)分式1(教育精品)
- 初中地理課件-東南亞(教育精品)
- 二輪專題復(fù)習(xí)-中國近代化的歷程
- 國際服務(wù)貿(mào)易的理論和政策
- 國際工業(yè)合作與科技發(fā)展
- 《諫太宗十思疏》課件
- 質(zhì)量體系過程
- 財(cái)務(wù)金融分析師-銷售關(guān)系管理