軟件工程課程設(shè)計(jì)報(bào)告俄羅斯方塊_第1頁(yè)
軟件工程課程設(shè)計(jì)報(bào)告俄羅斯方塊_第2頁(yè)
軟件工程課程設(shè)計(jì)報(bào)告俄羅斯方塊_第3頁(yè)
軟件工程課程設(shè)計(jì)報(bào)告俄羅斯方塊_第4頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余12頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、頁(yè)眉軟件工程課程設(shè)計(jì)報(bào)告課題:俄羅斯方塊學(xué)院:計(jì)算機(jī)與信息學(xué)院專業(yè):軟件工程姓名 (學(xué)號(hào) ):晉燁( 2011112360 )指導(dǎo)教師:李昭頁(yè)腳一、任務(wù)分析俄羅斯方塊是個(gè)老少皆宜的小游戲,它實(shí)現(xiàn)由四塊正方形的色塊組成,計(jì)算機(jī)隨機(jī)產(chǎn)生不同七種類型的方塊, 根據(jù)計(jì)算機(jī)時(shí)鐘控制它在一定的時(shí)間不停的產(chǎn)生, 用戶根據(jù)鍵盤的四個(gè)方向鍵控制翻轉(zhuǎn)、 向左、 向右和向下操作, 然后程序根據(jù)這七種方塊堆疊成各種不同的模型。二、 可行性研究報(bào)告1、設(shè)計(jì)背景俄羅斯方塊是一款風(fēng)靡全球的電視游戲機(jī)和掌上游戲機(jī)游戲,它曾經(jīng)造成的轟動(dòng)與造成的經(jīng)濟(jì)價(jià)值可以說(shuō)是游戲史上的一件大事。俄羅斯方塊最早還是出現(xiàn)在PC 機(jī)上,而我國(guó)的用戶

2、都是通過(guò)紅白機(jī)了解、喜歡上它的。 隨著計(jì)算機(jī)的發(fā)展而發(fā)展,俄羅斯方塊不斷推陳出新,深愛(ài)廣大玩家喜愛(ài)。這個(gè)游戲有的簡(jiǎn)單,有的復(fù)雜, 但其根本原理是一樣的都是對(duì)運(yùn)動(dòng)的方塊進(jìn)行組合, 來(lái)訓(xùn)練玩家的反應(yīng)能力。因此開(kāi)發(fā)此游戲軟件可滿足人們的一些娛樂(lè)的需求。此俄羅斯方塊游戲可以為用戶提供一個(gè)可在普通個(gè)人電腦上運(yùn)行的,界面美觀的, 易于控制的俄羅斯方塊游戲。2、設(shè)計(jì)目的通過(guò)本游戲的設(shè)計(jì), 綜合自己在校期間所學(xué)的理論知識(shí), 設(shè)計(jì)開(kāi)發(fā)俄羅斯廣場(chǎng)游戲, 使自己熟應(yīng)用系統(tǒng)的開(kāi)發(fā)過(guò)程, 培養(yǎng)獨(dú)立思考能力, 檢驗(yàn)學(xué)習(xí)效果和動(dòng)手能力, 初步掌握軟件工程的系統(tǒng)理論,進(jìn)一步鞏固和加強(qiáng)自身對(duì) J2SE 基礎(chǔ)知識(shí)的理解,提高自己

3、的編程水平,從而達(dá)到理論與實(shí)踐相結(jié)合的目的。3、設(shè)計(jì)要求本游戲開(kāi)發(fā)的總體任務(wù)是實(shí)現(xiàn)游戲的可操作性, 以及界面的美觀性。 整個(gè)開(kāi)發(fā)過(guò)程遵循軟件工程規(guī)范,采用 JAVA GUI 編程實(shí)現(xiàn)界面以及事件的控制。用戶根據(jù)鍵盤的四個(gè)方向鍵控制翻轉(zhuǎn)、向左、向右、和向下操作,通過(guò)菜單欄中的相應(yīng)菜單選項(xiàng)實(shí)現(xiàn)游戲的開(kāi)始、結(jié)束、變換方向、積分以及等級(jí)的功能。4、設(shè)計(jì)目標(biāo)通過(guò)本游戲的開(kāi)發(fā),主要實(shí)現(xiàn)游戲的可操作性及美觀性,同時(shí)使自己對(duì)JAVA語(yǔ)言的2了解更進(jìn)一層,為將來(lái)的實(shí)際工作打下堅(jiān)實(shí)的基礎(chǔ)。三、需求分析游戲需求28 種狀態(tài)的方塊隨機(jī)產(chǎn)生,自由下落,落下時(shí)可由玩家用上、下、左、右控制鍵控制翻轉(zhuǎn)和移動(dòng),以便玩家所需要的

4、形態(tài)和位置落下。游戲界面需求: 設(shè)計(jì)良好的游戲界面可以讓玩家充分感受到游戲帶來(lái)的娛樂(lè)性,游戲的背景是灰色,方塊為綠色,在一定區(qū)域內(nèi)運(yùn)動(dòng)和變形游戲形狀需求:長(zhǎng)條形、Z 字形、反Z 字形、田字形、7 字形、反7 字形、 T 字型顯示需求: 當(dāng)不同的方塊填滿一行時(shí)可以消行,剩余方塊向下移動(dòng)并統(tǒng)計(jì)分?jǐn)?shù)。當(dāng)達(dá)到一定分?jǐn)?shù)的時(shí)候,會(huì)增加相應(yīng)的分?jǐn)?shù)。四、總體設(shè)計(jì)1、基本設(shè)計(jì)概念( 1)游戲區(qū): 玩家可以在游戲區(qū)中堆積方塊, 并能夠在游戲過(guò)程中隨時(shí)了解得分情況。( 2)游戲控制:玩家可以通過(guò)游戲控制功能來(lái)選擇開(kāi)始新的一局游戲,暫?;蛲顺鲇螒?。顯示玩家操作游戲區(qū)俄羅斯方塊游戲顯示操作結(jié)果開(kāi)始暫停 /繼續(xù)提高等級(jí)游

5、戲控制降低等級(jí)退出3基本設(shè)計(jì)概念圖2、UML 類圖3、處理流程圖4開(kāi)始設(shè)置初始級(jí)別創(chuàng)建游戲區(qū)游戲開(kāi)局游戲結(jié)束游戲區(qū)模塊隨機(jī)選擇方塊類是否到頂部是方塊下落一行否處理玩家操作是否到頂部系統(tǒng)流程圖創(chuàng)建游戲區(qū)處理玩家游戲操作顯示游戲結(jié)果游戲區(qū)模塊5開(kāi)始游戲暫停游戲游戲控制模塊初始級(jí)別設(shè)置退出游戲控制區(qū)模塊五、詳細(xì)設(shè)計(jì)1、關(guān)鍵模塊的功能( 1)界面的初始化public class ControlPanel extends JPanel /實(shí)現(xiàn)一組按鈕private Button begainBt = new Button("開(kāi)始 ");private Button goOnBt =

6、new Button("繼續(xù) ");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 b

7、TPanel = new Panel();private Panel 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(n

8、ew BorderLayout();6tipPanel.add(new Label(" 下一個(gè)方塊 "), BorderLayout.NORTH); tipPanel.add(tipBlock, BorderLayout.CENTER); bTPanel.setLayout(new GridLayout(4, 2, 0, 1);/ 給按鈕增加監(jiān)聽(tīng)者begainBt.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) begainBt.setEnabled(fals

9、e);game.playGame(););pauseBt.addActionListener(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.addActionList

10、ener(new ActionListener() public void actionPerformed(ActionEvent e) game.stopGame(););/ 組建按鈕面板bTPanel.add(begainBt);bTPanel.add(goOnBt);bTPanel.add(pauseBt);bTPanel.add(stopBt);/ 組建分?jǐn)?shù)、等級(jí)提示面板txArea.setText("簡(jiǎn)易版 n俄羅斯方塊 " + "n作者: n晉燁 "+ "nQQ:n123456789");7txArea.setEnable

11、d(false);tFPanel.setLayout(new GridLayout(1, 1);tFPanel.add(txArea);/ 將以上三個(gè)面板加入 controlPanel add(tipPanel);add(tFPanel);add(bTPanel);addKeyListener(new ControlKeyListener();2、控制部分( 1)方塊的移動(dòng)和變化public class ErsBlockGame extends JFrame private GameCanvas canvas;private ControlPanel controlPanel;private

12、ErsBlock box;private boolean playing = true;Thread thread;public static void main(String args) new ErsBlockGame("俄羅斯方塊 ");public ErsBlockGame(String title) super(title);setSize(300, 400);Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();8setLocation(scrSize.width - getSize().

13、width) / 2,(scrSize.height - getSize().height) / 2);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.addKe

14、yListener(new ControlKeyListener(); this.add(canvas, 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()

15、int col = (int) (Math.random() * 7), style = ErsBlock.STYLES(int) (Math.random() * 7)(int) (Math.random() * 4);while (playing) 9if (box != null && box.isAlive() try Thread.currentThread().sleep(100); catch (InterruptedException e) e.printStackTrace();continue;checkFullLine();if (gameIsOver()

16、 playing = false;JOptionPane.showMessageDialog(null, "你輸了,孩子 !");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);10public void che

17、ckFullLine() for (int i = 0; i < 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();contro

18、lPanel.requestFocus(true);public void stopGame() box.stop();thread.stop();System.exit(0);11public 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、使用對(duì)象說(shuō)明12JPanel :容器,JMenu :菜單,Thread :線程,JButton :按鈕。BorderLayout:邊界布局, JTextField :文本框, JLabel :標(biāo)簽六、測(cè)試編譯和運(yùn)行軟件開(kāi)始游戲13暫停游

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論