Snake Game

by Patrik-Malik
Snake Game
♥0 | Line 162 | Modified 2011-10-18 00:33:41 | MIT License
play

ActionScript3 source code

/**
 * Copyright Patrik-Malik ( http://wonderfl.net/user/Patrik-Malik )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/hExM
 */

//frogs, rodents, turtles and small mammals
//rabbits, foxes, birds
package {
    import flash.display.MovieClip;
    import flash.display.Stage;
    import flash.events.Event;
    
    import flash.display.Sprite;
    import flash.events.KeyboardEvent;
    
    public class FlashTest extends Sprite {
        private var hlava:Sprite;
        private var oko:Sprite;
        private var jablko:Sprite;
        private var telo:Array = [];
        private var teloZ:int = 0;
        public var polomer:int = 15;
        
        public var Rýchlosť:Number = 5;
        public var teloRýchlosť:Number = Rýchlosť;
        
        // Musim zmenit na array
        public var varRight:Boolean = false;
        public var varLeft:Boolean = false;
        public var varUp:Boolean = false;
        public var varDown:Boolean = false;
        
        //public var xRýchlosť:Number = 5;
        //public var yRýchlosť:Number = 5;
        
        //private var speedť:Number = 5;//0.3;
        private var rotateSpeed:Number = 5;
        private var vx:Number = 0;
        private var vy:Number = 0;
        private var friction:Number = 0.95;
        
        public function FlashTest() {
            // write as3 code here..
            hlava = novýSprite(hlava, 0x00FF00, polomer, 100, 100);
            oko = novýSprite(oko, 0xFF0000, 5, (polomer/2), 0);
            jablko = novýSprite(jablko, 0xFF0000, 10, 200, 200);
            hlava.addChild(oko);
            addChild(jablko);
            addChild(hlava);
            
            stage.addEventListener(Event.ENTER_FRAME, loop);
            stage.addEventListener(KeyboardEvent.KEY_DOWN, naStlačenieKlávesy);
            stage.addEventListener(KeyboardEvent.KEY_UP, naUvoľnenieKlávesy);
        }
        public function loop(event:Event):void
        {
            pohyb();
            if (hlava.hitTestObject( jablko ))
            {
                jablko.x=random(0, stage.stageWidth);
                jablko.y=random(0, stage.stageHeight);
                
                var had:Sprite;
                had = novýSprite(had, 0x00FF00, polomer, 100, 100);
                telo[teloZ]=had;
                telo[teloZ].x = hlava.x;
                telo[teloZ].y = hlava.y;
                addChild(telo[teloZ]);
                teloZ++;
            }
        }
        public function novýSprite(sprite:Sprite, color:uint, veľkosť:int, tx:int, ty:int):Sprite
        {
            sprite=new Sprite();
            sprite.graphics.beginFill(color);
            sprite.graphics.drawCircle(0, 0, veľkosť);
            sprite.graphics.endFill();
            sprite.x=tx;
            sprite.y=ty;
            sprite.rotation=0;
            
            return sprite;
        }
        public function naStlačenieKlávesy(event:KeyboardEvent):void {
            if (event.keyCode == 39) {
                varRight = true;
            }
            if (event.keyCode == 37) {
                varLeft = true;
            }
            if (event.keyCode == 38) {
                varUp = true;
            }
            if (event.keyCode == 40) {
                varDown = true;
            }
        }
        public function naUvoľnenieKlávesy(event:KeyboardEvent):void {
            if (event.keyCode == 39) {
                event.keyCode = 0;
                varRight=false;
            }
            if (event.keyCode == 37) {
                event.keyCode = 0;
                varLeft=false;
            }
            if (event.keyCode == 38) {
                event.keyCode = 0;
                varUp=false;
            }
            if (event.keyCode == 40) {
                event.keyCode = 0;
                varDown=false;
            }
        }
        public function pohyb():void
        {
            if(teloZ>0)
            {
                //teloRýchlosť -= (1/8);
                //var tdir:Number = Math.atan2(hlava.y-telo[0].y, hlava.x-telo[0].x)*180/Math.PI;
                //telo[0].x += Math.cos(degreesToRadians(tdir))*(teloRýchlosť);
                //telo[0].y += Math.sin(degreesToRadians(tdir))*(teloRýchlosť);
                telo[0].x = hlava.x;
                telo[0].y = hlava.y;
                telo[0].rotation = hlava.rotation;
                //var tdir:Number = Math.atan2(hlava.y-telo[0].y, hlava.x-telo[0].x)*180/Math.PI;
                telo[0].x -= Math.cos(degreesToRadians(hlava.rotation))*(polomer*2);
                telo[0].y -= Math.sin(degreesToRadians(hlava.rotation))*(polomer*2);
            }
            if (varRight == true)
            {
                //hlava.x += xRýchlosť;
                hlava.rotation += rotateSpeed;
            }
            if (varLeft == true)
            {
                //hlava.x -= xRýchlosť;
                hlava.rotation -= rotateSpeed;
            }
            if (varUp == true)
            {
                //hlava.y -= yRýchlosť;
                vy += Math.sin(degreesToRadians(hlava.rotation)) * Rýchlosť;
                vx += Math.cos(degreesToRadians(hlava.rotation)) * Rýchlosť;
            }
            else {
                vy *= friction;
                vx *= friction;
            }
            if (varDown == true)
            {
                //hlava.y += yRýchlosť;
            }
            //hlava.x += vx;
            //hlava.y += vy;
            for(var i:int = 1; i<teloZ; i++)
            {
                //telo[i].x = hlava.x;
                //telo[i].y = hlava.y;
                //dir = Math.atan2(_root["part"+i-1]._y-_root["part"+i]._y, _root["part"+i-1]._x-_root["part"+i]._x)*180/Math.PI;
                //_root["part"+i]._x += Math.cos(dir*Math.PI/180)*8;
                //_root["part"+i]._y += Math.sin(dir*Math.PI/180)*8;
                //teloRýchlosť -= (i/8);
                //var dir:Number = Math.atan2(telo[i-1].y-telo[i].y, telo[i-1].x-telo[i].x)*180/Math.PI;
                //telo[i].x += Math.cos(degreesToRadians(dir))*(teloRýchlosť);
                //telo[i].y += Math.sin(degreesToRadians(dir))*(teloRýchlosť);
                
                //telo[i].x++;
                telo[i].x = telo[i-1].x;
                telo[i].y = telo[i-1].y;
                telo[i].rotation = telo[i-1].rotation;
                var dir:Number = Math.atan2(telo[i-1].y-telo[i].y, telo[i-1].x-telo[i].x)*180/Math.PI;
                telo[i].x -= Math.cos(degreesToRadians(telo[i].rotation))*(polomer*2);
                telo[i].y -= Math.sin(degreesToRadians(telo[i].rotation))*(polomer*2);
            }
            teloRýchlosť = Rýchlosť;
            hlava.y += Math.sin(degreesToRadians(hlava.rotation)) * Rýchlosť;
            hlava.x += Math.cos(degreesToRadians(hlava.rotation)) * Rýchlosť;
            
            if(hlava.x-polomer < 0)
            {
                hlava.x=stage.stageWidth-polomer;
            }
            else if(hlava.x+polomer > stage.stageHeight)
            {
                hlava.x=polomer;
            }
            if(hlava.y-polomer < 0)
            {
                hlava.y = stage.stageHeight-polomer;
            }
            else if(hlava.y > stage.stageHeight)
            {
                hlava.y = polomer;
            }
        }
        public function degreesToRadians(degrees:Number) : Number
        {
            return degrees * Math.PI / 180;
        }
        public function random(Low:int, High:int):int
        {
            return Math.floor(Math.random()*(1+High-Low))+Low;
        }
    }
}

Forked