俄罗斯方块(2D、3D)
声明:这篇文章主要是参考几个别人的博文及源代码学习。参考文章:
1)http://blog.csdn.net/qian_f/article/details/19758671
2)http://yacare.iteye.com/blog/1949398
砖块类型:
如何实现俄罗斯方块游戏?首先我们需要确定有些中的初始化有多少种方块,每种方块是可以如何变形?一共包含以下七种图形、变形情况如下:
方块一: 变形1 变形2 变形3 变形4
+ + + + + + + + + + + + + + + +
方块二:
- - - - - - - - - - - - - - - - - + - - - - - - - - - + - - - - - - - - - + - - - + + + + - - + - - + + + + - - - + - - - - - - - - - + - - - - - - - - - + - - - - - - - - - + - - - - - - - - - - - -
方块三:
- + - - + - - - - - + - + + + - + + + + + + + - - - - - + - - + - - + -
方块四:
- - - - + - + + - - - + + + - + + - - + + - + + - + + + - - - - - - + -
方块五:
- - - + - - - + + - + - - + + + + - + + - - + + + + - - + - - - - - - +
方块六:
- - - - - - - - - - - - - - - - - + - - - - + - - - - - - - - - - - - - - + - - - - + + + - - + + - + + + - - - + + - - - - - - - - - + - - - - + - - - - - - - - - - - - - - + - - - - - - - - - - - -
方块七:
- - - - - - - + - - - - - - - - - - - - - - + - - - - + - - - - - - - - - - - - + + + - - - - + + - - - + + + - + + - - - - - - - - - - - - - - + - - - - + - - - - - - - - - - - - - - - - - - - + - -
游戏画布
根据自己的需求设定一定宽度、高度的一个画布,根据需要设定宽多少column,高多少row,除了对画布划分网格外,还需要对每个网格设定其颜色填充类型:1)七种图形的哪一种(-1--无任何填充因此无颜色,0:填充砖块1类型,1:填充砖块2类型;。。。6:填充砖块7类型,备注:每种栅格对应有自己唯一的渲染颜色,因此记录栅格就可以找到其对应的填充颜色值);
2)是否填充(0--无填充;1--填充)
因此,定义画布的网格需要使用一个三维数组表示:int [,,]
第一个元素代表:第多少个column,从0开始;
第二个元素代表:第多少个row,从0开始;
第三个元素代表:某个网格的颜色填充类型。
画布事件:
上、下(快速实现下滑)、左、右
方块具有的属性方法:
颜色、中心点、相对中心点、砖块类型唯一标识、变型序列、必要的行、必要的列、变形范围;
是否可以向左、是否可以向右、是否可以向下、是否可以变形、变形。
2D效果图:
3D效果图:
去掉网格后的效果貌似更好点:
代码下载:链接:http://pan.baidu.com/s/1mhTnj64 密码:c2rl
基础才是编程人员应该深入研究的问题,比如:
1)List/Set/Map内部组成原理|区别
2)mysql索引存储结构&如何调优/b-tree特点、计算复杂度及影响复杂度的因素。。。
3)JVM运行组成与原理及调优
4)Java类加载器运行原理
5)Java中GC过程原理|使用的回收算法原理
6)Redis中hash一致性实现及与hash其他区别
7)Java多线程、线程池开发、管理Lock与Synchroined区别
8)Spring IOC/AOP 原理;加载过程的。。。
【+加关注】。