在FLASH as3.0的贪吃蛇制作中怎么用数组控制蛇身体的移动,搞了好久都不行,还是有别的办法?请高人指点

发布网友 发布时间:2022-04-24 12:24

我来回答

2个回答

热心网友 时间:2023-10-12 18:00

给你个思路!
蛇:有多节组成,可增可减;所以 每节 当作一个对象来处理。
例:创建一个 身体"节"的一个类(Snake)。里面加些属性 需要什么属性自己随便。基本的 X、Y。还可做美术做一个蛇的单节身体的图片。
假设蛇初始有5节。初始蛇头定好坐标。然后
for( var i:int = 0; i < 5; i++ ){
var vSnake:Snake = new Snake(/** 构造函数里可以设置坐标或者另赋值*/);
vSnake.x = xxxxxxx;
vSnake.y = xxxxxxx; ///自己定
array.push( vSnake ); ///都放到一个数组里控制
this.addChild( vSnake );
}
上面代码已经画出一个蛇的形状了。然后在蛇移动中控制数组里的对象就可以了。
如:例如别人控制蛇向左移动
for( var i:int = array.length - 1; i >= 0; i-- ){ ///这里要倒叙 从蛇尾开始移动
if( i == 0 ){ ///蛇头
switch(控制蛇移动的方向){
case "上":
array[i].x = /** 不变 */;
array[i].y = /** 加一次位移 */;
break;
case "下":
/** 同“上”计算位移*/
break;
case "左":
/** 同“上”计算位移*/
break;
case "右":
/** 同“上”计算位移*/
break;
}
}else{ ///从最后开始,每一节挪到前一节位置
array[i].x = array[i - 1].x;
array[i].y = array[i - 1].y;
}
}
最后你的蛇每走一步都 用你蛇头的对象.hitTestObject(对象) 遍历一遍,看有没有碰到自己身体
或者 障碍物 或者墙壁之类的。碰到就游戏结束
蛇在行进中如果吃到加长道具就把数组追加一个对象 array.push( 对象 );
碰到缩短 就删除尾部一个对象,array.pop().具体删除几个,看你设计缩多短了
这样一个基本的贪吃蛇游戏就形成了。具体再添加什么好玩的元素就看自己怎么做了。

热心网友 时间:2023-10-12 18:00

当然有了,一般是用跟随的方法,可以把实例名起个序列,假如你有二十个实例,可以这样来控制
for(var i:uint=0;i<20;i++)
{
this["se"+i]
}
这样就可以控制所有的属性了。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com