版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上 軟件工程 課程設(shè)計(jì)報(bào)告 課 題: 俄羅斯方塊 學(xué) 院: 計(jì)算機(jī)與信息學(xué)院 專 業(yè): 軟件工程 姓名(學(xué)號): 晉燁() 指導(dǎo)教師: 李昭 一、任務(wù)分析俄羅斯方塊是個老少皆宜的小游戲,它實(shí)現(xiàn)由四塊正方形的色塊組成,計(jì)算機(jī)隨機(jī)產(chǎn)生不同七種類型的方塊,根據(jù)計(jì)算機(jī)時鐘控制它在一定的時間不停的產(chǎn)生,用戶根據(jù)鍵盤的四個方向鍵控制翻轉(zhuǎn)、向左、向右和向下操作,然后程序根據(jù)這七種方塊堆疊成各種不同的模型。二、 可行性研究報(bào)告1、設(shè)計(jì)背景俄羅斯方塊是一款風(fēng)靡全球的電視游戲機(jī)和掌上游戲機(jī)游戲,它曾經(jīng)造成的轟動與造成的經(jīng)濟(jì)價值可以說是游戲史上的一件大事。俄羅斯方塊最早還是出現(xiàn)在PC機(jī)上,而
2、我國的用戶都是通過紅白機(jī)了解、喜歡上它的。隨著計(jì)算機(jī)的發(fā)展而發(fā)展,俄羅斯方塊不斷推陳出新,深愛廣大玩家喜愛。這個游戲有的簡單,有的復(fù)雜,但其根本原理是一樣的都是對運(yùn)動的方塊進(jìn)行組合,來訓(xùn)練玩家的反應(yīng)能力。因此開發(fā)此游戲軟件可滿足人們的一些娛樂的需求。此俄羅斯方塊游戲可以為用戶提供一個可在普通個人電腦上運(yùn)行的,界面美觀的,易于控制的俄羅斯方塊游戲。2、設(shè)計(jì)目的通過本游戲的設(shè)計(jì),綜合自己在校期間所學(xué)的理論知識,設(shè)計(jì)開發(fā)俄羅斯廣場游戲,使自己熟應(yīng)用系統(tǒng)的開發(fā)過程,培養(yǎng)獨(dú)立思考能力,檢驗(yàn)學(xué)習(xí)效果和動手能力,初步掌握軟件工程的系統(tǒng)理論,進(jìn)一步鞏固和加強(qiáng)自身對J2SE基礎(chǔ)知識的理解,提高自己的編程水平,從
3、而達(dá)到理論與實(shí)踐相結(jié)合的目的。3、設(shè)計(jì)要求本游戲開發(fā)的總體任務(wù)是實(shí)現(xiàn)游戲的可操作性,以及界面的美觀性。整個開發(fā)過程遵循軟件工程規(guī)范,采用JAVA GUI編程實(shí)現(xiàn)界面以及事件的控制。用戶根據(jù)鍵盤的四個方向鍵控制翻轉(zhuǎn)、向左、向右、和向下操作,通過菜單欄中的相應(yīng)菜單選項(xiàng)實(shí)現(xiàn)游戲的開始、結(jié)束、變換方向、積分以及等級的功能。4、設(shè)計(jì)目標(biāo)通過本游戲的開發(fā),主要實(shí)現(xiàn)游戲的可操作性及美觀性,同時使自己對JAVA語言的了解更進(jìn)一層,為將來的實(shí)際工作打 下堅(jiān)實(shí)的基礎(chǔ)。三、需求分析 游戲需求 28種狀態(tài)的方塊隨機(jī)產(chǎn)生,自由下落,落下時可由玩家用上、下、左、右控制鍵控制翻轉(zhuǎn)和移動,以便玩家所需要的形態(tài)和位置落下。游戲
4、界面需求:設(shè)計(jì)良好的游戲界面可以讓玩家充分感受到游戲帶來的娛樂性,游戲的背景是灰色,方塊為綠色,在一定區(qū)域內(nèi)運(yùn)動和變形游戲形狀需求:長條形、Z字形、反Z字形、田字形、7字形、反7字形、T字型顯示需求:當(dāng)不同的方塊填滿一行時可以消行,剩余方塊向下移動并統(tǒng)計(jì)分?jǐn)?shù)。當(dāng)達(dá)到一定分?jǐn)?shù)的時候,會增加相應(yīng)的分?jǐn)?shù)。四、總體設(shè)計(jì)1、基本設(shè)計(jì)概念(1)游戲區(qū):玩家可以在游戲區(qū)中堆積方塊,并能夠在游戲過程中隨時了解得分情況。(2)游戲控制:玩家可以通過游戲控制功能來選擇開始新的一局游戲,暫?;蛲顺鲇螒?。俄羅斯方塊游戲游戲區(qū)游戲控制顯示玩家操作顯示操作結(jié)果開始暫停/繼續(xù)提高等級退出降低等級基本設(shè)計(jì)概念圖2、 UML類
5、圖3、處理流程圖是否到頂部處理玩家操作開始設(shè)置初始級別創(chuàng)建游戲區(qū)游戲開局隨機(jī)選擇方塊類型是否到頂部方塊下落一行游戲結(jié)束是否系統(tǒng)流程圖游戲區(qū)模塊創(chuàng)建游戲區(qū)處理玩家游戲操作顯示游戲結(jié)果游戲區(qū)模塊游戲控制模塊開始游戲暫停游戲初始級別設(shè)置退出游戲控制區(qū)模塊五、詳細(xì)設(shè)計(jì)1、關(guān)鍵模塊的功能(1)界面的初始化public class ControlPanel extends JPanel / 實(shí)現(xiàn)一組按鈕private Button begainBt = new Button("開始");private Button goOnBt = new Button("繼續(xù)")
6、;private Button pauseBt = new Button("暫停");private Button stopBt = new Button("結(jié)束");/ private TextField tfSocer = new TextField(10);/ private TextField tfGread = new TextField(10);private JTextArea txArea = new JTextArea(0, 9);/ 實(shí)現(xiàn)一組容器private Panel bTPanel = new Panel();private P
7、anel tFPanel = new Panel();private Panel tipPanel = new Panel();private TipBlock tipBlock = new TipBlock();/ 實(shí)現(xiàn)與主類的交流private ErsBlockGame game;public ControlPanel(final ErsBlockGame game) this.game = game;setLayout(new GridLayout(3, 1, 0, 3);/ 組建提示面板tipPanel.setLayout(new BorderLayout();tipPanel.add
8、(new Label("下一個方塊"), BorderLayout.NORTH);tipPanel.add(tipBlock, BorderLayout.CENTER);bTPanel.setLayout(new GridLayout(4, 2, 0, 1);/ 給按鈕增加監(jiān)聽者begainBt.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) begainBt.setEnabled(false);game.playGame(););pauseBt.addAct
9、ionListener(new ActionListener() public void actionPerformed(ActionEvent e) pauseBt.setEnabled(false);game.pause(););goOnBt.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) pauseBt.setEnabled(true);game.goOn(););stopBt.addActionListener(new ActionListener() public vo
10、id actionPerformed(ActionEvent e) game.stopGame(););/ 組建按鈕面板bTPanel.add(begainBt);bTPanel.add(goOnBt);bTPanel.add(pauseBt);bTPanel.add(stopBt);/ 組建分?jǐn)?shù)、等級提示面板txArea.setText("簡易版n俄羅斯方塊" + "n 作者:n晉燁"+ "n QQ:n");txArea.setEnabled(false);tFPanel.setLayout(new GridLayout(1, 1)
11、;tFPanel.add(txArea);/ 將以上三個面板加入controlPaneladd(tipPanel);add(tFPanel);add(bTPanel);addKeyListener(new ControlKeyListener();2、控制部分(1)方塊的移動和變化public class ErsBlockGame extends JFrame private GameCanvas canvas;private ControlPanel controlPanel;private ErsBlock box;private boolean playing = true;Thread
12、 thread;public static void main(String args) new ErsBlockGame("俄羅斯方塊");public ErsBlockGame(String title) super(title);setSize(300, 400);Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();setLocation(scrSize.width - getSize().width) / 2,(scrSize.height - getSize().height) / 2);
13、canvas = new GameCanvas(20, 10);controlPanel = new ControlPanel(this);this.setResizable(false);this.setLayout(new BorderLayout(2, 0);this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0););/ canvas.addKeyListener(new ControlKeyListener();this.add(canvas,
14、BorderLayout.CENTER);this.add(controlPanel, BorderLayout.EAST);setVisible(true);canvas.setFocusable(true);canvas.fanning();/ Thread thread = new Thread(new Game();/ thread.start();private class Game implements Runnable Overridepublic void run() int col = (int) (Math.random() * 7), style = ErsBlock.S
15、TYLES(int) (Math.random() * 7)(int) (Math.random() * 4);while (playing) if (box != null && box.isAlive() try Thread.currentThread().sleep(100); catch (InterruptedException e) e.printStackTrace();continue;checkFullLine();if (gameIsOver() playing = false;JOptionPane.showMessageDialog(null, &qu
16、ot;你輸了,孩子!");System.exit(0);box = new ErsBlock(-1, col, style, canvas);box.start();col = (int) (Math.random() * 7);style = ErsBlock.STYLES(int) (Math.random() * 7)(int) (Math.random() * 4);controlPanel.setTipStyle(style);/ System.out.println(style);public void checkFullLine() for (int i = 0; i
17、< canvas.getRows(); i+) int row = -1;boolean fullLineColor = true;for (int j = 0; j < canvas.getCols(); j+) if (!canvas.getBlock(i, j).getIsColor() fullLineColor = false;break;if (fullLineColor) row = i-;canvas.removeLine(row);public void playGame() play();controlPanel.requestFocus(true);publi
18、c void stopGame() box.stop();thread.stop();System.exit(0);public void play() thread = new Thread(new Game();thread.start();public void pause() box.setPause(true);public void goOn() controlPanel.requestFocus(true);box.setPause(false);public ErsBlock getErsBlock() return box;public boolean gameIsOver() for (int i = 0; i < canvas.getCols(); i+) Block box = canvas.getBlock(0, i);if (box.getIsColor()return true;return false;3、使用對象說明JPanel:容器,JMenu:菜單,Thread:線程,JButton:按鈕。BorderLayout:邊界布局,JTextField:文本框,JLabel:標(biāo)簽六、測試編譯和運(yùn)行軟件開始游戲 暫停游戲 結(jié)束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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024個人珠寶買賣合同范本
- 2024年度版權(quán)質(zhì)押合同:含版權(quán)內(nèi)容、質(zhì)押價值、質(zhì)權(quán)實(shí)現(xiàn)
- 旅游推廣合作合同實(shí)例
- 攝影棚居間服務(wù)合同樣本
- 房屋銷售合同模板手冊
- 樂團(tuán)合作合同范本大全
- 電子郵件服務(wù)租用協(xié)議
- 2024家教公司與兼職教師合作合同范本
- 企業(yè)房屋租賃合同范本
- 2024保密合同樣書范文
- 期末測試卷(試題)-2024-2025學(xué)年人教PEP版(2024)英語三年級上冊
- 2024至2030年中國手機(jī)配件產(chǎn)業(yè)需求預(yù)測及發(fā)展趨勢前瞻報(bào)告
- 2024年小學(xué)閩教版全冊英語詞匯表
- 課題開題匯報(bào)(省級課題)
- 清真食品安全管理制度
- 學(xué)校心理健康教育合作協(xié)議書
- 2024江蘇省沿海開發(fā)集團(tuán)限公司招聘23人(高頻重點(diǎn)提升專題訓(xùn)練)共500題附帶答案詳解
- 2024年初級社會體育指導(dǎo)員(游泳)技能鑒定考試題庫(含答案)
- 湖北省危險廢物監(jiān)管物聯(lián)網(wǎng)系統(tǒng)管理計(jì)劃填報(bào)說明
- Unit6ADayintheLife教學(xué)設(shè)計(jì)2024-2025學(xué)年人教版(2024)英語七年級上冊
- 2024年個人勞務(wù)承包合同書
評論
0/150
提交評論