俄罗斯方块游戏程序设计(编辑修改稿)内容摘要:
的形态下落,那么它翻转后所处的位置必须要有 4x1个格子的空间才能够翻转;对于田字形的方块,只有能够继续下坠,就一定能够翻转,所 以田子型的方块只要没有落下,就一直能够翻转;而其它五种形态的方块,又有一个共同点,就是它们都有两种翻转状态横向占三个格子的空间,竖直方向占两个空间,另外两种翻转状态横向占两个格子的空间,竖直方向占三个格子空间,如果他们是以横向占三个格子的状态下落,那么只要能下落,就一定能够翻转,如果是以横向两个格子的状态下落,那么在翻转后,周围必须要有 3x2个格子的空间。 所以,方块翻转的判定,要分三种情况。 第一种情况是方块落下去后不能翻转;第二种情况是对竖直状态出现的长条形的方块进行翻转判定;第三种情况是对除长条形和田 字形之外的其它五种以横向占两个格子的状态出现的方块进行翻转判定。 何种情况下方块能够翻转的问题解决了,接下来,我们就应该解决方块翻转后所处的位置的问题了,因为只有事先知道方块翻转后所处的位置,才能够对那个位置的空间范围进行判定,判定它是否能够容纳方块。 可以确定的是,无论方块怎么翻转,都处在方块数组中,也就是说方块必定是在游戏地图中某一 4x4 个格子的空间范围内。 方块数组在游戏地图中的坐标是确定的,不确定的是方块翻转后到底处在方块数组的哪个位置,为了解决这个问题,我们可以限定方块在方块数组中的存储大连 大学本科毕业设计 俄罗斯方块游戏程序设计 第 页 16 原则 是靠左、靠上,这样,无论翻转怎么翻转,方块数组中第一行和第一列都是有方块的,这样也就确定了方块在方块数组中的位置,也就可以得知方块翻转后在游戏地图中的位置了。 假定方块数组的横纵坐标是 x 和 y,那么,这个位置就是,长条形的方块翻转后所处的那一行是游戏地图的第 y行,所占的列是第 x到 x+3 列,长条形和田字形以外的五种方块翻转后的所占的行数是游戏地图的第 y和第 y+1 行,所占的列是第 x到 x+2 列。 所以,如果以上空间有空格子,方块就能够翻转。 据此,我们可以列出方块翻转的条件判定表,如图: 2. 翻转越界纠正 由上述判定表可以看出,只要方块翻转后所处的空间足够,方块就能够翻转,但是,如果方块翻转后所处的空间不足够,而在它的另一边却有足够的空间。 比如,一个方块在它左边正好差一个格子的空间才能够翻转,但是它的右边恰好有一个格子的空间,这种情况,如果方块不能够翻转,就不方便用户操作,如果能够翻转,就会发生越界,将已经存在的方块挤占掉。 要想实现翻转又不发生越界,那么,就应该在方块翻转后把它往右边移动一个格子,然后再绘制方块,这样,方块就不会挤占掉其它已经固定住的方块了。 同样,方块在边界处时,翻转后不仅 可能翻出地图外,还可能发生数组越界,当然,只需要将地图数组定义得大一些,就能够避免数组越界错误,对于 1 2 3 4 5 6 7 8 所 有 条 件 落下 T F F F F F F F 田字形方块 T 长条形方块 1x4 形态 T T 4x1 形态 T 其它五种 方块 2x3 形态 T T 3x2 形态 T 第 y行, x、 x+3 列空 T F 第 y、 y+1 行 x、 x+2 列空 T F 所有 动作 翻转 √ √ √ √ √ 不能翻转 √ √ √ 大连 大学本科毕业设计 俄罗斯方块游戏程序设计 第 页 17 方块越界,如果在它的另一边有足够空间,那么,就应该把方块往另一个方向移动适当的单位,纠正方块越界错误。 结合上述判定表,可以列出方块翻转 越界纠正判定表,如表 : 表 方块翻转 越界纠正判定表 方块翻转处理的流程图如图 所示: 所 有 条 件 落下 T F F F F F F F F F F 田字形方块 T 长条形方块 1x4 形态 T T T T 4x1 形态 T 其它五种 方块 2x3 形态 T T T T 3x2 形态 第 y行, x、 x+3 列空 T F F F 第 y、 y+1 行 x、 x+2 列空 T F F F 另一边有足够空间 T F T F 所有 动作 翻转 √ √ √ √ √ 不能翻转 √ √ √ √ 翻转越界纠正 √ √ 大连 大学本科毕业设计 俄罗斯方块游戏程序设计 第 页 18 图 方块翻转处理流程图 满行消除 JAVA 图形类中提供了一个方法, copyArea(int x, int y, int width, int height, int dx, int dy),这个方法的作用是将组建的某一区域复制到由 dx和 dy 指定的水平距离和垂直距离所在的区域。 利用这个方法,可以消除满行。 那么,当方块落下去后,如何判断有行需要消除。 如概要设计中所述,游戏地图中有方块的区域可以用 1表示,当方块落下去后 ,判断某一行是否全部为 1,如果全为 1,即表示这一行已满,需要消除,这个时候,就可以利用 copyArea 这个方法将这一行消去了。 消去一行后,要继续向下检测,如果下一行是满行,消除,否则再往下检测,一直将落下的方块所占的行数全部检测完为止。 假定,以竖直状态落下一个长条形的方块,很显然,方块一共占据了四行。 接收到翻转信息 方块是否落下 不能翻转 否 是 翻转后是否有足够空间 不能翻转 否 是 翻转后是否越界 否 直接翻转 翻转越界纠正 是 结束 结束 大连 大学本科毕业设计 俄罗斯方块游戏程序设计 第 页 19 这时候,应该从长条形的方块占据的第一行开始检测,不管期间是否有消行,都必须将长条形的方块所占据的四行全部检测完为止。 并且记录下消去的行数,方块消行完成后,增加相应积分。 但是,这里面又会遇到一个问题,因为并 不是所有方块所占的行数都一样,方块落下后到底该检测多少行呢。 考虑到方块落下后最多占据四行,以及计算机运算的高速性,可以设定每一次方块落下后都往下检测四行。 方块消行的流程图: 游戏控制 处理图形触发的 shapeMovedDown (图形下落 ) 事件 将会重新显示 public void shapeMovedDown(Shape s) { // TODO Autogenerated method stub if (playing amp。 amp。 ground != null amp。 amp。 shape != null) (ground, shape)。 方块落下 是否有消行 否 检测第一行 检测第二行 消去该行 是 是否有消行 消去该行 检测第三行 是否有消行 检测第四行 消去该行 否 是 消去该行 是否有消行 否 是 统计所消行数,增加相应积分 结束 开始 大连 大学本科毕业设计 俄罗斯方块游戏程序设计 第 页 20 开始一个新游戏 public void newGame() { playing = true。 ()。 (this)。 =。 shape = (this)。 if (playing) (ground, shape)。 if (gameInfoLabel != null) (())。 for (GameListener l : listeners) ()。 } 停止当前游戏 public void stopGame() { if (shape == null) return。 playing = false。 for (GameListener l : listeners) ()。 } 暂停游戏 public void pauseGame() { if (shape == null) return。 大连 大学本科毕业设计 俄罗斯方块游戏程序设计 第 页 21 (true)。 for (GameListener l : listeners) ()。 } 继续游戏 public void continueGame() { (false)。 for (GameListener l : listeners) ()。 } 大连 大学本科毕业设计 俄罗斯方块游戏程序设计 第 页 22 游戏显示 游戏显示界面 开始暂停控制菜单 大连 大学本科毕业设计 俄罗斯方块游戏程序设计 第 页 23 调整背景颜色障碍物颜色菜单 6 系统测试 测试的意义及注意事项 软件测试是软件工程中及其重要的一个环节,目的是保证软件的质量。 测试的好坏将直接影响软件的好坏,进行测试可以找出其中的错误及不足加以改进,从而得到一个高效、 可靠的系统。 进行软件测试主要作用有以下几点: 1.软件测试是为了发现程序中的错误而执行程序的过程。 2.好的软件测试方案是极可能发现尚未发生错误的方法。 3.程序的测试是发现了至今尚未发现的错误。 软件应从多角度进行测试和分析,这样才能找出其中错误的地方。 测试的时间最好找一些与设计系统无关的人员,或者分析人员。 因为在开发软件的时候,开发人员已经形成了自己的思维定势,在测试的时候始终受到这种思想的束缚,很难找出其中的错误而与设计无关的人员和那些分析人员很容易找出错误所在。 在程序调试过 程中一定要耐心仔细,一个细微的错误将会导致整个功能不能实现会浪费很多的时间来修改。 游戏界面菜单选项的功能测试 (1) “控制”菜单测试 ①点击“游戏” �“开始” 输出:游戏开始 结果:正常 大连 大学本科毕业设计 俄罗斯方块游戏程序设计 第 页 24 ②点击“游戏” �“结束” 输出:弹出游戏结束提示框 结果:正常 (3) “变换”菜单测试 ①点击“变换” �“改变方块” 输出:在游戏面板中显示随机产生的某种方块 结果:正常 按键事件的功能测试 (1) 方块移动测试 游戏过程中,点击“左、右、下”方向键。俄罗斯方块游戏程序设计(编辑修改稿)
相关推荐
18 游戏界面显示 18 开始和结束控制菜单 18 分数和等级查看菜单 19 变换方块菜单 19 帮助菜单 20 5.系统测试 20 游戏界面菜单选项的功能测试 20 按键事件的功能测试 21 方块堆砌与消行测试 21 测试结果分析 21 结 论 22 致 谢 23 参 考 文 献 23 仰恩大学毕业设计(论文) 1 引 言 游戏是人们活动中一项非常重要的内容
空气热量,从而使库内空气温度 下降至贮藏保鲜所要求的温度条件,其特点是一次性投资少,运行费用较高,冷藏温度容易调节,可以贮藏苹果。 新鲜苹果采摘后,仍进行着旺盛的呼吸作用和蒸发作用,由于呼吸要消耗采摘后的营养物质,所以延长贮藏期的关键是降低呼吸速率。 贮藏环境中温度的变化对苹果采摘后生理有显著影响,在一定程度上减少蒸发、抑制微生物生长,这样在低温条件下控制苹果成熟和衰老,达到原有风味品质。 方案
的插图必须精心制作,线条要匀称,图面要整洁美观。 每幅插图应有图序和图题,图序和图题应放在图位下方居中处。 图应在描图纸或在洁白纸上用墨线绘成,也可以用计算机绘图。 11.参考文献 参考文献一律放在文后,参考文献 的书写格式要按国家标准 GB7714- 87 规定。 参考文献按文中出现的先后统一用阿拉伯数字进行自然编号,一般序码宜用方括号括起,不用园括号括起。 五、对指导教师的要求 1.
是我国主要的教学形式,班级授课制是学校教育的基本形式。 因此,作为班集体灵魂 的班主任应该充分认识到自己所承担的历史重任。 小学班主任面对 7 岁 1 12 岁的儿童,工作更 加繁重。 我相信,任何一位班主任都希望胜任这项工作并把自己从繁重中尽量解脱出来,那么,如何开展小学班主任工作就至关重要。 下面我谈谈自己的体会。 一、亲近学生,研究学生;展现自我,树立威望。 谁爱孩子,孩子就会爱他
,尽管他们很就帮我们把食宿解决啦,但那里生活习惯和在湖南的时候相差太大,吃的很不习惯。 对我们湖南人来说菜里面没有一点辣椒是吃不下的,因此在那里的时候开始一段时间都只是吃一点点饭,很快身 材就“苗条”啦。 我的实习岗位被分配在总装车间箱发组,面对一台台发好泡的冰箱从自己流过,而我的工作就是和这些冰箱打交道。 我在这里做的装冰箱的托板,是将托板固定在冰箱上,这个岗位说难也不难
单位获得设计合同,不再另行补偿任何费用,另一家优胜单位获得 30 万元的竞赛补偿费,其余的参赛单位各获得 15 万元的竞赛补偿费。 5 六、竞赛申请人申报资料 一 本国企业应当提供以下有效证明材料 [除 (a)为原件外,其他为复印件,并带原件验证 ],包括: (a)《资格预审表》(投标请求); (b)营业执照; (c)资质等级证书; (d)国际机构颁发的 ISO9000 系列质量标准认证证书;