高级:利用Flash制作精彩的迷宫游戏 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    高级

    网页教学网:在以前的教程中我们讲解了利用Flash制作游戏的一些方法,比如碰撞的检测等,在这个教程中我们利用以前学的知识创建一个不错的迷宫游戏!该教程主要是Flash利用材质和遮照创建真实的小球动画的延续,利用创建好的小球滚动动画制作迷宫游戏,

高级:利用Flash制作精彩的迷宫游戏

    在学习这个教程前请大家查看利用材质和遮照创建真实的小球动画教程。教程中所使用的背景请看:利用Photoshop Action打造精美的宇宙星空特效

    在这篇教程中没有新的知识,就是利用一个舞台(地图),然后还有一个运动的小球实现的一个小的Flash游戏。在文章最后提供所有演示的源文件下载

    一共制作了两个迷宫动画效果。

    一、背景不动的迷宫游戏

    准备好一幅背景之后,直接输入下面代码。

    level = new Array();

    _root.attachMovie("starz", "starz", 1);

    _root.createEmptyMovieClip("bricks", 2);

    level[0] = new Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0);

    level[1] = new Array(0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1);

    level[2] = new Array(1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1);

    level[3] = new Array(1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1);

    level[4] = new Array(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);

    level[5] = new Array(1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1);

    level[6] = new Array(1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1);

    level[7] = new Array(1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1);

    level[8] = new Array(1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1);

    level[9] = new Array(1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1);

    level[10] = new Array(0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1);

    for (y=0; y<=10; y++) {

    for (x=0; x<=11; x++) {

    if (level[y][x] == 1) {

    place_brick = bricks.attachMovie("brick", "brick_"+bricks.getNextHighestDepth(), bricks.getNextHighestDepth(), {_x:x*40+30, _y:y*40+30});

    }

    }

    }

    _root.attachMovie("ball", "ball", _root.getNextHighestDepth(), {_x:30, _y:30});

    ball.texture.setMask(ball.ball_itself);

    power = 0.4;

    yspeed = 0;

    xspeed = 0;

    friction = 0.99;

    ball.onEnterFrame. = function() {

    if (Key.isDown(Key.LEFT)) {

    xspeed -= power;

    }

    if (Key.isDown(Key.RIGHT)) {

    xspeed += power;

    }

    if (Key.isDown(Key.UP)) {

    yspeed -= power;

    }

    if (Key.isDown(Key.DOWN)) {

    yspeed += power;

    }

    xspeed *= friction;

    yspeed *= friction;

    this._y += yspeed;

    this._x += xspeed;

    this.texture._y += yspeed;

    this.texture._x += xspeed;

    if (this.texture._x>53) {

    this.texture._x -= 63;

    }

    if (this.texture._x<-53) {

    this.texture._x += 63;

    }

    if (this.texture._y>53) {

    this.texture._y -= 63;

    }

    if (this.texture._y<-53) {

    this.texture._y += 63;

    }

    brick_x = Math.floor((this._x-10)/40);

    brick_y = Math.floor((this._y-10)/40);

    if (level[brick_y][brick_x]!=1) {

    this._x = 30;

    this._y = 30;

    xspeed = 0;

    yspeed = 0;

    }

    };

    演示效果(具体代码就不给讲解了,如果你想进一步深入可以看源文件):

   

    二、背景也移动的迷宫游戏

    再来一个背景移动的迷宫特效动画,

电脑资料

高级:利用Flash制作精彩的迷宫游戏》(https://www.unjs.com)。

    level = new Array();

    _root.attachMovie("starz", "starz", 1, {_x:-20, _y:-20});

    _root.createEmptyMovieClip("bricks", 2);

    level[0] = new Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0);

    level[1] = new Array(0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1);

    level[2] = new Array(1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1);

    level[3] = new Array(1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1);

    level[4] = new Array(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);

    level[5] = new Array(1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1);

    level[6] = new Array(1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1);

    level[7] = new Array(1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1);

    level[8] = new Array(1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1);

    level[9] = new Array(1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1);

    level[10] = new Array(0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1);

    for (y=0; y<=10; y++) {

    for (x=0; x<=11; x++) {

    if (level[y][x] == 1) {

    place_brick = bricks.attachMovie("brick", "brick_"+bricks.getNextHighestDepth(), bricks.getNextHighestDepth(), {_x:x*80, _y:y*80});

    }

    }

    }

    _root.attachMovie("ball", "ball", _root.getNextHighestDepth(), {_x:240, _y:220});

    bricks._x = 240;

    bricks._y = 220;

    ball.texture.setMask(ball.ball_itself);

    power = 0.4;

    yspeed = 0;

    xspeed = 0;

    friction = 0.99;

    ball.onEnterFrame. = function() {

    if (Key.isDown(Key.LEFT)) {

    xspeed -= power;

    }

    if (Key.isDown(Key.RIGHT)) {

    xspeed += power;

    }

    if (Key.isDown(Key.UP)) {

    yspeed -= power;

    }

    if (Key.isDown(Key.DOWN)) {

    yspeed += power;

    }

    xspeed *= friction;

    yspeed *= friction;

    bricks._y -= yspeed;

    bricks._x -= xspeed;

    starz._x = -20+((bricks._x-240)/10);

    starz._y = -20+((bricks._y-220)/10);

    this.texture._y += yspeed;

    this.texture._x += xspeed;

    if (this.texture._x>53) {

    this.texture._x -= 63;

    }

    if (this.texture._x<-53) {

    this.texture._x += 63;

    }

    if (this.texture._y>53) {

    this.texture._y -= 63;

    }

    if (this.texture._y<-53) {

    this.texture._y += 63;

    }

    brick_x = Math.floor((bricks._x-200)/80)*-1;

    brick_y = Math.floor((bricks._y-180)/80)*-1;

    if (level[brick_y][brick_x] != 1) {

    bricks._x = 240;

    bricks._y = 220;

    starz._x = -20;

    starz._y = -20;

    xspeed = 0;

    yspeed = 0;

    }

    };

    演示效果(具体代码就不给讲解了,如果你想进一步深入可以看源文件):

   

    点击这里下载源文件(上述两个演示的源文件,共1.09M)

最新文章