- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
J2me–开发实例–俄罗斯方块
* * * * * J2ME J2ME Java ME 移动开发编程 ——开发实例 实例——俄罗斯方块 一、游戏设计 操作流程 本游戏的操作流程非常简单,玩家启动MIDlet启动后,即进入游戏主画面,屏幕开始显示为欢迎画面。玩家按下任意键,进入游戏。当玩家按下[开始]按钮后,就可以开始玩游戏了。在游戏过程中,玩家可以按下[暂停]按钮暂停游戏运行,按下[继续]按钮,恢复游戏运行。任何时候按[退出]按钮,MIDlet都会终止。 流程图 游戏分析 要实现上述游戏功能,我们需要实现哪些类? ——首先,我们需要一个控制类,用来管理整个程序运行的流程 ——其次,我们需要一个游戏类,用来实现游戏的核心功能 ——再次,我们需要一个类来实现产生下一个方块、方块移动和旋转等操作。 ——其他的一些辅助类,诸如定时器任务类等 控制类的实现 控制类的功能比较简单,根据流程,它主要控制在显示了欢迎界面后,启动游戏类的显示。 二、核心逻辑的设计思路 游戏的实现其实就是把一个现实世界的物理模型抽象成能用程序描述的逻辑模型。 我们回想一下俄罗斯方块的游戏过程: 一个有一定形状的方块从屏幕顶部往下掉,而且这个方块可以旋转、可以左右移动。 那么我们来分解这个过程 俄罗斯方块的游戏过程 首先,考虑怎样实现方块不停的从屏幕顶端往下落的过程。 要上方块不停的从屏幕顶端往下落,这是一个重复的且按照一定时间间隔的行为,我们自然可以想到在这里用一个定时器来实现这一个重复的过程。我们只需要在定时器的定时任务里完成方块的下落就行了。 俄罗斯方块的游戏过程 其次,考虑方块表示和方块的旋转、移动。 俄罗斯方块共有7种不同类型的方块 上面的7种方块中,每一种类型的方块都可以看作是单位方块的组合,且都是由4个单位方块组成。 俄罗斯方块的游戏过程 另外,方块在屏幕上的移动是以一个单位方块为单位移动到的,那么我们可以把屏幕划分成若干个小方格,每次移动就向相应的方向移动一小格,如下图 俄罗斯方块的游戏过程 向右移动五次 向下移动五次 核心逻辑的设计思路 在本例中,方块都是用一个填充颜色的实心矩形表示的,那么我们为了要表示放块,需要先把屏幕划分成m x n 个小格子,在本例中,m=15,n=11。为了表示这些格子,我们可以定义一个二维数组int ScreenBlock=new int[11][15];来表示屏幕中的每个小格子。这里为了和屏幕坐标统一起来,所以数组的第一维表示一行多少列,第二维表示总共多少行,这样与x, y是统一的。有了这个二维数组,我们可以将方块对应屏幕位置的二维数组的相应数据设置为1,而没有方块的地方设置为0,这样我们在屏幕渲染时,就扫描整个二维数组,只要数组元素为1,我们就将相应的区域着色。 核心逻辑的设计思路 下面考虑怎样表示不同类型的方块以及方块的旋转。 接着上面思考,既然我们的屏幕上已经划分好了小格子,那么我们只要把每种方块贴到屏幕上的相应位置的格子里就行了,因此我们需要知道每种方块对应的那些格子应该着色。我们可以同样用数组来标记每种不同的方块应该在哪些区域着色。因为在这7种方块中,每一种类型的方块无论长或宽都不超过4个单位方块,所以我们可以用一个4x4的矩阵来表示。 核心逻辑的设计思路 1 0 5 4 4 0 9 5 5 4 7 6 5 1 8 4 4 0 8 1 6 2 10 1 1 4 5 6 方块的旋转 我们其实是用了一个4x4的二维数组来表示一种方块,那么我们在程序里可以用矩阵旋转的方法把放块旋转后的结果计算出来,这是一种方法。 另一种方法,因为我们每次旋转都是旋转90度,那么每种方块也就只有4种状态,7个放块也就28种状态,那么我们可以在程序里将这28种状态都写出来,那么旋转的时候,我们只要顺序的取这些方块的状态就可以了。因此我们定义一个类BlockTypeArray 来存储这些状态 方块的移动 有了前面的数据结构,我们可以设计一个类Block来控制方块的移动和旋转等操作。那么这个Block类有一个,x, y属性对应了这个方块在屏幕坐标中的位置。当我们要移动方块时,只要改变这个x, y坐标就可以了。至于渲染得时候,也是根据这个x, y坐标在加上每个方块的偏移位置,在屏幕中将这个方块画出来。 MainCanvas类的实现 完成的功能 该类实现游戏的核心逻辑,需要完成的功能: 实现游戏的控制(用户通过这个类实现与游戏的交互) 游戏逻辑的实现 包括: 让方块定时下落 判断方块左右移动和下落的可能性 判断一个放块所涉及的行是否填满 消去填满的行等
您可能关注的文档
最近下载
- Fronius伏能士 TPS320 400 500 600iv TPS400 LSCADV MIG.MAG电源操作手册.pdf VIP
- 4 2实现中华民族伟大复兴的中国梦-议题式教学课件 23张-【新教材】2021-2022学年统编版(2019)高中政治必修一.pptx VIP
- 预制钢筋混凝土装配式检查井施工方案.pdf VIP
- 14J936 变形缝建筑构造.docx VIP
- 有限公司股权激励计划协议限制性股权.pdf VIP
- 金融业三个办法新规及实操要点解读课件.pptx VIP
- 人教版小学三年级下册劳动教育完整教案.pdf VIP
- 公文语言的特点.doc VIP
- 辅助生殖拮抗剂方案标准化应用专家共识.pptx VIP
- 国家建筑标准设计图集22G101-3 混凝土结构施工图平面整体表示方法制图规则和构造详图(独立基础、条形基础、筏形基础、桩基础).pdf VIP
文档评论(0)