![俄羅斯方塊實(shí)驗(yàn)報告_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/9/fcf7d71e-912f-442e-8c37-fa4066bf88df/fcf7d71e-912f-442e-8c37-fa4066bf88df1.gif)
![俄羅斯方塊實(shí)驗(yàn)報告_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/9/fcf7d71e-912f-442e-8c37-fa4066bf88df/fcf7d71e-912f-442e-8c37-fa4066bf88df2.gif)
![俄羅斯方塊實(shí)驗(yàn)報告_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/9/fcf7d71e-912f-442e-8c37-fa4066bf88df/fcf7d71e-912f-442e-8c37-fa4066bf88df3.gif)
![俄羅斯方塊實(shí)驗(yàn)報告_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/9/fcf7d71e-912f-442e-8c37-fa4066bf88df/fcf7d71e-912f-442e-8c37-fa4066bf88df4.gif)
![俄羅斯方塊實(shí)驗(yàn)報告_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/9/fcf7d71e-912f-442e-8c37-fa4066bf88df/fcf7d71e-912f-442e-8c37-fa4066bf88df5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 目錄一需求分析2二系統(tǒng)運(yùn)行環(huán)境2三系統(tǒng)功能需求描述:2四總體設(shè)計2五系統(tǒng)結(jié)構(gòu)圖3六程序模塊設(shè)計3七、實(shí)驗(yàn)總結(jié)體會15一需求分析 在個人電腦日益普及的今天,一些有趣的桌面游戲已經(jīng)成為人們在使用計算機(jī)進(jìn)行工作或?qū)W習(xí)之余休閑娛樂的首選,而俄羅斯方塊游戲是人們最熟悉的小游戲之一,它以其趣味性強(qiáng),易上手等諸多特點(diǎn)得到了大眾的認(rèn)可,因此開發(fā)此游戲軟件可滿足人們的一些娛樂的需求。此俄羅斯方塊游戲可以為用戶提供一個可在普通個人電腦上運(yùn)行的,界面美觀的,易于控制的俄羅斯方塊游戲。二系統(tǒng)運(yùn)行環(huán)境 操作系統(tǒng)選擇Windows XP 版本,運(yùn)行環(huán)境選擇MyEclipse三系統(tǒng)功能需求描述俄羅斯方塊游戲是一款適合大眾
2、的游戲軟件,它適合不同年齡的人玩。本軟件要實(shí)現(xiàn)的功能如下:1.游戲區(qū):玩家可以在游戲區(qū)中堆積方塊,并能夠在游戲過程中隨時了解得分情況。2.游戲控制:玩家可以通過游戲控制功能來選擇開始新的一局游戲,暫停或退出游戲。3.級別設(shè)置:玩家可以根據(jù)自己的需要自行設(shè)定游戲的開始級別,級別越高,游戲速度越快,難度越大。四總體設(shè)計游戲中玩家可以做的操作有: 1.以90度為單位旋轉(zhuǎn)方每一格塊。2.以格子為單位左右移動方塊,讓方塊加速落下。3.方塊移到區(qū)域最下方或是著地到其他方塊上無法移動時,就會固定在該處,而新的隨機(jī)圖形會出現(xiàn)在區(qū)域上方開始落下。4.當(dāng)區(qū)域中某一列橫向格子全部由方塊填滿,則該列會自動消除并成為玩
3、家的得分。同時刪除的列數(shù)越多,得分指數(shù)上升。5.當(dāng)固定的方塊堆到區(qū)域最上方,則游戲結(jié)束。五系統(tǒng)結(jié)構(gòu)圖俄羅斯方塊游戲游戲區(qū)游戲控制顯示玩家操作顯示操作結(jié)果開始暫停/繼續(xù)提高等級退出降低等級六程序模塊設(shè)計6.1用戶界面設(shè)計游戲區(qū)模塊創(chuàng)建游戲區(qū)處理玩家游戲操作顯示游戲結(jié)果游戲控制模塊開始游戲暫停游戲初始級別設(shè)置退出游戲6.2 程序代碼設(shè)計package russia;import java.awt.*;import java.awt.event.*;/俄羅斯方塊類class ERS_Block extends Frame/* * */private static final long serialV
4、ersionUID = 1L;public static boolean isPlay=false;public static int level=1,score=0;public static TextField scoreField,levelField;public static MyTimer timer;GameCanvas gameScr;public static void main(String argus)ERS_Block ers = new ERS_Block(俄羅斯方塊游戲 V1.0 Author:Vincent);WindowListener win_listener
5、 = new WinListener();ers.addWindowListener(win_listener);/俄羅斯方塊類的構(gòu)造方法SuppressWarnings(deprecation)ERS_Block(String title)super(title);setSize(600,480);setLayout(new GridLayout(1,2);gameScr = new GameCanvas();gameScr.addKeyListener(gameScr);timer = new MyTimer(gameScr);timer.setDaemon(true);timer.sta
6、rt();timer.suspend();add(gameScr);Panel rightScr = new Panel();rightScr.setLayout(new GridLayout(2,1,0,30);rightScr.setSize(120,500);add(rightScr);/右邊信息窗體的布局MyPanel infoScr = new MyPanel();infoScr.setLayout(new GridLayout(4,1,0,5);infoScr.setSize(120,300);rightScr.add(infoScr);/定義標(biāo)簽和初始值Label scorep
7、= new Label(分?jǐn)?shù):,Label.LEFT);Label levelp = new Label(級數(shù):,Label.LEFT);scoreField = new TextField(8);levelField = new TextField(8);scoreField.setEditable(false);levelField.setEditable(false);infoScr.add(scorep);infoScr.add(scoreField);infoScr.add(levelp);infoScr.add(levelField);scorep.setSize(new Dime
8、nsion(20,60);scoreField.setSize(new Dimension(20,60);levelp.setSize(new Dimension(20,60);levelField.setSize(new Dimension(20,60);scoreField.setText(0);levelField.setText(1);/右邊控制按鈕窗體的布局MyPanel controlScr = new MyPanel();controlScr.setLayout(new GridLayout(5,1,0,5);rightScr.add(controlScr);/定義按鈕playB
9、utton play_b = new Button(開始游戲);play_b.setSize(new Dimension(50,200);play_b.addActionListener(new Command(Command.button_play,gameScr);/定義按鈕Level UPButton level_up_b = new Button(提高級數(shù));level_up_b.setSize(new Dimension(50,200);level_up_b.addActionListener(new Command(Command.button_levelup,gameScr);/
10、定義按鈕Level DownButton level_down_b =new Button(降低級數(shù));level_down_b.setSize(new Dimension(50,200);level_down_b.addActionListener(new Command(Command.button_leveldown,gameScr);/定義按鈕Level PauseButton pause_b =new Button(游戲暫停);pause_b.setSize(new Dimension(50,200);pause_b.addActionListener(new Command(Com
11、mand.button_pause,gameScr);/定義按鈕QuitButton quit_b = new Button(退出游戲);quit_b.setSize(new Dimension(50,200);quit_b.addActionListener(new Command(Command.button_quit,gameScr);controlScr.add(play_b);controlScr.add(level_up_b);controlScr.add(level_down_b);controlScr.add(pause_b);controlScr.add(quit_b);se
12、tVisible(true);gameScr.requestFocus();/重寫MyPanel類,使Panel的四周留空間class MyPanel extends Panel/* * */private static final long serialVersionUID = 1L;public Insets getInsets()return new Insets(30,50,30,50);/游戲畫布類class GameCanvas extends Canvas implements KeyListener/* * */private static final long serialV
13、ersionUID = 1L;final int unitSize = 30; /小方塊邊長int rowNum; /正方格的行數(shù)int columnNum; /正方格的列數(shù)int maxAllowRowNum; /允許有多少行未削int blockInitRow; /新出現(xiàn)塊的起始行坐標(biāo)int blockInitCol; /新出現(xiàn)塊的起始列坐標(biāo)int scrArr; /屏幕數(shù)組Block b; /對方快的引用/畫布類的構(gòu)造方法GameCanvas()rowNum = 15;columnNum = 10;maxAllowRowNum = rowNum - 2;b = new Block(thi
14、s);blockInitRow = rowNum - 1;blockInitCol = columnNum/2 - 2;scrArr = new int 3232;/初始化屏幕,并將屏幕數(shù)組清零的方法void initScr()for(int i=0;irowNum;i+)for (int j=0; jcolumnNum;j+) scrArrij=0; b.reset();repaint();/重新刷新畫布方法public void paint(Graphics g)for(int i = 0; i rowNum; i+)for(int j = 0; j columnNum; j+)drawU
15、nit(i,j,scrArrij);/畫方塊的方法public void drawUnit(int row,int col,int type)scrArrrowcol = type;Graphics g = getGraphics();switch(type) /表示畫方快的方法case 0: g.setColor(Color.black);break; /以背景為顏色畫case 1: g.setColor(Color.blue);break; /畫正在下落的方塊case 2: g.setColor(Color.magenta);break; /畫已經(jīng)落下的方法g.fill3DRect(col
16、*unitSize,getSize().height-(row+1)*unitSize,unitSize,unitSize,true);g.dispose();public Block getBlock()return b; /返回block實(shí)例的引用/返回屏幕數(shù)組中(row,col)位置的屬性值public int getScrArrXY(int row,int col)if (row = rowNum | col = columnNum)return(-1);elsereturn(scrArrrowcol);/返回新塊的初始行坐標(biāo)方法public int getInitRow()retur
17、n(blockInitRow); /返回新塊的初始行坐標(biāo)/返回新塊的初始列坐標(biāo)方法public int getInitCol()return(blockInitCol); /返回新塊的初始列坐標(biāo)/滿行刪除方法void deleteFullLine()int full_line_num = 0;int k = 0;for (int i=0;irowNum;i+)boolean isfull = true;L1:for(int j=0;jcolumnNum;j+)if(scrArrij = 0)k+;isfull = false;break L1;if(isfull) full_line_num+
18、;if(k!=0 & k-1!=i & !isfull)for(int j = 0; j columnNum; j+)if (scrArrij = 0)drawUnit(k-1,j,0);elsedrawUnit(k-1,j,2);scrArrk-1j = scrArrij;for(int i = k-1 ;i rowNum; i+)for(int j = 0; j columnNum; j+)drawUnit(i,j,0);scrArrij=0;ERS_Block.score += full_line_num;ERS_Block.scoreField.setText(+ERS_Block.s
19、core);/判斷游戲是否結(jié)束方法boolean isGameEnd()for (int col = 0 ; col columnNum; col +)if(scrArrmaxAllowRowNumcol !=0)return true;return false;public void keyTyped(KeyEvent e)public void keyReleased(KeyEvent e)/處理鍵盤輸入的方法public void keyPressed(KeyEvent e)if(!ERS_Block.isPlay)return;switch(e.getKeyCode()case Key
20、Event.VK_DOWN:b.fallDown();break;case KeyEvent.VK_LEFT:b.leftMove();break;case KeyEvent.VK_RIGHT:b.rightMove();break;case KeyEvent.VK_SPACE:b.leftTurn();break;/處理控制類class Command implements ActionListenerstatic final int button_play = 1; /給按鈕分配編號static final int button_levelup = 2;static final int b
21、utton_leveldown = 3;static final int button_quit = 4;static final int button_pause = 5;static boolean pause_resume = true;int curButton; /當(dāng)前按鈕GameCanvas scr;/控制按鈕類的構(gòu)造方法Command(int button,GameCanvas scr)curButton = button;this.scr=scr;/按鈕執(zhí)行方法SuppressWarnings(deprecation)public void actionPerformed (A
22、ctionEvent e)switch(curButton)case button_play:if(!ERS_Block.isPlay)scr.initScr();ERS_Block.isPlay = true;ERS_Block.score = 0;ERS_Block.scoreField.setText(0);ERS_Block.timer.resume();scr.requestFocus();break;case button_levelup:if(ERS_Block.level 1)ERS_Block.level-;ERS_Block.levelField.setText(+ERS_
23、Block.level);ERS_Block.score = 0;ERS_Block.scoreField.setText(+ERS_Block.score);scr.requestFocus();break;case button_pause:if(pause_resume)ERS_Block.timer.suspend();pause_resume = false;elseERS_Block.timer.resume();pause_resume = true;scr.requestFocus();break;case button_quit:System.exit(0);/方塊類clas
24、s Block static int pattern = 0x0f00,0x4444,0x0f00,0x4444,/用十六進(jìn)至表示,本行表示長條四種狀態(tài)0x04e0,0x0464,0x00e4,0x04c4,0x4620,0x6c00,0x4620,0x6c00,0x2640,0xc600,0x2640,0xc600,0x6220,0x1700,0x2230,0x0740,0x6440,0x0e20,0x44c0,0x8e00,0x0660,0x0660,0x0660,0x0660;int blockType; /塊的模式號(0-6)int turnState; /塊的翻轉(zhuǎn)狀態(tài)(0-3)int
25、 blockState; /快的下落狀態(tài)int row,col; /塊在畫布上的坐標(biāo)GameCanvas scr;/塊類的構(gòu)造方法Block(GameCanvas scr)this.scr = scr;blockType = (int)(Math.random() * 1000)%7;turnState = (int)(Math.random() * 1000)%4;blockState = 1;row = scr.getInitRow();col = scr.getInitCol();/重新初始化塊,并顯示新塊public void reset()blockType = (int)(Math
26、.random() * 1000)%7;turnState = (int)(Math.random() * 1000)%4;blockState = 1;row = scr.getInitRow();col = scr.getInitCol();dispBlock(1);/實(shí)現(xiàn)“塊”翻轉(zhuǎn)的方法public void leftTurn()if(assertValid(blockType,(turnState + 1)%4,row,col)dispBlock(0);turnState = (turnState + 1)%4;dispBlock(1);/實(shí)現(xiàn)“塊”的左移的方法public void leftMove()if(assertValid(blockType,turnState,row,col-1)dispBlock(0);col-;dispBlock(1);/實(shí)現(xiàn)塊的右移public void rightMove()if(assertValid(blockType,turnState,row,col+1)dispBlock(0);col+;dispBlock(1);/實(shí)現(xiàn)塊落下的操作的方法public boolean fallDown()if(blockState = 2)return(false);if(assertValid(blockType,turnS
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教部編版歷史七年級下冊第10課 《蒙古族的興起與元朝的建立》 聽課評課記錄7
- 北師大版歷史八年級上冊第10課《新文化運(yùn)動》聽課評課記錄
- 豬場購銷合同(2篇)
- 生產(chǎn)承包合同(2篇)
- 仁愛版八年級地理上冊3.2《土地資源》聽課評課記錄
- 八年級道德與法治下冊第四單元崇尚法治精神第七課尊重自由平等第1框自由平等的真諦聽課評課記錄(新人教版)
- 蘇科版數(shù)學(xué)七年級下冊10.2.1《二元一次方程組》聽評課記錄
- 冀教版數(shù)學(xué)七年級下冊《多項式乘多項式》聽評課記錄2
- 湘教版數(shù)學(xué)七年級上冊2.3《代數(shù)式的值》聽評課記錄
- 五年級數(shù)學(xué)下冊聽評課記錄《3.1 分?jǐn)?shù)乘法(一)(4)》北師大版
- 運(yùn)動技能學(xué)習(xí)與控制課件第一章運(yùn)動技能學(xué)習(xí)與控制概述
- 固體廢棄物檢查記錄
- 工程設(shè)計費(fèi)取費(fèi)標(biāo)準(zhǔn)
- GB/T 5465.1-2009電氣設(shè)備用圖形符號第1部分:概述與分類
- 2023年遼寧鐵道職業(yè)技術(shù)學(xué)院高職單招(數(shù)學(xué))試題庫含答案解析
- CAPP教學(xué)講解課件
- 自然環(huán)境的服務(wù)功能課件 高中地理人教版(2019)選擇性必修3
- 小耳畸形課件
- 新人教版初中初三中考數(shù)學(xué)總復(fù)習(xí)課件
- 機(jī)械制造有限公司組織架構(gòu)圖模板
- 8.3 摩擦力 同步練習(xí)-2021-2022學(xué)年人教版物理八年級下冊(Word版含答案)
評論
0/150
提交評論