計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)《綜合課程設(shè)計(jì)》報(bào)告
《計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)《綜合課程設(shè)計(jì)》報(bào)告》由會員分享,可在線閱讀,更多相關(guān)《計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)《綜合課程設(shè)計(jì)》報(bào)告(18頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)12級 《綜合課程設(shè)計(jì)》報(bào)告 題目:貪吃蛇小游戲 成員: 姓名 學(xué)號 郝興明 201207051 指導(dǎo)教師:王金龍 開始日期: 2015 年12月7 日 完成日期: 2016 年01月8 日 2012級《綜合課程設(shè)計(jì)》評價表 題 目 貪吃蛇小游戲 指導(dǎo)老師 王金龍 項(xiàng) 目 內(nèi) 容 簡 介 本次綜合課程設(shè)計(jì)的內(nèi)容為“貪吃蛇”小游戲,游戲操作簡單,設(shè)計(jì)卻很復(fù)雜,主要實(shí)現(xiàn)的內(nèi)容為:通過鍵盤控制蛇的移動,判斷蛇是否死亡,以及通過相應(yīng)按鈕來控制游戲的進(jìn)程。 評價 工作量 (
2、□飽滿、□達(dá)到要求、□不飽滿); 運(yùn)行效果 (□良好、□有小問題、□錯誤較多); 文檔及報(bào)告撰寫 (□規(guī)范、□較規(guī)范、 □不規(guī)范、□未提交); 答辯 (□優(yōu)秀、□良好、 □一般、 □較差); 團(tuán)隊(duì)分工及協(xié)作 (□很好、□較好、 □一般、 □較差)。 成績 學(xué) 號 姓 名 組內(nèi)分工 貢獻(xiàn)排名 成 績 201207051 郝興明 程序設(shè)計(jì)、編寫、測試、報(bào)告 答辯小組簽字 青島理工大學(xué)課程設(shè)計(jì)任務(wù)書 姓 名 組內(nèi)分工
3、 郝興明 程序設(shè)計(jì)、編寫、測試、報(bào)告 院 (系): 計(jì)算機(jī)工程 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 任務(wù)起至日期: 2015年 12月 7 日 至 2016年 01月 8 日
4、 課程設(shè)計(jì)題目: 貪吃蛇小游戲 主要內(nèi)容及要求: “貪吃蛇”小游戲主要應(yīng)實(shí)現(xiàn)以下幾個方面的功能: 1. 通過方向鍵控制蛇的移動 2.蛇吃到食物后身體變長 3.食物的隨機(jī)產(chǎn)生 4.蛇吃到自己身體或墻后死亡 5.蛇在移動過程中可以暫停/繼續(xù) 6.可手動停止游戲 工作計(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日
5、 詳細(xì)功能設(shè)計(jì) 2015年12月31日---2016年01月03日 程序測試 2016年01月04日---2016年01月05日 書寫報(bào)告 2016年01月06日 項(xiàng)目答辯 第1部分 概述 1. 內(nèi)容簡介 “貪吃蛇”是一款經(jīng)典的小游戲,以其操作簡單、娛樂性強(qiáng)而廣受歡迎。一條蛇在封閉的圍墻內(nèi)移動,在圍墻內(nèi)隨機(jī)出現(xiàn)一個食物,通過鍵盤的方向鍵來控制蛇的移動,當(dāng)蛇吃到食物后蛇的身體長一節(jié),同時出現(xiàn)一個新的食物等待蛇去吃,如果蛇在移動過程中蛇頭吃到自己身體或者吃到圍墻的石頭,則蛇死亡,游戲結(jié)束。 作為一個小游戲
6、,設(shè)計(jì)中必須要考慮人機(jī)交互和用戶體驗(yàn),因此游戲界面應(yīng)簡潔直觀,讓用戶可直接了解游戲的操作。 “貪吃蛇”的設(shè)計(jì)對java編程的提高和進(jìn)階是一次很好的鍛煉機(jī)會。本次設(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)蛇吃到食物時蛇的身體變長一節(jié),同時產(chǎn)
7、生一個新的食物;蛇吃到自己身體或者吃到石頭時死亡,游戲結(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é)會如何操作 2.功能需求 2.1圖形界面的需求 游戲畫布區(qū)主要包括蛇的身體出現(xiàn)的位置,食物隨機(jī)出現(xiàn)的位置,墻的固定位置,以及蛇可移動的區(qū)域。 游戲控制區(qū)域顯示按鈕及操作提示。 2.2屬性需求 在可使
8、用性方面,要求各個功能實(shí)現(xiàn)簡單,操作方便,系統(tǒng)處理正確;整個系統(tǒng)恢復(fù)性能號,鏈接速度快,以確保系統(tǒng)可適用性好。 另外,還要求系統(tǒng)的可擴(kuò)展性、可維護(hù)性、可移植性良好。 2.3功能模塊需求 軟件開發(fā)過程中的功能模塊設(shè)計(jì),主要解決實(shí)現(xiàn)該游戲需求的程序模塊設(shè)計(jì)問題。包括如何把該游戲劃分成若干個模塊、決定各個模塊之間的接口、模塊之間穿的的信息,以及模塊結(jié)構(gòu)的設(shè)計(jì)等。 2.3.1游戲功能 本游戲主要完成以下幾方面的功能: 1) 游戲控制功能 2) 界面布局 3) 其他輔助功能 2.3.2功能模塊劃分 根據(jù)游戲需求,整個游戲主要劃分為游戲界面和游戲控制兩個模塊。見圖2.1 。游戲界面是整
9、個游戲的運(yùn)行區(qū)域,可動態(tài)的觀察游戲過程。游戲控制是用來控制游戲進(jìn)程的,可以開始游戲,暫停/繼續(xù)游戲,停止游戲。 貪吃蛇游戲 游戲界面模塊 游戲控制模塊 圖2.1 游戲模塊劃分 第3部分 系統(tǒng)設(shè)計(jì) 1. 系統(tǒng)流程圖 系統(tǒng)流程圖是描繪系統(tǒng)物理模型的傳統(tǒng)工具。它的基本
10、思想是用圖形符號描繪系統(tǒng)里面的每個部件,表達(dá)信息在各個部件之間流動的情況。 開始游戲 控制蛇移動 身體變長 是否吃到自己 是 是 是否吃到食物 否 否 是否撞墻 否游戲結(jié)束 蛇死亡 是 圖3.1 系統(tǒng)流程圖 2.類模塊設(shè)計(jì) 本次設(shè)計(jì)遵循MVC設(shè)計(jì)模式,主要類之間的關(guān)系如下: Snake類 (蛇
11、類) Game類 (主面板) Controller類(控制器) Ground類 (墻類) Food類 (食物類) 圖3.2 MVC設(shè)計(jì)模式體現(xiàn) Snake類:設(shè)置蛇的屬性,以及蛇的產(chǎn)生、移動、吃食物、死亡等方法。 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; 判斷蛇是
12、否死亡
private boolean isMoving;
判斷蛇是否在移動
private LinkedList
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(); 設(shè)置食物產(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); 設(shè)置蛇 第4部分 系統(tǒng)實(shí)現(xiàn) 1. 界面展示 “貪吃蛇”小游戲適合廣
15、大群體,故界面應(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.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隨機(jī)產(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ā)人員共同的愿望。所以,進(jìn)行系統(tǒng)測試是十分必要的。
在進(jìn)行本次游戲設(shè)計(jì)的過程中,對于軟件的測試一直貫穿始終,對于在開發(fā)過程中的代碼和文檔,以及系統(tǒng)完成后都在進(jìn)行測試。測試并不僅僅是為了找出錯誤,通過分析錯誤產(chǎn)生的原因和錯誤的發(fā)生趨勢,可以幫助項(xiàng)目管理者發(fā)現(xiàn)當(dāng)前軟件開發(fā)過程中的缺陷,以便及時改進(jìn)。
測試主要分5種,即單元測試、集成測試、確認(rèn)測試和白盒測試和黑盒測試。 本次游戲測試主要采用黑盒測試方法,檢查游戲功能是否能實(shí)現(xiàn)。
5.2 詳細(xì)測試
5.2.1測試一
測試內(nèi)容:是否能正常開始游 28、戲
測試方法:點(diǎn)擊開始按鈕
預(yù)期結(jié)果:游戲區(qū)出現(xiàn)蛇、食物和墻,蛇會移動
測試結(jié)果:和預(yù)期一樣,祥見圖5.1
圖 5.1 開始按鈕測試
5.2.2測試二
測試內(nèi)容:是否能暫停/繼續(xù)游戲
測試方法:點(diǎn)擊暫停/繼續(xù)按鈕
預(yù)期結(jié)果:點(diǎn)擊暫停后蛇停止移動,按鈕變?yōu)槔^續(xù)游戲,點(diǎn)擊繼續(xù)后沿原方向移動,按鈕變?yōu)闀和S螒颉?
測試結(jié)果:和預(yù)期一樣,祥見圖5.2和圖5.3
圖5.2 暫停游戲測試
圖5.3 繼續(xù)游戲測試
5.2.3測試三
測試內(nèi)容:蛇是否能吃食物身體變長
測試方法:控制蛇移動去吃食物
預(yù)期結(jié)果:吃食物后蛇身體變長一節(jié),同時產(chǎn)生一個新的食物
測試結(jié)果:和預(yù)期一樣,祥 29、見圖5.4
圖5.4 蛇吃食物測試(蛇身體默認(rèn)為3節(jié))
5.2.4測試四
測試內(nèi)容:蛇撞墻是否會死
測試方法:控制蛇移動去撞墻
預(yù)期結(jié)果:蛇死亡不再移動,游戲結(jié)束
測試結(jié)果:和預(yù)期一樣,祥見圖5.5
圖5.5 蛇撞墻死亡測試
5.2.5測試五
測試內(nèi)容:蛇吃到自己身體是否會死
測試方法:控制蛇移動讓蛇頭吃到自己身體
預(yù)期結(jié)果:蛇死亡不再移動,游戲結(jié)束
測試結(jié)果:和預(yù)期一樣,祥見圖5.6
圖5.6 蛇吃到自己身體測試
第6部分 系統(tǒng)總結(jié)
本次課程設(shè)計(jì)從游戲界面和游戲控制兩方面實(shí)現(xiàn)了比較完善的功能,因?yàn)楸救四芰τ邢?,還需要學(xué)習(xí)的地方很多,所以還是不盡完美,有很多可 30、以優(yōu)化的地方,但游戲的基本功能都很齊全,相比之前做的管理系統(tǒng)類的設(shè)計(jì),應(yīng)該可以說是又上升了一個層次。
雖然在設(shè)計(jì)中遇到了很多困難,比如說為了修改一個小小的bug而花費(fèi)一整天,重新去學(xué)習(xí)新的知識,改了一次又一次等等,但是終于功夫不負(fù)有心人,游戲的功能都基本上實(shí)現(xiàn)了,作為一個學(xué)習(xí)計(jì)算機(jī)的人,尤其是一個即將畢業(yè)的大四學(xué)生,更需要有堅(jiān)持不懈的毅力和不斷學(xué)習(xí)新知識的激情,困難只是我們走向成功的階梯。當(dāng)你克服一個一個的困難后,會感到滿滿的成就感。
總體來說,這次課設(shè)對我自己是一次很好的鍛煉機(jī)會,不僅把以前學(xué)到的只是溫習(xí)了一遍,還學(xué)習(xí)到了很多新知識,而且還提高了敲代碼的能力。對設(shè)計(jì)中遇到的問題,通過仔細(xì)思考和查閱資料,使得問題得以解決,對自己以后獨(dú)立思考解決問題的能力也有很大幫助。
參考文獻(xiàn)
1李芝興 楊瑞龍. Java程序設(shè)計(jì)之網(wǎng)絡(luò)編程(第2版). 清華大學(xué)出版社,2013.7
2張海藩 牟永敏. 軟件工程導(dǎo)論(第6版). 清華大學(xué)出版社,2015.7
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 川渝旅游日記成都重慶城市介紹推薦景點(diǎn)美食推薦
- XX國有企業(yè)黨委書記個人述責(zé)述廉報(bào)告及2025年重點(diǎn)工作計(jì)劃
- 世界濕地日濕地的含義及價值
- 20XX年春節(jié)節(jié)后復(fù)工安全生產(chǎn)培訓(xùn)人到場心到崗
- 大唐女子圖鑒唐朝服飾之美器物之美繪畫之美生活之美
- 節(jié)后開工第一課輕松掌握各要點(diǎn)節(jié)后常見的八大危險
- 廈門城市旅游介紹廈門景點(diǎn)介紹廈門美食展示
- 節(jié)后開工第一課復(fù)工復(fù)產(chǎn)十注意節(jié)后復(fù)工十檢查
- 傳統(tǒng)文化百善孝為先孝道培訓(xùn)
- 深圳城市旅游介紹景點(diǎn)推薦美食探索
- 節(jié)后復(fù)工安全生產(chǎn)培訓(xùn)勿忘安全本心人人講安全個個會應(yīng)急
- 預(yù)防性維修管理
- 常見閥門類型及特點(diǎn)
- 設(shè)備預(yù)防性維修
- 2.乳化液泵工理論考試試題含答案