基于Java的俄罗斯方块的设计和实现-毕业论文(5)

2019-08-30 17:14

开始接收到翻转信息方块是否落下是不能翻转否翻转后是否有足够空间否不能翻转是翻转后是否越界否直接翻转是翻转越界纠正结束4-10 方块翻转处理流程图

玩家操作键盘实现方块的移动、旋转,代码引进ControlKeyListener类继承KeyAdapter类进行键盘监听功能的实现。KeyAdapter类继承自Object类,实现KeyListener接口,用来接收键盘事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。扩展此类即可创建 KeyEvent 侦听器并重写所需事件的方法,即是 ControlKeyListener类。使用ControlKeyListener可创建侦听器对象,然后使用组件的 addKeyListener 方法向该组件注册此侦听器对象。当按下、释放或键入某个键时,将调用该侦听器对象中的相应方法,并将 KeyEvent 传递给相应的方法。实现代码如下:

17

private class ControlKeyListener extends KeyAdapter { public void keyPressed(KeyEvent ke) { if (!game.isPlaying()) return;

BlockOperation blockope = game.getCurBlock(); switch (ke.getKeyCode()) { case KeyEvent.VK_DOWN: blockope.moveDown(); break; case KeyEvent.VK_LEFT: blockope.moveLeft(); break; case KeyEvent.VK_RIGHT: blockope.moveRight(); break; case KeyEvent.VK_UP: blockope.turnNext(); break; default: break;}}}

4.3 控制面板模块 4.3.1 菜单栏模块设计

菜单栏中有“游戏”、“背景”、“控制”、“帮助”四个菜单选项。“游戏”选项又分“新游戏”、“提高等级”、“降低等级”、“退出”四个选项。“背景”选项又分“前景色”、“背景色”,下分若干种颜色。“控制”选项分“开始”、“暂停”、“重新开始”、“停止”。“帮助”选项分“游戏帮助”、“关于”。相关截图如图4-11、图4-12、图4-13、图4-14所示。

18

4-11 菜单栏“游戏”选项 4-12 菜单栏“背景”选项

4-13 菜单栏“控制”选项 4-14 菜单栏“帮助”选项

1>“新游戏”的按钮功能为实现游戏画布的重新绘制,类似reset的功能。该按钮的监听实现代码如下: //

19

\新游戏\按钮添加监听

miNewGame.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae) //停止游戏 stopGame(); //让游戏“复位”到初始状态 reset(); //设置游戏难度 setLevel(initlevel); } });

{

2>“提高等级”、“降低等级”按钮用来手动调节游戏的等级,从而改变方块下落的速度。 “退出”按钮控制游戏随时退出,终止游戏。

3>“背景”按钮中的“前景色”、“背景色”又有“黑色”、“白色”、“红色”、“蓝色”等选项,根据选项可更改主界面和预显窗口的背景色以及方块的颜色。玩家可根据个人喜好,更改游戏窗口颜色,方便,快捷。

4>“控制”选项的“开始”子选项控制游戏的开始,点击按钮,方块开始下落。 5>“帮助”按钮中“游戏帮助”选项,点击可弹出对话框显示游戏帮助信息,点击6>“关于”按钮显示与游戏软件本身相关信息,具体信息如图所示: 4.3.2 控制面板按钮设计

本游戏控制面板中包含得分统计、等级统计、最高分记录统计等字段,

其中的TextField控件均由游戏本身统计给出,玩家不能私自编辑。本游戏的游戏规则为每消一行得10分,每增加100分上升一个等级,初始得分为0,初始等级为1,“最高分记录”记录游戏的目前最高分记录。

以下给出得分、等级更新字段的代码:

//当一行被游戏者叠满后,将此行清除,并为游戏者加分 // row int, 要清除的行,是由BlockPaintesGame类计算的 // synchronized设置同步 public synchronized void removeLine(int row) { // 绘制方块 for (int i = row; i > 0; i--) { for (int j = 0; j < cols; j++) boxes[i][j] = (BlockPaint) boxes[i - 1][j].clone(); }

// 每次消行加10分 score += ControlMainGame.scoreplus; // 等级更新 scoreForLevelUpdate += ControlMainGame.scoreplus; // 重绘画布 repaint();}

控制面板中按钮的功能在4.3.1中已给出代码,在此不再赘述。

20

5 系统的测试运行

5.1 测试的意义及注意事项

软件测试是软件设计过程中极其重要的一个环节,是保证软件的质量的重要保障。测试的方法的好坏会直接影响到软件的好坏,进行软件测试可以找出其中的错误、不足并加以改进,从而得到一个高效、可靠的系统。

软件应从多角度进行测试和分析,这样才能找出其中错误的地方。测试的时间最好找一些与设计系统无关的人员,或者分析人员。因为在开发软件的时候,开发人员已经形成了自己的思维定势,在测试的时候始终受到这种思想的束缚,很难找出其中的错误而与设计无关的人员和那些分析人员很容易找出错误所在。

在程序调试过程中一定要耐心仔细,一个细微的错误将会导致整个功能不能实现导致浪费很多的时间去修改。应在以下几方面加以注意:

1>语法错误

语法错误是经常碰到的错误。例如,命令拼写错误或传递给函数的参数不正确都将产生错误。语法错误可能导致不能继续编写代码。 2>逻辑错误

逻辑错误通常可能是潜在和难以检测的。当有因键入错误或程序逻辑流程引起的逻辑错误,可能会成功运行,但产生的结果却是错的。例如,当本应使用小于符号比较数值,但却使用了大于符号时,那么将返回不正确的结果。

3>运行时错误

运行时错误是在执行过程中指令试图执行不可能的动作而导致的,必须纠正运行时产生的错误,这样才能保证软件运行的可靠性。

本游戏在开发过程中采用了多种有效措施进行测试以保证软件质量,对本游戏进行了边界处旋转、方块翻转越界等方面的测试,极大的保证了软件质量和出错几率。但是系统中可能还存在着一些其他的错误和缺陷,因此,游戏必须要经过反复的运行测试,尽最大量将bug减到最少。 5.2 游戏代码、算法的测试

1>写get()方法时需要有返回值,但是程序中没有写return语句,使程序在编译时出现错误。解决方法是,在方法中加入return语句,返回相应的内容即可。

2>使用随机函数产生方块时没有给各个方块传入参数,编译不能通过。解决方法是,根据各个方块的构造传入相应的参数。

21


基于Java的俄罗斯方块的设计和实现-毕业论文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:城市道路工程试卷

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: