flash 植物大战僵尸制作

植物大战僵给了我们很好的视觉和感觉上的享受。你得保护你的房子以免被吃脑的僵尸入侵,这相当的吸引人。总的来说,杀死僵尸是很有趣的。

在这个,没有美工配合,我们就用圆形来代替植物,用方块来代替僵尸,伟大的圆形将会阻止邪恶的方块进入我们的基地。

游戏区域可以被简化为一个区块游戏。设想一下这种局面:

 

看图我们所拥有的是一个位于(2,2)的植物,它会尽力阻止走在第二行(从第0行开始,下同)的僵尸,
并且另一个僵尸正在沿着第三行接近我们的基地,还有一个正从第四列落下的阳光。不可能有另外一个植物位于(2,2),
并且不可能出现一个僵尸走在第二行与第三行之间。

创建游戏区域

正如你在上图看到的那样,这个游戏的区域是一个5行9列的矩阵。
setupField();  建立游戏信息
drawField();   绘制游戏地图

 

//------  设定游戏主界面  5*9 二维数组 小方格   ---------
        private function setupField():void {
            //数组
            gameField=new Array();
            for (var i:uint=0; i<5; i++) {
                gameField[i]=new Array();
                for (var j:uint=0; j<9; j++) {
                    gameField[i][j]=0;
                }
            }
        }
        
        //----  绘制游戏区域背景方格  --------------
        private function drawField():void {
            //显示地图精灵,内部画绿块
            var fieldSprite:Sprite=new Sprite();
            //颜色随机值
            var randomGreen:Number;
            addChild(fieldSprite);
            fieldSprite.graphics.lineStyle(1,0xFFFFFF);
            for (var i:uint=0; i<5; i++) {
                for (var j:uint=0; j<9; j++) {
                    //颜色的随机绿色
                    randomGreen=(125+Math.floor(Math.random()*50))*256;
                    //填充画矩形框并填充绿色   5行9列
                    fieldSprite.graphics.beginFill(randomGreen); 
                    fieldSprite.graphics.drawRect(25+65*j,80+75*i,65,75); // x,y 65*75大小, (25,80)为初始地址 j 是列,i 是行 画矩形
                }
            }
        }
    }

 

这样就可以创建一个游戏背景图了。

 2:创建阳光,收集阳光  fallingSuns()

 阳光是植物大战僵尸里的货币。它们从天上掉下来,落到某一区块上。捡起这些阳光,你才能购买植物。
我们用到了timer计时器事件使得每五秒落下一个阳光,随机出现并缓慢滑落到某一个自定义消失位置。点击
它就可以收集。

        private function fallingSuns():void {
            addChild(sunContainer);
            flowersTimer.start();
            flowersTimer.addEventListener(TimerEvent.TIMER, newSun);
        }
private function newSun(e:TimerEvent):void {
            var sunRow:uint=Math.floor(Math.random()*5);
            var sunCol:uint=Math.floor(Math.random()*9);
            sun = new sunMc();
            sun.buttonMode=true;
            sunContainer.addChild(sun);
            sun.x=52+sunCol*65;
            sun.destinationY=130+sunRow*75;
            sun.y=-20;
            sun.addEventListener(MouseEvent.CLICK,sunClicked);
        }
private function sunClicked(e:MouseEvent):void {
            e.currentTarget.removeEventListener(MouseEvent.CLICK,sunClicked);
            money+=5;
            updateMoney();
            var sunToRemove:sunMc=e.currentTarget as sunMc;
            sunContainer.removeChild(sunToRemove);
        }
private function onEnterFrm(e:Event):void {//  循环移动所有的太阳
            for (i=0; i<sunContainer.numChildren; i++) {
                var fallingSun:sunMc=sunContainer.getChildAt(i) as sunMc;
                if (fallingSun.y<fallingSun.destinationY) {
                    fallingSun.y++;
                } else {
                    fallingSun.alpha-=0.01;
                    if (fallingSun.alpha<0) {
                        fallingSun.removeEventListener(MouseEvent.CLICK,sunClicked);
                        sunContainer.removeChild(fallingSun);
                    }
                }
            }
       }

 

 

posted @ 2013-11-25 10:38  无名盗闪  阅读(712)  评论(0编辑  收藏  举报