Snake Game
Snake Game
♥0 |
Line 162 |
Modified 2011-10-18 00:33:41 |
MIT License
archived:2017-03-20 01:36:56
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;
}
}
}