- 注册时间
- 2004-9-23
- 最后登录
- 1970-1-1
|

楼主 |
发表于 2006-9-21 08:41:14
|
显示全部楼层
我用的方法有点笨,主要是把每一个方块都看成是一个点,在屏幕上对应.我们定义一个10*20个点的区域作为游戏区,把方块对应的点赋给这个区域,在下落之前对这个方块下方的每一个点进行一个判断,只要有一个点下有点就可以在这里停止,对于左移和右移的方法与下移换汤不换药,当然,为了使方块不出边界,我用的方法是在这个游戏区域的左,右,下(上就不用了)三个方向先定义为有方块,这样在移动方块时就不会出界了,一般用一个二维数组如
char box[12][21];
来表示这个游戏区的数据,用1表示有方块,用0表示没方块,之所以定义成横向12个数据,纵向21个数据,是因为我们要分别把
box[0][0]~box[0][20]
box[11][0]~box[11][20]
box[0][21]~box[11][21]
作为游戏区的左,右,下三方的边界,这些数据的值始终保持为1的状态,
方块的产生用一个随机数,这个简单,
当一行方块的个数为10.那么就把这行给消了,而在这行以上的所有行的值全部一一对应的往下移一格,一直到顶,但由于文曲星LAVAX和速度,所以我还定义了一个方块堆码的最高点,那么程序就不用计算到屏幕的顶端了,只要到这个最高点就行了,这样相对会节约一点时间.
要完成上面的内容,还要定义两个变量,
char x,y;
这个是用来控制方块在游戏区域内的位置用的,
至于方块的形壮,我是这下面的方法来定义的,如
口口口口
口■口口
■■■口
口口口口
我用这样一个数据
char ***
{
0,0,0,0,
0,1,0,0,
1,1,1,0,
0,0,0,0
};
来表示,所有的方块都用一个4*4的数组来表示,为了方便,我定义了七种方块,那么每一种又有四种变形体,总共就用一个四维数组,第一维表示方块种类,第二维为方块的变形体,第三维和第四维为方块的横向,纵向对应的数据,即0或1.
其它的实现方法自已琢磨一下吧,应该不难.
如果有人曾经编过这个游戏的,请指点一二.谢谢! |
|