計算機科學與技術專業(yè)《綜合課程設計》報告

上傳人:dus****log 文檔編號:74517840 上傳時間:2022-04-14 格式:DOC 頁數(shù):18 大?。?9.50KB
收藏 版權申訴 舉報 下載
計算機科學與技術專業(yè)《綜合課程設計》報告_第1頁
第1頁 / 共18頁
計算機科學與技術專業(yè)《綜合課程設計》報告_第2頁
第2頁 / 共18頁
計算機科學與技術專業(yè)《綜合課程設計》報告_第3頁
第3頁 / 共18頁

下載文檔到電腦,查找使用更方便

8 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《計算機科學與技術專業(yè)《綜合課程設計》報告》由會員分享,可在線閱讀,更多相關《計算機科學與技術專業(yè)《綜合課程設計》報告(18頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、計算機科學與技術專業(yè)12級 《綜合課程設計》報告 題目:貪吃蛇小游戲 成員: 姓名 學號 郝興明 201207051 指導教師:王金龍 開始日期: 2015 年12月7 日 完成日期: 2016 年01月8 日 2012級《綜合課程設計》評價表 題 目 貪吃蛇小游戲 指導老師 王金龍 項 目 內(nèi) 容 簡 介 本次綜合課程設計的內(nèi)容為“貪吃蛇”小游戲,游戲操作簡單,設計卻很復雜,主要實現(xiàn)的內(nèi)容為:通過鍵盤控制蛇的移動,判斷蛇是否死亡,以及通過相應按鈕來控制游戲的進程。 評價 工作量 (

2、□飽滿、□達到要求、□不飽滿); 運行效果 (□良好、□有小問題、□錯誤較多); 文檔及報告撰寫 (□規(guī)范、□較規(guī)范、 □不規(guī)范、□未提交); 答辯 (□優(yōu)秀、□良好、 □一般、 □較差); 團隊分工及協(xié)作 (□很好、□較好、 □一般、 □較差)。 成績 學 號 姓 名 組內(nèi)分工 貢獻排名 成 績 201207051 郝興明 程序設計、編寫、測試、報告 答辯小組簽字 青島理工大學課程設計任務書 姓 名 組內(nèi)分工

3、 郝興明 程序設計、編寫、測試、報告 院 (系): 計算機工程 專 業(yè): 計算機科學與技術 任務起至日期: 2015年 12月 7 日 至 2016年 01月 8 日

4、 課程設計題目: 貪吃蛇小游戲 主要內(nèi)容及要求: “貪吃蛇”小游戲主要應實現(xiàn)以下幾個方面的功能: 1. 通過方向鍵控制蛇的移動 2.蛇吃到食物后身體變長 3.食物的隨機產(chǎn)生 4.蛇吃到自己身體或墻后死亡 5.蛇在移動過程中可以暫停/繼續(xù) 6.可手動停止游戲 工作計劃安排: 2015年12月07日---2015年12月10日 需求分析 2015年12月11日---2015年12月15日 概要設計 2015年12月16日---2015年12月20日 框架搭建 2015年12月21日---2015年12月30日

5、 詳細功能設計 2015年12月31日---2016年01月03日 程序測試 2016年01月04日---2016年01月05日 書寫報告 2016年01月06日 項目答辯 第1部分 概述 1. 內(nèi)容簡介 “貪吃蛇”是一款經(jīng)典的小游戲,以其操作簡單、娛樂性強而廣受歡迎。一條蛇在封閉的圍墻內(nèi)移動,在圍墻內(nèi)隨機出現(xiàn)一個食物,通過鍵盤的方向鍵來控制蛇的移動,當蛇吃到食物后蛇的身體長一節(jié),同時出現(xiàn)一個新的食物等待蛇去吃,如果蛇在移動過程中蛇頭吃到自己身體或者吃到圍墻的石頭,則蛇死亡,游戲結束。 作為一個小游戲

6、,設計中必須要考慮人機交互和用戶體驗,因此游戲界面應簡潔直觀,讓用戶可直接了解游戲的操作。 “貪吃蛇”的設計對java編程的提高和進階是一次很好的鍛煉機會。本次設計使用java語言,通過GUI編程、線程、事件監(jiān)聽等技術來實現(xiàn)游戲的開發(fā),功能雖然較少,但游戲的基本功能都具備,可正常進行游戲。 2. 功能介紹 “貪吃蛇”小游戲的設計較復雜,要想實現(xiàn)所有功能需要很高的技術要求和很強的編程能力。由于本人技術能力欠缺,所以只能實現(xiàn)基本的游戲功能,通過畫圖的方法來顯示出蛇的身體,食物的位置和墻的位置。主要操作是通過鍵盤的方向鍵來控制蛇的移動方向,無效方向要忽略;當蛇吃到食物時蛇的身體變長一節(jié),同時產(chǎn)

7、生一個新的食物;蛇吃到自己身體或者吃到石頭時死亡,游戲結束;在游戲控制區(qū)域可通過相應按鈕來控制游戲的運行進度。 3. 設計環(huán)境 本次游戲設計的環(huán)境及開發(fā)工具如下: 運行環(huán)境:Windows 7 編程語言:java 開發(fā)環(huán)境:eclipse 第2部分需求分析 1. 用戶特點分析 游戲開發(fā)成功后,可適用于各類人群使用,所以要求界面簡單,操作方便, 不需要進行專門培訓就可以學會如何操作 2.功能需求 2.1圖形界面的需求 游戲畫布區(qū)主要包括蛇的身體出現(xiàn)的位置,食物隨機出現(xiàn)的位置,墻的固定位置,以及蛇可移動的區(qū)域。 游戲控制區(qū)域顯示按鈕及操作提示。 2.2屬性需求 在可使

8、用性方面,要求各個功能實現(xiàn)簡單,操作方便,系統(tǒng)處理正確;整個系統(tǒng)恢復性能號,鏈接速度快,以確保系統(tǒng)可適用性好。 另外,還要求系統(tǒng)的可擴展性、可維護性、可移植性良好。 2.3功能模塊需求 軟件開發(fā)過程中的功能模塊設計,主要解決實現(xiàn)該游戲需求的程序模塊設計問題。包括如何把該游戲劃分成若干個模塊、決定各個模塊之間的接口、模塊之間穿的的信息,以及模塊結構的設計等。 2.3.1游戲功能 本游戲主要完成以下幾方面的功能: 1) 游戲控制功能 2) 界面布局 3) 其他輔助功能 2.3.2功能模塊劃分 根據(jù)游戲需求,整個游戲主要劃分為游戲界面和游戲控制兩個模塊。見圖2.1 。游戲界面是整

9、個游戲的運行區(qū)域,可動態(tài)的觀察游戲過程。游戲控制是用來控制游戲進程的,可以開始游戲,暫停/繼續(xù)游戲,停止游戲。 貪吃蛇游戲 游戲界面模塊 游戲控制模塊 圖2.1 游戲模塊劃分 第3部分 系統(tǒng)設計 1. 系統(tǒng)流程圖 系統(tǒng)流程圖是描繪系統(tǒng)物理模型的傳統(tǒng)工具。它的基本

10、思想是用圖形符號描繪系統(tǒng)里面的每個部件,表達信息在各個部件之間流動的情況。 開始游戲 控制蛇移動 身體變長 是否吃到自己 是 是 是否吃到食物 否 否 是否撞墻 否游戲結束 蛇死亡 是 圖3.1 系統(tǒng)流程圖 2.類模塊設計 本次設計遵循MVC設計模式,主要類之間的關系如下: Snake類 (蛇

11、類) Game類 (主面板) Controller類(控制器) Ground類 (墻類) Food類 (食物類) 圖3.2 MVC設計模式體現(xiàn) Snake類:設置蛇的屬性,以及蛇的產(chǎn)生、移動、吃食物、死亡等方法。 Food類:設置食物的隨機產(chǎn)生和是否被吃掉等方法。 Controller類:監(jiān)聽Snake類以及按鍵事件,并進行處理。 Game類:用來控制游戲進程和界面的顯示。 3.各類的詳細設計 表3.1 Snake類 成員 作用 private boolean pause; 判斷是否暫停 private boolean life; 判斷蛇是

12、否死亡 private boolean isMoving; 判斷蛇是否在移動 private LinkedListbody; 存放蛇的身體節(jié)點 private void init(); 初始化方法 public void move(); 蛇的移動方法 public void drawMe(Graphics g); 畫出蛇的身體 public void start(); 讓蛇開始移動 public void die(); 讓蛇死亡 表3.2 Food類: Public void newFood(Point p); 設置食物產(chǎn)生的位置 Public

13、 Boolean isSnakeEatFood(Snake snake); 判斷蛇是否吃到食物 public void drawMe(Graphics g); 在畫布上畫出食物 表3.3 Ground類: Private int[][] rocks; 存放石頭的數(shù)組 Public Ground(); 初始化石頭 Public Boolean isSnakeEatRock(Snake snake); 判斷是否吃到石頭 Public Point getPoint(); 設置食物產(chǎn)生的位置 public void drawMe(Graphics g); 在畫布上畫出石頭

14、 表3.4 Controller類: Public Controller(Snake snake,Food food,Ground ground,GamePanel gamePanel); 初始化控制器類 Public void keyPressed(KeyEvent e); 監(jiān)聽按鍵事件 Public void snakeMoved(Snake snake); 監(jiān)聽蛇的移動 Public void newGame(); 創(chuàng)建新游戲 Public void setSnake(Snake snake); 設置蛇 第4部分 系統(tǒng)實現(xiàn) 1. 界面展示 “貪吃蛇”小游戲適合廣

15、大群體,故界面應以簡潔直觀為主,讓 玩家一眼便可了解游戲的操作。具體游戲界面如下: 游戲初始化界面 圖 4.1 游戲初始化界面 游戲開始界面 圖 4.2 游戲開始運行界面 游戲結束界面 圖 4.3 游戲結束界面 2.游戲的具體實現(xiàn)代碼 2.1游戲畫布區(qū) publicvoid display(Snake snake,Food food,Ground ground){ System.out.println("GamePanel's display"); this.snake = snake; this.food = food; this.ground = groun

16、d; 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 != null){ this.ground.drawMe(g); this.snake.drawMe(g); this.food.d

17、rawMe(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 label_tips = new JLabel("方向鍵控制蛇的移動

18、"); 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("楷

19、體", Font.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.setB

20、ounds(70, 70, 300, 40); add(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

21、getTipsLabel(){ returnlabel_tips; } 2.3蛇的移動 publicvoid move(){ if(!(oldDirection + newDirection == 0)){ oldDirection = newDirection; } System.out.println("Snake's move"); oldTail = body.removeLast(); intx = body.getFirst().x; inty = body.getFirst().y; switch(oldDirection){ caseUP:

22、 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.WIDTH - 1; } break; caseRIGHT: x++; if(x == Global.WIDTH){ x = 0; } break; } Point newHead = new Point(x,y); body.addFi

23、rst(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_DOWN: snake.changeDirection(Snake.DOWN); break; case KeyEvent.VK_LEFT:

24、 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.CELL_SIZE, Global.CELL_SIZE, Glo

25、bal.CELL_SIZE, true); } } 2.6隨機產(chǎn)生食物 public Point getPoint(){ Random radom = new Random(); intx = 0, y = 0; do{ x = radom.nextInt(Global.WIDTH); y = radom.nextInt(Global.HEIGHT); }while(rocks[x][y]==1); return (new Point(x,y)); } 2.7初始化墻 public Ground(){ for(intx=0;x

26、TH;x++){ rocks[x][0] = 1; rocks[x][Global.WIDTH-1] = 1; } for(inty=0;y

27、斷地發(fā)現(xiàn)問題和解決問題,在以后的工作中就會減小這些漏洞出現(xiàn)的幾率,不斷地完善每一個軟件是每一個軟件開發(fā)人員共同的愿望。所以,進行系統(tǒng)測試是十分必要的。 在進行本次游戲設計的過程中,對于軟件的測試一直貫穿始終,對于在開發(fā)過程中的代碼和文檔,以及系統(tǒng)完成后都在進行測試。測試并不僅僅是為了找出錯誤,通過分析錯誤產(chǎn)生的原因和錯誤的發(fā)生趨勢,可以幫助項目管理者發(fā)現(xiàn)當前軟件開發(fā)過程中的缺陷,以便及時改進。 測試主要分5種,即單元測試、集成測試、確認測試和白盒測試和黑盒測試。 本次游戲測試主要采用黑盒測試方法,檢查游戲功能是否能實現(xiàn)。 5.2 詳細測試 5.2.1測試一 測試內(nèi)容:是否能正常開始游

28、戲 測試方法:點擊開始按鈕 預期結果:游戲區(qū)出現(xiàn)蛇、食物和墻,蛇會移動 測試結果:和預期一樣,祥見圖5.1 圖 5.1 開始按鈕測試 5.2.2測試二 測試內(nèi)容:是否能暫停/繼續(xù)游戲 測試方法:點擊暫停/繼續(xù)按鈕 預期結果:點擊暫停后蛇停止移動,按鈕變?yōu)槔^續(xù)游戲,點擊繼續(xù)后沿原方向移動,按鈕變?yōu)闀和S螒颉? 測試結果:和預期一樣,祥見圖5.2和圖5.3 圖5.2 暫停游戲測試 圖5.3 繼續(xù)游戲測試 5.2.3測試三 測試內(nèi)容:蛇是否能吃食物身體變長 測試方法:控制蛇移動去吃食物 預期結果:吃食物后蛇身體變長一節(jié),同時產(chǎn)生一個新的食物 測試結果:和預期一樣,祥

29、見圖5.4 圖5.4 蛇吃食物測試(蛇身體默認為3節(jié)) 5.2.4測試四 測試內(nèi)容:蛇撞墻是否會死 測試方法:控制蛇移動去撞墻 預期結果:蛇死亡不再移動,游戲結束 測試結果:和預期一樣,祥見圖5.5 圖5.5 蛇撞墻死亡測試 5.2.5測試五 測試內(nèi)容:蛇吃到自己身體是否會死 測試方法:控制蛇移動讓蛇頭吃到自己身體 預期結果:蛇死亡不再移動,游戲結束 測試結果:和預期一樣,祥見圖5.6 圖5.6 蛇吃到自己身體測試 第6部分 系統(tǒng)總結 本次課程設計從游戲界面和游戲控制兩方面實現(xiàn)了比較完善的功能,因為本人能力有限,還需要學習的地方很多,所以還是不盡完美,有很多可

30、以優(yōu)化的地方,但游戲的基本功能都很齊全,相比之前做的管理系統(tǒng)類的設計,應該可以說是又上升了一個層次。 雖然在設計中遇到了很多困難,比如說為了修改一個小小的bug而花費一整天,重新去學習新的知識,改了一次又一次等等,但是終于功夫不負有心人,游戲的功能都基本上實現(xiàn)了,作為一個學習計算機的人,尤其是一個即將畢業(yè)的大四學生,更需要有堅持不懈的毅力和不斷學習新知識的激情,困難只是我們走向成功的階梯。當你克服一個一個的困難后,會感到滿滿的成就感。 總體來說,這次課設對我自己是一次很好的鍛煉機會,不僅把以前學到的只是溫習了一遍,還學習到了很多新知識,而且還提高了敲代碼的能力。對設計中遇到的問題,通過仔細思考和查閱資料,使得問題得以解決,對自己以后獨立思考解決問題的能力也有很大幫助。 參考文獻 1李芝興 楊瑞龍. Java程序設計之網(wǎng)絡編程(第2版). 清華大學出版社,2013.7 2張海藩 牟永敏. 軟件工程導論(第6版). 清華大學出版社,2015.7

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

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!