迷宫游戏开发过程(一)

      Flash 2005-12-21 13:34
<hr style="width: 100%; height: 2px;">
1、迷宫地图
 2、我方移动
3、敌方移动
4、碰撞监测
 5、得到金币
6、得到救助
 7、敌方射击
8、胜利逃脱
1、构造迷宫地图
     目前,构造地图的最普遍的方式是利用二维数组来存贮地图中的物件的布局,数组中的不同数值代表不同的物件。这里的二维数组是这样的:
 layout = new Array(); layout[0] = ([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]); layout[1] = ([1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1]); layout[2] = ([1, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 0, 0, 2, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 1]); layout[3] = ([1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 2, 0, 0, 0, 0, 1]); layout[4] = ([1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1]); layout[5] = ([1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1]); layout[6] = ([1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1]); layout[7] = ([1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1]); layout[8] = ([1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]); layout[9] = ([1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1]); layout[10] = ([1, 0, 0, 1, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]); layout[11] = ([1, 0, 0, 1, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]); layout[12] = ([1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1]); layout[13] = ([1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1]); layout[14] = ([1, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1]); layout[15] = ([1, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1]); layout[16] = ([4, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1]); layout[17] = ([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]);
在flash里面是没有二维数组的概念的,但是我们可以用数组中包含数组的方法来解决这个问题。 这数组里面的:
 1代表的是墙壁
2代表金币
3代表救助
4代表的出口
(等你把所有的金币捡到后才出现)
0代表的是可走的路线
 for (i=0; i<ymax; i++) { for (j=0; j<xmax; j++) { attachMovie('box', 'b'+i+'_'+j, (i*(xmax+1)+j)); boxes['b'+i+'_'+j]._x = (boxes['b'+i+'_'+j]._width/2)+(boxes['b'+i+'_'+j]._width*j); boxes['b'+i+'_'+j]._y = (boxes['b'+i+'_'+j]._height/2)+(boxes['b'+i+'_'+j]._height*i); boxes['b'+i+'_'+j].gotoAndStop((layout[i][j])+1); } }
这里的box根据数组中的不同的数值来进行帧跳转,在box不同的帧绘制是不同的地图的物件。根据数组的下标来定位导入的box的位置。有一点 必须注意的是 xmax=layout[0].length ymax=layout.length; 这里的ymax在外层的循环,也就是说需要逐行绘制的地图,而不是逐列绘制。这样就可以保证绘制的地图可以正确的反映到数组的下标位置上 ,而不会产生错乱。



标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}