快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

在Flash中用数组建地图的贪吃蛇游戏

  演示效果:(说明文章的后面有本文中涉及到的所有源码打包下载)

« Full Screen »

  第二个下面有源码解析:

« Full Screen »

  8月28日5:45分更新,有游戏地图,速度选择:

« Full Screen »

第一帧:AS:

Stage.showMenu=false;//不显菜单
stop();
//---------------start帧AS-------------------
var s_total = 500;//总蛇数
var w_col = 30;//行,宽数
var w_row = 30;
var w_w = 15;//每个方块象素
var myarray;//地图数组
for (var i = 0; i<s_total; i++) {
_root.attachMovie("snake", "s"+i, 2000+i);//载入蛇
}
var level = 1;//为扩展作装备,级别1
for (var i = 0; i<10; i++) { //加载食物
_root.attachMovie("food", "f"+i, 1000+i);
}
gotoAndPlay("gotono");

//------------gotono帧AS:----------------------------------
var s_len = 5;//蛇长
var snake_x = 1; //蛇的位置1行1列
var snake_y = 1;
var snake_fangx = 0;//蛇移动的方向值,向右为0,向下为1,向左为2,向上为3
var snake_tou = 0;//蛇头
for (var i = 0; i<s_total; i++) {//使蛇的MC跳到第一帧,
eval("s"+i).gotoAndStop(1);
}
s0._x = 15;//蛇头位置15象素.
s0._y = 15;
s0.gotoAndStop(2); //显示蛇头
s0.x = snake_x;//存蛇头的行列位置
s0.y = snake_y;
tm=random(3)+1;
gotoAndPlay("no"+tm);//随机跳入no1,no2,no3;
 
// no1帧:--------------------------------------
myarray=[[.......................]] //建地图数组30*30,见源文件
eatfood = 0; //吃掉的食物变量
guan = 1;//第一关
bzhuan(); //显示地图
bfood(); //显示食物
gotoAndPlay("s_move"); //跳到蛇移动的AS
function bfood() {
for (var i = 0; i<10; i++) {
do {
var x = random(w_col);
var y = random(w_row);
} while (myarray[y][x] != 0);
myarray[y][x] = i+1;
with (eval("f"+i)) {
_x = x*w_w;
_y = y*w_w;
gotoAndStop(random(2)+2);
}
}
}
function bzhuan() {
for (var i = 0; i<w_col*w_row; i++) {
if (eval("b"+i) != undefined) {
eval("b"+i).removeMovieClip();
}
}
for (var i = 0; i<w_row; i++) {
for (var j = 0; j<w_col; j++) {
if (myarray[i][j] != 0) {
var num = i*w_col+j;
_root.attachMovie("zhuan", "b"+num, num+1);
eval("b"+num)._x = j*w_w;
eval("b"+num)._y = i*w_w;
}
}
}
}
//no2 和no3 的帧AS中只是地图数组不同.

//smove帧:----------------------------------------------
var snake_fx = 0;
var snake_fy = 0;
if (snake_fangx == 0) {
snake_fx = 1;
}
if (snake_fangx == 1) {
snake_fy = 1;
}
if (snake_fangx == 2) {
snake_fx = -1;
}
if (snake_fangx == 3) {
snake_fy = -1;
}
snake_x = (snake_x+snake_fx+w_col)%w_col;
snake_y = (snake_y+snake_fy+w_row)%w_row;
if (myarray[snake_y][snake_x]>=64) {
gotoAndStop("over");
// game over
} else {
eval("s"+snake_tou).gotoAndStop(3);
snake_tou = (snake_tou+1)%s_total;
eval("s"+snake_tou).x = snake_x;
eval("s"+snake_tou).y = snake_y;
eval("s"+snake_tou)._x = snake_x*w_w;
eval("s"+snake_tou)._y = snake_y*w_w;
eval("s"+snake_tou).gotoAndStop(2);
var s_wei = (snake_tou-s_len+s_total)%s_total;
var tmpx = eval("s"+s_wei).x;
var tmpy = eval("s"+s_wei).y;
myarray[tmpy][tmpx] = 0;
eval("s"+s_wei).gotoAndStop(1);
food_n = myarray[snake_y][snake_x];
myarray[snake_y][snake_x] = 64;
if (food_n>=1 && food_n<=10) {
gotoAndPlay("eat");
//eat
} else {
gotoAndPlay("noeat");
//no eat
}
}
//noeat
gotoAndPlay("s_move");
//eat:
var tmp = food_n-1;
eval("f"+tmp).gotoAndStop(1);
eatfood++;
s_len += 5;
if (eatfood == 10) {
eatfood = 0;
bfood();
gotoAndPlay("s_move");
} else {
gotoAndPlay("s_move");
}
//over 帧:
_root.attachMovie("over","o",10000);
o._x=100;
o._y=100;
o.guan_num=guan;
stop();
_root.onMouseDown=function(){
if(o.hitTest(_root._xmouse,_root._ymouse)){
startDrag("_root.o",false,0,0,250,220);
}
}
_root.onMouseUp=function(){
stopDrag();
}
//键盘响应层是一个空MC,上面只有AS:
onClipEvent (keyDown) {
kd = Key.getCode();
if (kd == Key.RIGHT) {
if (_root.snake_fangx != 2) {
_root.snake_fangx = 0;
}
} else if (kd == Key.DOWN) {
if (_root.snake_fangx != 3) {
_root.snake_fangx = 1;
}
} else if (kd == Key.LEFT) {
if (_root.snake_fangx != 0) {
_root.snake_fangx = 2;
}
} else if (kd == Key.UP) {
if (_root.snake_fangx != 1) {
_root.snake_fangx = 3;
}
}
}


点击这里下载源文件


返回类别: Flash教程
上一教程: Flash MX 2004新特性实例学习四
下一教程: 用FLASH AS实现鼠标画圆的效果

您可以阅读与"在Flash中用数组建地图的贪吃蛇游戏"相关的教程:
· 在Flash中用二维数组建地图的迷宫游戏
· Flash Actionscript制作贪吃蛇简陋版
· Flash MX 2004实例制作视频教程:猜拳游戏(1)
· Flash MX 2004实例制作视频教程:太空战记游戏(5)
· Flash游戏开发系列一:游戏中的敌人(4)
    微笑服务 优质保证 索取样品