版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、四四 川川 理理 工工 學(xué)學(xué) 院院課 程 設(shè) 計 書學(xué)院 計算機學(xué)院 專業(yè) 軟 件 工 程 班級 2013 級 4 班 題目 推箱子游戲制作推箱子游戲制作 教師 華才健華才健 學(xué)生 黃凡,劉祥寬黃凡,劉祥寬 目目 錄錄1.項目開發(fā)背景項目開發(fā)背景 .11.1設(shè)計目的.11.2設(shè)計目的.11.3現(xiàn)狀分析.11.4背景分析.12.功能需求分析功能需求分析.24.1項目功能描述.24.2軟件功能模塊結(jié)構(gòu)圖.23.系統(tǒng)設(shè)計系統(tǒng)設(shè)計.33.1類的設(shè)計.33.1.1MainFrame 類的設(shè)計.33.1.2window 類的設(shè)計.33.1.2 tanchuang 類的設(shè)計 .43.1.3LogicHelp
2、er類的設(shè)計.43.2方法實現(xiàn)的流程圖.43.3接口設(shè)計(類的關(guān)聯(lián)圖).54.代碼實現(xiàn)代碼實現(xiàn).54.1游戲人物創(chuàng)建功能代碼實現(xiàn).54.2圖片標識符代碼實現(xiàn).124.3.游戲啟動窗體代碼實現(xiàn) .134.4游戲人物創(chuàng)建功能代碼實現(xiàn).154.5圖片標識符代碼實現(xiàn).155.功能測試功能測試.155.1游戲啟動窗體功能的結(jié)果與測試.155.2游戲幫助功能的結(jié)果與測試.155.3游戲運行功能的結(jié)果與測試.175.4游戲結(jié)果檢測,判定以及勝利彈窗功能的結(jié)果與測試.186.總結(jié)總結(jié).19第 0 頁1,項目開發(fā)背景,項目開發(fā)背景1.1 設(shè)計目的設(shè)計目的通過編寫 java 小程序鍛煉自己寫程序的能力與想法,和合
3、作伙伴的分工合作,協(xié)調(diào)相互之間的代碼,提升個人的團隊合作意識。熟悉 java 編程的 AWT+Swing界面交互制作,java 編程的包與類的運用等等。1.2 設(shè)計目標設(shè)計目標用 java 的類和方法來實現(xiàn)制作推箱子游戲。通過 JLabel 添加圖片的方式,將游戲用的人物,目標,障礙等圖片添加進程序中。通過“碰撞算法”來判斷人物的移動,操作人物的移動以及最后游戲目標的達成。運用 java 的 JFrame 窗口制作。來實現(xiàn)程序的交互設(shè)計。以及最后游戲的評價。1.3 現(xiàn)狀分析現(xiàn)狀分析隨著現(xiàn)在手機平臺,電腦平臺的走進尋常百姓家,電子產(chǎn)品已經(jīng)融入到人們生活的方方面面。通過手機,電腦,人們可以完成絕大
4、部分生活中的需求。游戲,作為軟件平臺的一大不可或缺的一部分,在軟件領(lǐng)域里可謂是重工業(yè)。游戲已經(jīng)成為人們?nèi)粘I钪械膴蕵贩绞街弧?.4 設(shè)計背景設(shè)計背景隨著科學(xué)技術(shù)的發(fā)展,人們的生活水平越來越繁忙,在充滿競爭的社會條件下,壓力往往帶給人們很多煩惱,所以合理的解壓方式稱為現(xiàn)代人的共同心愿. 為了給大家提供一個合理的解壓平臺, 我們在本次課程設(shè)計中為大家開發(fā)了一款適合休閑娛樂的小游戲, 本次課程設(shè)計是配合 JAVA 程序設(shè)計課程,深入學(xué)習(xí)掌握 JAVA 語言,熟練 運用 Java 工具對系統(tǒng)的編寫.通過課程設(shè)計各個項目的綜合訓(xùn)練,培養(yǎng)學(xué)生實 際分析問題,編程和動手能力,提高學(xué)生的綜合素質(zhì)第 1 頁
5、2. 功能需求功能需求分析分析2.1 項目功能描述項目功能描述窗口制作:將游戲用的圖片添加到窗體中。人物移動規(guī)則:判斷人物移動的條件,以及移動箱子的條件。移動人物時,對人物的圖片坐標進行修改。加入鍵盤監(jiān)聽事件。游戲勝利規(guī)則:判斷游戲是否勝利,并且產(chǎn)生一個信息菜單窗口,供用戶選擇返回游戲首頁還是直接進入下一關(guān)。游戲首頁:制作一個友好型界面,來啟動游戲。提供新游戲,繼續(xù)游戲,信息幫助,離開游戲等功能。2.2 項目功能模塊圖項目功能模塊圖游戲啟動游戲主界面窗口設(shè)計人物障礙可視化實現(xiàn)碰撞模型設(shè)計開始游戲游戲幫助關(guān)閉游戲圖片布局監(jiān)聽事件移動規(guī)則人物移動箱子移動目標實現(xiàn)第 2 頁3. 系統(tǒng)設(shè)計系統(tǒng)設(shè)計3.
6、1 類的設(shè)計類的設(shè)計3.11MainFrame 的設(shè)計的設(shè)計成員方法方法功能Private void dateUI()人物箱子目標布局實現(xiàn)Private void dateInit()障礙的布局(采用二維數(shù)組實現(xiàn))Private void backgroundUI()游戲背景的設(shè)置Private void mainFrameBaseUI()游戲運行界面的框架Pribvate static void move(.)圖片移動控制Public void keyPressed(keyEvent e)人物移動的各種判定以及鍵盤監(jiān)聽事件的實現(xiàn)方法Private void victory()游戲勝利的判定算
7、法以及彈窗按鈕實現(xiàn)3.12window 類的設(shè)計類的設(shè)計成員方法方法功能Private void ck()游戲首頁窗口設(shè)計加入按鈕事件,包括游戲開始的界面切換鏈接,游戲幫助的彈窗,離開游戲按鈕。Private void background()游戲首頁背景的添加大小設(shè)置Public window()窗體的整合第 3 頁3.13tanchuang 類的設(shè)計類的設(shè)計成員方法方法功能Public tanchuang extends JFrame設(shè)置關(guān)于游戲的信息小彈窗3.14LogicHelper 類類成員數(shù)據(jù)功能標示FLOOR空地為 0WALL障礙為 1BOX箱子為 2TARGET目標點為 4BO
8、X_AND_TARGET箱子進入目標點改變?yōu)?63.2 方法實現(xiàn)的流程圖方法實現(xiàn)的流程圖開始游戲移動?移動障礙?不移動推箱子移動目標達成信息選項彈窗第 4 頁3.3 接口設(shè)計(類的關(guān)聯(lián)圖)接口設(shè)計(類的關(guān)聯(lián)圖)4. 代碼實現(xiàn)代碼實現(xiàn)4.1 游戲人物創(chuàng)建代碼游戲人物創(chuàng)建代碼package UI;import UI.window;import java.awt.Container;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.event.MouseAdapter;import jav
9、a.awt.event.MouseEvent;import javax.swing.ImageIcon;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;Window 類Tanchuang 類MainFrame 類LogicHelper 類App.Java第 5 頁import app.LogicHelper;public class MainFrame extends JFrame implements KeyListenerprivate Container panel;privat
10、e JLabel player;/人物所處行private int playerX;/人物所處列private int playerY;/任務(wù)完成計數(shù)器int count = 0;/任務(wù)完成總數(shù)int total = 3;public MainFrame()/主窗體 UI 初始化this.mainFrameBaseUI();/UI 數(shù)據(jù)初始化this.dateInit();/UI 初始化this.dateUI();/背景地板 UI 初始化this.backgroundUI();/窗體添加鍵盤監(jiān)聽this.addKeyListener(this);this.setVisible(true);pr
11、ivate JLabel uis = new JLabel1216;private void dateUI() /墻初始化for (int i = 0; i dates.length; i+) for (int j = 0; j = 37 & keyCode = 40)/人物圖片切換/上 38/下 40/左 37/右 39player.setIcon(new ImageIcon(x+y+.png);/碰地板檢測,碰目標檢測if(datesplayerX-xplayerY-y = LogicHelper.FLOOR | datesplayerX-xplayerY-y = LogicHel
12、per.TARGET)move(player,x,y);playerX = playerX-x;第 9 頁playerY = playerY-y;return;/碰箱子檢測if(datesplayerX-xplayerY-y = LogicHelper.BOX | datesplayerX-xplayerY-y = LogicHelper.BOX_AND_TARGET)/同方向是否為空地板或目標位置/獲取前方移動障礙物碼int code1 = datesplayerX-xplayerY-y;int code2 = datesplayerX-x*2playerY-y*2;if(code2 = L
13、ogicHelper.FLOOR | code2 = LogicHelper.TARGET)/箱子移動JLabel box = uisplayerX-xplayerY-y;move(box,x,y);/uis 模型更新uisplayerX-x*2playerY-y*2 = uisplayerX-xplayerY-y;uisplayerX-xplayerY-y = null;/dates 模型更新/從箱子到空地if(code1 = LogicHelper.BOX & code2 = LogicHelper.FLOOR )datesplayerX-x*2playerY-y*2 = Logi
14、cHelper.BOX;datesplayerX-xplayerY-y = LogicHelper.FLOOR;/從箱子到目標if(code1 = LogicHelper.BOX & code2 = LogicHelper.TARGET)datesplayerX-x*2playerY-y*2 = LogicHelper.BOX_AND_TARGET;datesplayerX-xplayerY-y = LogicHelper.FLOOR;/改變箱子模型box.setIcon(new ImageIcon(40.png);count+;/從箱子目標到空地if(code1 = LogicHel
15、per.BOX_AND_TARGET & code2 = LogicHelper.FLOOR )datesplayerX-x*2playerY-y*2 = LogicHelper.BOX;datesplayerX-xplayerY-y = LogicHelper.TARGET;第 10 頁/改變箱子模型box.setIcon(new ImageIcon(4.png);count-;/從箱子目標到目標if(code1 = LogicHelper.BOX_AND_TARGET & code2 = LogicHelper.TARGET)datesplayerX-x*2playerY-
16、y*2 = LogicHelper.BOX_AND_TARGET;datesplayerX-xplayerY-y = LogicHelper.TARGET;/改變箱子模型box.setIcon(new ImageIcon(40.png);/人物模型移動move(player,x,y);/人物坐標更新playerX = playerX-x;playerY = playerY-y;victory();return;/勝利判定private void victory() if(count = total)/移除窗體鍵盤事件,避免用戶多余操作this.removeKeyListener(this);J
17、Dialog victory = new JDialog(this,老婆今天晚上可以吃羊了!,true);victory.setSize(400, 300);victory.setLocationRelativeTo(null);victory.setLocation(300,250);victory.setLayout(null);JLabel info = new JLabel(new ImageIcon(gg.jpg);info.setBounds(2, 2, 380, 180);victory.add(info);JLabel MAINFRAME = new JLabel(new Im
18、ageIcon(gg2.jpg);MAINFRAME.setBounds(2, 182, 200, 88);第 11 頁MAINFRAME.addMouseListener(new MouseAdapter()public void mousePressed(MouseEvent e) new window();MainFrame.this.setVisible(false););victory.add(MAINFRAME);JLabel NEXTGAME = new JLabel(new ImageIcon(gg3.jpg);NEXTGAME.setBounds(200, 182, 200,
19、 88);NEXTGAME.addMouseListener(new MouseAdapter()public void mousePressed(MouseEvent e) if(LogicHelper.N3)new MainFrame(); MainFrame.this.setVisible(false); );victory.add(NEXTGAME);victory.setVisible(true); public void keyReleased(KeyEvent e) int keyCode = e.getKeyCode();if(keyCode=27)LogicHelper.N-
20、;new window();MainFrame.this.setVisible(false);if(keyCode=116)LogicHelper.N-;MainFrame.this.setVisible(false);new MainFrame();public void keyTyped(KeyEvent e) 4.2 地圖顯示圖片標識類地圖顯示圖片標識類第 12 頁package app;public class LogicHelper public static final int FLOOR = 0;public static final int WALL = 1;public st
21、atic final int BOX = 2;public static final int TARGET = 4;public static final int BOX_AND_TARGET = 6; public static int N=0;4.3 游戲啟動窗體游戲啟動窗體package UI;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;import app.LogicHelper;public class win
22、dow extends JFrame implements ActionListener /* * */private static final long serialVersionUID = -7312789319638249447L;private JButton button1,button2, button3,button4; Container container;public window() ck(); background(); private void ck()container=this.getContentPane(); this.setLayout(null); thi
23、s.setLocation(250,50); this.setTitle(推箱子 V1.0 BY2013 級軟件四班黃凡,劉祥寬);button1=new JButton(新游戲);button1.setBounds(350, 100, 90,30 );button4=new JButton(繼續(xù)游戲);button4.setBounds(350, 200, 90,30 );button2=new JButton(獲取幫助);第 13 頁button2.setBounds(350, 300, 90,30 );button3=new JButton(退出游戲);button3.setBounds
24、(350, 400, 90,30 );container.add(button1);container.add(button2);container.add(button3);container.add(button4);setResizable(false);/窗口大小鎖定 this.setVisible(true); this.setSize(800,600); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); button1.addActionListener(new ActionListener()public void acti
25、onPerformed(ActionEvent e) LogicHelper.N=0; new MainFrame();window.this.setVisible(false); ); button2.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) new tanchuang();); button3.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) button1.s
26、etVisible(false); System.exit(0);); button4.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) if(LogicHelper.N=3)LogicHelper.N=0; new MainFrame();window.this.setVisible(false); );private void background()Icon i=new ImageIcon(bg.jpg);JLabel ct_bg=new JLabel(i);ct_bg.set
27、Bounds(8,12,800,600);第 14 頁this.add(ct_bg);Overridepublic void actionPerformed(ActionEvent e) / TODO 自動生成的方法存根4.4 幫助彈窗源代碼幫助彈窗源代碼package UI;import java.awt.Color;import java.awt.FlowLayout;import java.awt.TextArea;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JTextArea;public class tanchuang extends JFrame/private JLabel help;public tanchuang() JTextArea center;this.setLayout(new FlowLayout();this.setTitle(游戲幫助);this.setVisible(true); this.setSize(400,100); this.setLocation(300,250); setResizable(false);/窗口大小鎖定 center = new JTextArea(留言內(nèi)容:通過鍵盤上下左右移動實現(xiàn)
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版生物質(zhì)發(fā)電監(jiān)理服務(wù)合同三方協(xié)議3篇
- 二零二五版企業(yè)安全風(fēng)險評估與安保服務(wù)合同3篇
- 二零二五年度高品質(zhì)鋼結(jié)構(gòu)裝配式建筑安裝服務(wù)合同3篇
- 二零二五版電影投資融資代理合同樣本3篇
- 二零二五版初級農(nóng)產(chǎn)品電商平臺入駐合同2篇
- 二零二五年度電商平臺安全實驗報告安全防護方案合同3篇
- 二零二五年度白酒銷售區(qū)域保護與競業(yè)禁止合同3篇
- 二零二五版建筑工程專用防水材料招投標合同范本3篇
- 二零二五年研發(fā)合作與成果共享合同2篇
- 二零二五版鋼結(jié)構(gòu)工程節(jié)能合同范本下載3篇
- 2024年四川省德陽市中考道德與法治試卷(含答案逐題解析)
- 施工現(xiàn)場水電費協(xié)議
- SH/T 3046-2024 石油化工立式圓筒形鋼制焊接儲罐設(shè)計規(guī)范(正式版)
- 六年級數(shù)學(xué)質(zhì)量分析及改進措施
- 一年級下冊數(shù)學(xué)口算題卡打印
- 真人cs基于信號發(fā)射的激光武器設(shè)計
- 【閱讀提升】部編版語文五年級下冊第三單元閱讀要素解析 類文閱讀課外閱讀過關(guān)(含答案)
- 四年級上冊遞等式計算練習(xí)200題及答案
- 法院后勤部門述職報告
- 2024年國信證券招聘筆試參考題庫附帶答案詳解
- 道醫(yī)館可行性報告
評論
0/150
提交評論