All pastes #837895 Raw Edit

Someone

public text v1 · immutable
#837895 ·published 2007-12-30 00:01 UTC
rendered paste body
package{
	import flash.display.*
	//CHANGE "racer" to your bot's name and save this file with the same name!! 
	//Rename sampleBot to the CLASS NAME (under linkage) of your bot's movieClip. Be sure to send in a .fla with that inside and everything custom named. 
	public class claxor extends claxorBot {
		// do NOT change these
		public var xvel:Number // the x velicity
		public var yvel:Number // the y velocity
		public var rot:Number // the current rotation
		public var curNode:Number // the number of the node you are approaching
		public var shotTime:Number // the time left till your next shot
		public var nitro:Number // the amount of feul left for turbo
		public var alive:Boolean // if your car is still active
		public var lap:Number // the lap you are on
		public var lapCheck:Boolean // internal stuff
		public var botName:String // your bot's name
		
		// The following variables determine the balencing of your bot. You may have a max of 25 points used and a max of 10 per attribute.
		public var traction:Number // Determines how much your bot drifts (0 means lots of drift, 10 keel means no drift)
		public var turning:Number // Determines how fast your bot can turn (0 means no turning, 10 means massive turning)
		public var accel:Number // Determines how well your bot accelerates (0 means no acceleration, 10 means massive acceleration)
		public var topSpeed:Number // Determines the top speed of your bot (0 is low, 10 is high)
		public var turboPower:Number // Determines how effective turbo is (0 is low boost, 10 is large boost)
		public var fireRate:Number // Determines how many shots you can fire per 10 seconds
		
		//you can change these. use these to control your bot.
		public var turn:Number // a number from -1 to 1 that determines how much you are turning
		public var gas:Number // a number from 0 to 1 that determines how much you are accelerating
		public var shooting:Boolean // if true, you will shoot the next time you can
		public var shotAngle:Number // determines what angle you shoot towards (degrees)
		public var turbo:Boolean // if true, you are using turbo
		
		//declare any personel variables here:
		public var ang:Number
		public var xdist:Number
		public var ydist:Number
		public var xdist2:Number
		public var ydist2:Number
		public var xdist3:Number
		public var ydist3:Number
		public var xdist4:Number
		public var ydist4:Number
		public var dist:Number
		public var spd:Number
		public var spdsig:Number
		public var tmp:Number
		public var tmp2:Number
		public var tmp3:Number
		public var tmp4:Number
		public var tmp5:Number
		public var drift:Number
		public var tspd:Number
		public var cc:Number
		public var cc2:Number
		public var wt:Number
		public var spdl:Number
		public var ccsl:Number
		public var dl:Number
		public var ccdl:Number
		public var cca:Number
		public var cc2a:Number
		public var wtm:Number
		public var dsl:Number
		public var dltt:Boolean
		public var dltta:Number
		public var curNodeC:Number
		public var tx:Number
		public var ty:Number
		public var f:Number

		
		//rename this function to your bot's name as well
		public function claxor(){
			//Set your attributes
			
			
			traction = 0
			turning = 7
			accel = 10
			topSpeed = 8
			turboPower = 0
			fireRate = 0
			botName = "Claxor"
			tspd=7;
			spdl=4;
			drift=0;
			cc=-14;
			ccdl=-10;
			dl=70;
			wt=70;
			wtm=35;
			cc2=10;
			ccsl=1.5;
			dsl=5;
			f=0;
		}
		public function onFrame(racers:Array,nodes:Array,bullets:Array){
			f++
			curNodeC=curNode;
			if(Math.abs(this.x-nodes[curNode][0])<25 && Math.abs(this.y-nodes[curNode][1])<25){
				curNodeC=(curNode+1)%nodes.length;
			}
			trace(spd);
			
			if(nodes.length>2224){
				tspd=7;
				spdl=1;
				drift=10;
				cc=-17;
				ccdl=-13;
				dl=120;
				wt=95;
				wtm=35;
				cc2=15;
				ccsl=1.5;
				dsl=6;
				curNodeC=curNode;
				if(Math.abs(this.x-nodes[curNode][0])<25 && Math.abs(this.y-nodes[curNode][1])<25){
					curNodeC=(curNode+1)%nodes.length;
				}
				
				dltt=false;
				//this acts as your enter frame
				//the following code is just as a sample:
				turbo=false;
				gas = 1
				xdist=nodes[curNodeC][0] - x;
				ydist=nodes[curNodeC][1] - y;
				xdist==0?xdist=.1:0;
				ydist==0?ydist=.1:0;
				
				dist=Math.sqrt(xdist*xdist+ydist*ydist);
				spd=Math.sqrt(xvel*xvel+yvel*yvel);
				
				tmp=curNodeC+1;
				if(tmp==nodes.length){
					tmp=0;
				}
				
				
				tmp2=tmp3=tmp4=tmp5=0;
				nodes[curNodeC][0]>nodes[tmp][0]?tmp2=-1:nodes[curNodeC][0]<nodes[tmp][0]?tmp2=1:nodes[curNodeC][1]>nodes[tmp][1]?tmp3=-1:nodes[curNodeC][1]<nodes[tmp][1]?tmp3=1:0;
				
				if(curNodeC==0){
					tmp4=1;
	
				} else {
					nodes[curNodeC][0]>nodes[curNodeC-1][0]?tmp4=1:nodes[curNodeC][0]<nodes[curNodeC-1][0]?tmp4=-1:nodes[curNodeC][1]>nodes[curNodeC-1][1]?tmp5=1:nodes[curNodeC][1]<nodes[curNodeC-1][1]?tmp5=-1:0
				}
				
				xdist2=xdist;
				ydist2=ydist;
				
				cca=(cc*2+cc*((10-spd)/10))/3
				
				if((nodes[curNodeC][0]-nodes[(curNodeC+1)%nodes.length][0])*(nodes[curNodeC][0]-nodes[(curNodeC+1)%nodes.length][0])+(nodes[curNodeC][1]-nodes[(curNodeC+1)%nodes.length][1])*(nodes[curNodeC][1]-nodes[(curNodeC+1)%nodes.length][1])<dl*dl){
					xdist2+=-1*tmp2*ccdl;
					xdist2+=tmp4*ccdl;
					ydist2+=-1*tmp3*ccdl;
					ydist2+=tmp5*ccdl;
					
					dltt=true;
				} else {
					xdist2+=-1*tmp2*cca;
					xdist2+=tmp4*cca;
					ydist2+=-1*tmp3*cca;
					ydist2+=tmp5*cca;
				}
				
				xdist3=xdist;
				ydist3=ydist;
				
				cc2a=(cc2*2+cc2*((10-spd)/10))/3
				
				xdist3+=tmp4*wt*-.8;
				ydist3+=tmp3*cc2a*-1;
				ydist3+=tmp5*wt*-.8;
				xdist3+=tmp2*cc2a*-1;
				
				xdist4=xdist;
				ydist4=ydist;
				xdist4+=tmp4*-100;
				ydist4+=tmp5*-100;
				
				
				
				dist>200-nitro||nitro>=500?turbo=true:0;
				spdsig=1/(1+Math.pow(2.7,spd))
				
				if(dist<160){
					gas=(tspd-spd);
					if(dltt){
						gas=(dsl-spd);
					}
					
					gas>1?gas=1:gas<-1?gas=-1:0;
				}
				if(dist>190){
					ang = Math.atan2(ydist4,xdist4) * 180/Math.PI
				} else if(dist>(wt+wtm*((spd)/10))/*&&spd>ccsl*/){
					ang = Math.atan2(ydist3,xdist3) * 180/Math.PI
				} else if(dist>7*(spd)+4 || spd<spdl){
					ang = Math.atan2(ydist2,xdist2) * 180/Math.PI
					
					
					
				} else if(spd<1){
					
				} else {
					
					
					//tmp2=xdist+(50*(nodes[tmp][0]-nodes[curNodeC][0])/Math.abs((nodes[tmp][0]-nodes[curNodeC][0])));
					//tmp3=ydist+(50*(nodes[tmp][1]-nodes[curNodeC][1])/Math.abs((nodes[tmp][1]-nodes[curNodeC][1])));
					
					
					
					if(spd>2){
						if(tmp2){
							tmp3=-drift*tmp5;
						} else {
							tmp2=-drift*tmp4;
						}
					}
					
					trace(tmp2+", "+tmp3);
					
					
					ang = Math.atan2(tmp3,tmp2) * 180/Math.PI
					
					
				}
				
				rot<0?tmp=360+rot%360:tmp=rot%360
				ang<0?ang=ang+360:0
				tmp-ang>180?tmp-=360:tmp-ang<-180?tmp+=360:0
				turn=ang-tmp;
				turn*=1.5;
				turn>1?turn=1:turn<-1?turn=-1:0;
			} else {
				dltt=false;
				//this acts as your enter frame
				//the following code is just as a sample:
				turbo=false;
				gas = 1
				xdist=nodes[curNodeC][0] - x;
				ydist=nodes[curNodeC][1] - y;
				xdist==0?xdist=.1:0;
				ydist==0?ydist=.1:0;
				
				dist=Math.sqrt(xdist*xdist+ydist*ydist);
				spd=Math.sqrt(xvel*xvel+yvel*yvel);
				
				tmp=curNodeC+1;
				if(tmp==nodes.length){
					tmp=0;
				}
				
				if((nodes[curNodeC][0]-nodes[(curNodeC+1)%nodes.length][0])*(nodes[curNodeC][0]-nodes[(curNodeC+1)%nodes.length][0])+(nodes[curNodeC][1]-nodes[(curNodeC+1)%nodes.length][1])*(nodes[curNodeC][1]-nodes[(curNodeC+1)%nodes.length][1])<dl*dl){
					dltt=true;
				}
				
				
				tmp2=tmp3=tmp4=tmp5=0;
				nodes[curNodeC][0]>nodes[tmp][0]?tmp2=-1:nodes[curNodeC][0]<nodes[tmp][0]?tmp2=1:nodes[curNodeC][1]>nodes[tmp][1]?tmp3=-1:nodes[curNodeC][1]<nodes[tmp][1]?tmp3=1:0;
				
				if(curNodeC==0){
					tmp4=1;
				} else {
					nodes[curNodeC][0]>nodes[curNodeC-1][0]?tmp4=1:nodes[curNodeC][0]<nodes[curNodeC-1][0]?tmp4=-1:nodes[curNodeC][1]>nodes[curNodeC-1][1]?tmp5=1:nodes[curNodeC][1]<nodes[curNodeC-1][1]?tmp5=-1:0
				}
				
				xdist2=xdist;
				ydist2=ydist;
				
				cca=(cc*2+cc*((10-spd)/10))/3
				
				if(dltt){
					xdist2+=-1*tmp2*ccdl;
					xdist2+=tmp4*ccdl;
					ydist2+=-1*tmp3*ccdl;
					ydist2+=tmp5*ccdl;
					
					
				} else {
					xdist2+=-1*tmp2*cca;
					xdist2+=tmp4*cca;
					ydist2+=-1*tmp3*cca;
					ydist2+=tmp5*cca;
				}
				
				xdist3=xdist;
				ydist3=ydist;
				
				cc2a=(cc2*2+cc2*((10-spd)/10))/3
				
				xdist3+=tmp4*wt*-1;
				ydist3+=tmp3*cc2a*-1;
				ydist3+=tmp5*wt*-1;
				xdist3+=tmp2*cc2a*-1;
				
				xdist4=xdist;
				ydist4=ydist;
				xdist4+=tmp4*-100;
				ydist4+=tmp5*-100;
				
				
				
				dist>200-nitro||nitro>=500?turbo=true:0;
				spdsig=1/(1+Math.pow(2.7,spd))
				
				if(dist<160){
					gas=(tspd-spd);
					if(dltt){
						gas=(dsl-spd);
					}
					
					gas>1?gas=1:gas<-1?gas=-1:0;
				}
				dltta=0;
				dltt?dltta=1:0;
				if(dist>190){
					ang = Math.atan2(ydist4,xdist4) * 180/Math.PI
					tx=xdist4;
					ty=ydist4;
				} else if(dist>(wt+wtm*((spd)/10))/*&&spd>ccsl*/){
					ang = Math.atan2(ydist3,xdist3) * 180/Math.PI
					tx=xdist3;
					ty=ydist3;
				} else if(dist>1.1*(spd*spd)+0*dltta || spd<spdl){
					ang = Math.atan2(ydist2,xdist2) * 180/Math.PI
					tx=xdist2;
					ty=ydist2;
					
					
				} else if(spd<1){
					
				} else {
					
					
					//tmp2=xdist+(50*(nodes[tmp][0]-nodes[curNodeC][0])/Math.abs((nodes[tmp][0]-nodes[curNodeC][0])));
					//tmp3=ydist+(50*(nodes[tmp][1]-nodes[curNodeC][1])/Math.abs((nodes[tmp][1]-nodes[curNodeC][1])));
					
					
					
					if(spd>2){
						if(tmp2){
							tmp3=-drift*tmp5;
						} else {
							tmp2=-drift*tmp4;
						}
					}
					
					//trace(tmp2+", "+tmp3);
					
					
					ang = Math.atan2(tmp3,tmp2) * 180/Math.PI
					tx=tmp4*50;
					ty=tmp3*50;
					
				}
				
				rot<0?tmp=360+rot%360:tmp=rot%360
				ang<0?ang=ang+360:0
				tmp-ang>180?tmp-=360:tmp-ang<-180?tmp+=360:0
				turn=ang-tmp;
				turn*=1.5;
				turn>1?turn=1:turn<-1?turn=-1:0;
				
				turbo=false;
				if((spd<10*((Math.min(nitro,180))/180)||nitro==500)&&gas==1){
					turbo=true;
				}
				//turbo=false;
				dist>200-nitro||nitro>=500?turbo=true:0;
				
				/*this.clax.rotation=-this.rotation
				this.clax.targetp.x=tx;
				this.clax.targetp.y=ty;*/
				
				shooting=false;
				if(f>30){
					shooting=true;
				}
				
				shotAngle = Math.atan2(1,0)*180/Math.PI
			}
		}
	}
}