`
stephen830
  • 浏览: 2964336 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

以前用J2ME(WTK2.1)平台写的手机小游戏俄罗斯方块

    博客分类:
  • java
阅读更多
这个小游戏完全采用J2ME的WTK2.1平台开发,功能仿俄罗斯方块游戏。(由于是第一次写手机游戏,有些地方处理的不是很好,大家见谅)

现有功能列表:
1. 下一方块提示;
2. 消行计分;
3. 下降加速;
4. 中途暂停/继续;
5. 级别(共分5级)不同,速度/计分不同。

* 难度级别,级别从1级 - 5级
*
* 级别与游戏速度的对应关系
* 级别 速度
* Level1 方块/2
* Level2 方块
* Level3 方块*1.5
* Level4 方块*2
* Level5 方块*2.5
*
* 级别与得分的对应关系
* 级别 得分
* Level-1 0-3000
* Level-2 3000-8000
* Level-3 8000-16000
* Level-4 16000-40000
* Level-5 >40000
*
* 级别与消行得分的对应关系
* Level1 100
* Level2 200
* Level3 500
* Level4 1000
* Level5 2000


由于这个小游戏写得比较早,在索爱T628上测试过,运行效果还不错,坐车时可以打发些无聊的时间。

下面是当时写这个小游戏的一些构思,具体的源代码在附件的zip包中,感兴趣的朋友可以看看.

/**
 * 主程序.
 * @author Stephen
 * @version v0.9.0
 * <pre>
 * 基本设计思路:
 * 
 * 把整个可操作的显示屏幕看作1个矩阵(matrix),矩阵采用1个整型二维数组来表示。
 * 矩阵是由若干个方格组成,矩阵的最小组成单位是方格(grid),方格是1个正方形。
 * 二维数组中每个元素的值只有两种选择:1或者0。
 * 
 * 方格填充的内容有2种:填充1个方块(box)或者空白。方格的填充规则:必须根据方
 * 块在对应的二维数组中的值进行填充。如果对应的值为1,则填充1个方块;如果对应的
 * 值为0,则空白。
 * 
 * 名词定义:方块显示矩阵(displayMatrix)。说明:方块显示矩阵是用于输出到屏幕完成
 * 显示的矩阵。在往屏幕上绘画的主要依据就是方块显示矩阵。
 * displayMatrix矩阵中坐标和长度的关系:
 * 假设矩阵的宽度=6,高度=4,每个矩阵方格的边长a=10,则:
 * 矩阵的坐标为:
 * [0][0],[0][1],[0][2],[0][3],[0][4],[0][5]
 * [1][0],[1][1],[1][2],[1][3],[1][4],[1][5]
 * [2][0],[2][1],[2][2],[2][3],[2][4],[2][5]
 * [3][0],[3][1],[3][2],[3][3],[3][4],[3][5]
 * 如果在矩阵内有个方块,方块左上角相对于矩阵左上角的长度为:水平方向x=25,垂直方向y=30,则:
 * 对应的矩阵坐标计算方法:
 * 水平坐标= x%a>0?x/a:x/a-1 =3
 * 垂直坐标= y%a>0?y/a:y/a-1 =2
 * 因此对应的矩阵坐标=[y][x] = [2][3]
 * 
 * 
 * 名词定义:方块(box)。说明:方块是用于往矩阵方格填充的东西。这里所谓的填充:就是
 * 往方格内画方块。方块是1个正方形。
 * 
 * 方块显示矩阵内的方块都是静态的,而在方块成为静态之前都是可活动的,称为
 * 活动方块组(activeBox)。
 * 
 * 方块活动矩阵内的活动方块组的类型有以下5种:(每个活动方块组实际上都是由4个方块组成的)
 * 在实际编码中,采用矩阵(二维数组)来表示活动方块组。
 * <1>int[][]{{1,1},{1,1}}
 * 00
 * 00
 * 俗称"田字形"。
 * 它没有变形。
 * <2>int[][]{{1,0},{1,0},{1,0},{1,0}} 说明:因为必须是1个二维数组,所以在后面补0
 * 0
 * 0
 * 0
 * 0
 * 俗称"一字形"。它的变形有1种:
 * 0000
 * 
 * <3>int[][]{{0,1},{1,1},{1,0}}
 *  0
 * 00
 * 0
 * 
 * 它的变形有1种:
 * 00
 *  00
 * 
 * <4>int[][]{{0,1},{0,1},{1,1}}
 *  0
 *  0
 * 00
 * 
 * 它的变形有3种:
 *            00  000
 *     0      0     0
 *     000    0   
 * <5>int[][]{{0,1},{1,1},{0,1}}
 *  0
 * 00
 *  0
 * 
 * 它的变形有3种:
 *            0   000
 *      0     00   0
 *     000    0
 * 
 * 
 * 屏幕内活动方块组的活动有2种类型:变形(change)和移动(move)。
 * 
 * 方块组的移动可以分为:自由移动和手工移动。自由移动是指不需要人为干预的活动;手工移动是
 * 指必须通过人为干预才能完成的活动。
 * 
 * 方块组的移动中的自由移动有:
 * <1>垂直向下移动(moveDown):采用Timer、TimerTask定时执行,每次执行后方块垂直向下
 * 移动1个方格的5分之一的长度(方格是矩阵的最小单位)。
 *  
 * 方块组的移动中的手工移动有:
 * <1>水平向左移动(moveLeft)
 * <2>水平向右移动(moveRight)
 * <3>垂直向下快速移动(moveDownFast)
 * 
 * 方块组的变形活动必须通过手工来完成。即必须通过手工按键完成活动方块的变形操作。所谓的变形
 * 是指将活动方块组每次按顺时针方向旋转90度。
 * 
 * </pre>
 */



附录:附件中的压缩包包含2个文件:
      (1) ElsBox.java - 源代码
      (2) ElsBox.jar  - ElsBox.java生成的jar包,可以直接传到手机(支持java的手机)上运行。


-------------------------------------------------------------
分享知识 分享快乐, 希望文章能给需要的朋友带来小小的帮助。

另外,欢迎朋友转载,转载时请注明出处,谢谢!


6
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics