ImageVerifierCode 换一换
格式:DOCX , 页数:35 ,大小:229.27KB ,
资源ID:6181208      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-6181208.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(俄罗斯方块Word文档格式.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

俄罗斯方块Word文档格式.docx

1、(1)游戏主方法的设计在主方法中首先为ERS_Block 建立一个对象ers且将游戏的界面命名为 “俄罗斯方块游戏”,然后为框架添加了一个窗口事件类WindowListener监听器。(2)游戏信息窗体的设计在本游戏右边信息窗口中设计了分数、级数2个标签和对应的2个文本框以及开始游戏、提高等级、降低等级、游戏暂停和退出游戏五个命令按钮。(3)方块形状与画方块的设计在Block这个类首先定义一个二维数组pattern存储方块的不同形状,并用16进制表示其中一共包含了7种不同的形状的方块图形,分别是一字形,“Z”字形,反“Z”字形,“L”字形,反“L”字形,田字形以及“T”字形,每种形状的方块可以

2、以90度为单位发生翻转形成反向的方块图形。(4)满行删除方法的设计设计成功的俄罗斯方块游戏,必须要达到在方块满行的实现消去满行的功能,在这里利用设计的deleteFullLine()方法来实现此功能,并在此同时实现分数的增加。(5)方块翻转的设计在Block类中定义一个无返回值的方法leftTurn( )实现方块的翻转,在leftTurn( )方法体中使用if条件判断,在条件当中调用判断是否正确的方法assertValid( ),在此方法中包含了四个参数分别为方块类型,方块的翻转状态以及方块的横坐标和纵坐标。(6)方块移动的设计在此功能中实现产生的每个的方块的移动的方法分为左移、右移和下落三种

3、方法,在leftMov( )方法体中使用if条件判断,在条件当中调用判断是否正确的方法assertValid( ),在此方法中包含了四个参数分别为方块类型,方块的翻转状态以及方块的横坐标和纵坐标。(7)实现按钮功能方法的设计按钮功能的方法的实现首先定义一个方法actionPerformed(),在方法体内定义一个switch分支结构选择执行相应的功能,用case进行选择。1.2系统实现的具体分工1.2.1 选题在个人电脑日益普及的今天,一些有趣的桌面游戏已经成为人们在使用计算机进行工作或学习之余休闲娱乐的首选,而俄罗斯方块游戏是人们最熟悉的小游戏之一,它以其趣味性强,易上手等诸多特点得到了大众

4、的认可,因此开发此游戏软件可满足人们的一些娱乐需求。此俄罗斯方块游戏可以为用户提供一个可在普通个人电脑上运行的,界面美观的,易于控制的俄罗斯方块游戏。1.2.2 团队分工表1.1 项目分工一览表角色姓名承担的具体任务组长刘盼杰游戏区操作的实现,显示操作结果以及部分游戏算法的编写组员贾佳佳游戏结束的结果,方块的构造与变形,以及部分算法的编写庞婷婷游戏界面的设计,游戏控制按钮功能实现,文档编写等1.3开发环境编程工具:JDK+ECLIPSE(+MySQL)计算机:PC操作系统:Microsoft Windows 7.0第2章 设计内容2.1实现功能(1)显示游戏的方块形状游戏玩家打开游戏界面,点击

5、开始游戏,便会在游戏整个界面的左面依次显示不同形状的方块。图一:俄罗斯方块类型图(2)显示方块的移动 游戏玩家可根据自己的想法,来改变游戏界面上方出现的方块的位置,使其达到满行消除的结果 图二:俄罗斯方块状态图2.2 概要设计(涉及类的框图)2.3 界面设计(1)游戏整体界面在游戏整体界面窗口中包含了游戏画布界面和功能区两个模块。 图三:俄罗斯方块游戏主界面图(2)游戏说明界面 在游戏开始之前,游戏玩家可以先看一下游戏说明,以防止在玩的过程中按错键造成游戏得分较低的后果,对游戏有更深层次的了解。如图所示: 图四:游戏说明界面图(3)提高等级后的界面提高游戏等级在游戏等级文本框中显示相应的等级数

6、,游戏玩家可以通过提高等级按钮改变游戏的等级,当游戏的等级发生相应的改变时,给玩家的变化是游戏方块下落的速度也会发生相应的变化,等级提高便是游戏方块的下落速度变快,如图所示: 图五:提高等级界面(4)降低等级后的界面降低等级在游戏中显示相应的等级数,原理和提高游戏等级一样,等级降低会使游戏中方块的下落速度变慢。 图六:降级等级界面(5)游戏运行界面在游戏运行过程中,游戏画布的顶端会随机产生不确定的不同形状的方块图片,并且自动下落,在下落的过程中,可以通过玩家的操作改变方块的形状,直到达到玩家所预想的形状,直到方块下落到游戏画布的底端,方块停止下落,如果有方块满行,则会进行自动删除操作,并且分数

7、自动进行增加且在分数显示文本框中显示玩家在游戏过程中获得的游戏分数。 图七:游戏运行界面(6)游戏结束界面 当玩家在游戏过程中使未删除的方块行数达到画布的最顶端时,俄罗斯方块游戏便结束了,玩家点击开始游戏按钮可以重新开始游戏。 图八:游戏结束界面(7)退出游戏界面 当玩家退出游戏时可直接点击退出游戏键,或者不小心点到该键,可进行相应的选择,决定是否退出该游戏界面。 图九:退出游戏界面第3章 系统实现3.1 涉及知识点绘制面板、创建标签、文本框、以及异常处理、事件监听器、以及GameCanvas 、Commad 、Block 、MyTimer 、WinListener类。3.2 系统运行(主要运

8、行界面抓图) 图十:俄罗斯方块主界面3.3 源程序清单(关键代码)package example;import java.awt.*;import java.awt.event.*;import javax.swing.*;/俄罗斯方块类 public class ERS_Block extends JFrame public static boolean isPlay=false; /表明该模板未播放的一种状态 public static int level=1,score=0; public static TextField scoreField,levelField; /定义消息对象 p

9、ublic static MyTimer timer; / 定时器 GameCanvas gameScr; /提供了游戏的借口,能直接得到键盘的物理状态 public static void main(String argus) ERS_Block ers = new ERS_Block(俄罗斯方块游戏 V1.0 Author:Vincent); WindowListener win_listener = new WinListener(); /监听器 ers.addWindowListener(win_listener); JOptionPane.showMessageDialog(ers,

10、游戏说明:n1 :方向键控制俄罗斯方块移动的方向.+ n2 :空格键控制俄罗斯方块的类型装换.n3 :单击开始游戏游戏开始.n4 :游戏暂停暂停游戏,再次单击该键则继续游戏.n5 :提高等级或降低等级可以设置难度等级.n6 :退出游戏则游戏结束. /俄罗斯方块类的构造方法 ERS_Block(String title) super(title); /调用父类得构造方法 setSize(700,490); /设置框架的尺寸 setLayout(new GridLayout(1,2); /设置框架的布局流 gameScr = new GameCanvas(); gameScr.addKeyList

11、ener(gameScr); /为该对象注册键盘点击监听器 timer = new MyTimer(gameScr); timer.setDaemon(true); /虚拟光驱 timer.start(); timer.suspend(); /暂停,延缓 add(gameScr); Panel rightScr = new Panel(); /Panel是最简单的容器类 rightScr.setLayout(new GridLayout(2,1,0,30); rightScr.setSize(120,500); add(rightScr); rightScr.setBackground(Col

12、or.white); /右边信息窗体的布局 MyPanel infoScr = new MyPanel(); infoScr.setLayout(new GridLayout(4,1,0,5); infoScr.setSize(120,300); rightScr.add(infoScr); infoScr.setBackground(Color.white); /定义标签和初始值 Label scorep = new Label(分数:,Label.LEFT); Label levelp = new Label(级数: scoreField = new TextField(); levelF

13、ield = new TextField(); scoreField.setEditable(false); levelField.setEditable(false); infoScr.add(scorep); infoScr.add(scoreField); infoScr.add(levelp); infoScr.add(levelField); scorep.setSize(new Dimension(20,60); /Dimension 类封装单个对象中组件的宽度和高度(精确到整数)。该类与组件的某个属性关联。 scoreField.setSize(new Dimension(20,

14、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); controlScr.setBackground(Color.white); /定义按钮 play Butt

15、on play_b = new Button(开始游戏 play_b.setSize(new Dimension(100,200); play_b.addActionListener(new Command(Command.button_play,gameScr); /定义按钮Level UP Button level_up_b = new Button(提高级数 level_up_b.setSize(new Dimension(50,200); level_up_b.addActionListener(new Command(Command.button_levelup,gameScr);

16、/定义按钮Level Down Button level_down_b =new Button(降低级数 level_down_b.setSize(new Dimension(50,200); level_down_b.addActionListener(new Command(Command.button_leveldown,gameScr); /定义按钮Level Pause Button pause_b =new Button(游戏暂停 pause_b.setSize(new Dimension(50,200); pause_b.addActionListener(new Command

17、(Command.button_pause,gameScr); /定义按钮Quit Button 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

18、(quit_b); setVisible(true); gameScr.requestFocus(); /重写MyPanel类,使Panel的四周留空间 class MyPanel extends JPanel public Insets getInsets() return new Insets(30,50,30,50); /(庞婷婷) /游戏画布类 class GameCanvas extends Canvas implements KeyListener final int unitSize = 30; /小方块边长 int rowNum; /正方格的行数 int columnNum;

19、/正方格的列数 int maxAllowRowNum; /允许有多少行未削 int blockInitRow; /新出现块的起始行坐标 int blockInitCol; /新出现块的起始列坐标 int scrArr; /屏幕数组 Block b; /对方块的引用 /画布类的构造方法 GameCanvas() rowNum = 15; columnNum = 10; maxAllowRowNum = rowNum - 2; b = new Block(this); blockInitRow = rowNum - 1; blockInitCol = columnNum/2 - 2; scrArr

20、 = new int 3232; /初始化屏幕,并将屏幕数组清零的方法 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+) drawUnit(i,j,scrArrij); /画方块的方法 public void dr

21、awUnit(int row,int col,int type) /实现方块的颜色 scrArrrowcol = type; Graphics g = getGraphics(); switch(type) /表示画方块的方法 case 0: g.setColor(Color.lightGray); break; /以背景为颜色画方块 case 1: g.setColor(Color.blue); /画正在下落的方块 case 2: g.setColor(Color.magenta); /画已经落下的方块 g.fill3DRect(col*unitSize,getSize().height-(

22、row+1)*unitSize,unitSize,unitSize,true); g.dispose();/取消画笔 public Block getBlock() return b; /返回block实例的引用 /返回屏幕数组中(row,col)位置的属性值 public int getScrArrXY(int row,int col) if (row = rowNum | col = columnNum) return(-1);/防止越界 else return(scrArrrowcol); /调用函数,实现方块的横坐标和纵坐标 /返回新块的初始行坐标方法 public int getIn

23、itRow() return(blockInitRow); /返回新块的初始行坐标 /返回新块的初始列坐标方法 public int getInitCol() return(blockInitCol); /返回新块的初始列坐标 /满行删除方法 void deleteFullLine() int full_line_num = 0; int k = 0; for (int i=0;i+) boolean isfull = true; L1:for(int j=0;j if(scrArrij = 0) /此列无方块存在 k+; /自加1 isfull = false; break L1; if(i

24、sfull) full_line_num+; /行数累加变量进行自加表示删除了一行方块 if(k!=0 & k-1!=i & !isfull) /方块未满行 j+) if (scrArrij = 0) drawUnit(k-1,j,0); /以背景为颜色画方块 drawUnit(k-1,j,2);/画已经落下的方块 scrArrk-1j = scrArrij; for(int i = k-1 ;i i+) drawUnit(i,j,0); ERS_Block.score +=10*full_line_num; ERS_Block.scoreField.setText(+ERS_Block.sc

25、ore); /显示分数 /判断游戏是否结束方法 boolean isGameOver() for (int col = 0 ; col 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()

26、 case KeyEvent.VK_DOWN:b.fallDown();break; case KeyEvent.VK_LEFT:b.leftMove(); case KeyEvent.VK_RIGHT:b.rightMove(); case KeyEvent.VK_SPACE:b.leftTurn(); /处理控制类 class Command implements ActionListener static final int button_play = 1; /给按钮分配编号 static final int button_levelup = 2; static final int button_leveldown = 3; static final int button_quit = 4; static final int button_pause =5; static boolean pause_resume = true; int curButton; /当前按钮 GameCanvas scr; /控制按钮类的构造方法

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2