package { import flash.events.Event; import flash.display.MovieClip; import flash.geom.Point; import flash.utils.getTimer; /* * * IAT 167 - Week 7 * Tower Defense Game * Janelynn Chan, 301178319, D102 * */ public class Bullet extends MovieClip implements IGameDisplayObject { public static const BULLET_COLOR:int = 0xFFFFFF; public static const DAMAGE:int = 5; public static const MAX_SPEED:int = 5; public var damage:int = DAMAGE; public var target:Enemy; public var nextLocation:Point; public var lastTime:int = 0; public var turret:Turret; public var xSpeed:Number; public var ySpeed:Number; private var maxSpeed:Number = MAX_SPEED; public function Bullet(startX:Number, startY:Number, inpTarget:Enemy) { super(); this.x = startX; this.y = startY; target = inpTarget; init(); } public function hitTarget():Boolean { var target:Enemy; var returnVal:Boolean = false; if (this.hitTestObject(target)) { returnVal = true; } return returnVal; } /* INTERFACE IGameDisplayObject */ public function init():void { nextLocation = new Point(target.x, target.y); this.graphics.beginFill(BULLET_COLOR); this.graphics.drawCircle(0,0,2); this.graphics.endFill(); } public function update():void { var yDist:Number=target.y+12.5 - this.y;//how far this guy is from the enemy (x) var xDist:Number=target.x+12.5 - this.x;//how far it is from the enemy (y) var angle:Number=Math.atan2(yDist,xDist);//the angle that it must move ySpeed=Math.sin(angle) * maxSpeed;//calculate how much it should move the enemy vertically xSpeed=Math.cos(angle) * maxSpeed;//calculate how much it should move the enemy horizontally //move the bullet towards the enemy nextLocation = new Point(target.x, target.y); nextLocation.x += xSpeed; nextLocation.y += ySpeed; } public function render():void { this.x = nextLocation.x; this.y = nextLocation.y; } public function dispose():void { } } }