How to make arrow hit target every time?

I know I’m not even close. I’m no mathematician. I just can’t figure out how to adjust the power and arc of the arrow to hit the target every time. Any help would be much appreciated. I’m still new to programming so don’t make fun of me. :cantlook:

My test code on the timeline:


function shoot(e:MouseEvent):void
{
	var distx:Number = enemy.x - tower.x;
	var arc:Number = distx;
	var disty:Number = (enemy.y - arc) - tower.y;
	var angle:Number = Math.atan2(disty, distx);
	var power:Number = distx/25;  
	var vy:Number=Math.sin(angle)*power;
	var vx:Number=Math.cos(angle)*power;
	var arr:Arrow = new Arrow(vx,vy,enemy);
	arr.x = tower.x;
	arr.y = tower.y;
	addChild(arr);
}

Arrow Class:


package  {
	import flash.display.*;
	import flash.events.*;
	
	public class Arrow extends Sprite
	{
		private var gravity:Number = .5;
		private var ux:Number;
		private var uy:Number;
		private var targetMC:MovieClip;
		
		public function Arrow(vx:Number, vy:Number, targetMC:MovieClip)
		{
			this.targetMC = targetMC;
			ux = vx;
			uy = vy;
			addEventListener(Event.ENTER_FRAME, enter_frame);
		}
	
		private function enter_frame(e:Event):void
		{
			var sx:Number = ux;             //distance moved in x dir
			var vy:Number = uy + gravity    //new velocity in y dir
			var sy:Number = uy + gravity/2  //distance moved in y dir
			this.x += sx;
			this.y += sy;
			uy = vy;
			this.rotation = Math.atan2(uy, ux)*180/Math.PI;
			
			if(this.y + this.height/2 >= targetMC.y)
			{
				removeEventListener(Event.ENTER_FRAME, enter_frame);
			}
		}
	
	}
	
}