Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //----------------------------\
- //Main Variables |
- //----------------------------/
- var bulletID:Number = 0;
- var maxSpeed:Number = 5;
- var speed:Number = 0;
- var accel:Number = 0.15;
- var decel:Number = 0.95;
- var backSpeed:Number = 0;
- var maxBackSpeed:Number = -5;
- var healthPoints:Number = 100;
- var cheatsOn:Boolean = false;
- var isMouseDown:Boolean = false;
- var numBullets:Number = 0;
- var ammo:Number = 10;
- var reloadTime:Number = 0;
- var numBullets:Number = 0;
- var numEnemies:Number = 0;
- var bulletList:Array = new Array ();
- var enemyList:Array = new Array ();
- var bulletSpeed:Number = 10;
- var canFire:Boolean = true;
- var radians:Number = Math.PI/180;
- var enemySpeed:Number = 2;
- var turnRate:Number = 0.1;
- var canSpawn:Boolean = true;
- var spDelay:Number = 0;
- var score:Number = 0;
- //zombies
- var moveX:Number = 0;
- var moveY:Number = 0;
- // Timers
- var fireTime:Number = 0;
- var reloadTime:Number = 0;
- //boundry variables
- var tankW = Tank._width /2;
- var tankH = Tank._height /2;
- var stageW = Stage.width;
- var stageH = Stage.height;
- var boundT = 0 + tankH;
- var boundR = stageW - tankW
- var boundL = 0 + tankW;
- var boundB = stageH - 100 - tankH;
- //sound variables
- fire = new Sound ();
- fire.attachSound("Fire")
- //---------------------------------------------------------
- //---------------------------------\
- // Find out if the mouse is down |
- //---------------------------------/
- this.onMouseDown = function() //if Mouse mosue is down, set isMouseDown to true
- {
- isMouseDown = true;
- trace("Down")
- }
- this.onMouseUp = function() //if Mouse mosue is up, set isMouseDown to false
- {
- isMouseDown = false;
- trace("Up")
- }
- //---------------------------------------------------------
- //----------------\
- // Define Angle |
- //----------------/
- Mouse.hide();
- Tank.onEnterFrame = function()
- {
- if(canSpawn == true){ // if canSpawn is equal to true, run the code.
- spawnEnemy() //Run function "spawnEnemy"
- canSpawn = false // set canSpawn to false so the spawn delay can be triggered
- }
- for (i = 0; i <= numEnemies; i++){
- if (Tank.hitTest(enemyList[i]) && speed <= -2){ //if player drives over zombies past a set speed, then kill the zombies.
- enemyList[i].removeMovieClip();
- enemyList.splice(i,1);
- numEnemies--;
- score+=5 // increase score by 5
- }
- if (Tank.hitTest(enemyList[i]) && speed >= 2){//if player reverses over zombies past a set speed, then kill the zombies.
- enemyList[i].removeMovieClip();
- enemyList.splice(i,1);
- numEnemies--;
- score+=5 // increase score by 5
- }
- }
- if(healthPoints <= 0){
- gotoAndStop(2)
- }
- mouseCursor.gotoAndPlay(reloadTime)
- ammoLeft = "Current ammo: " + ammo / 2 // make the text tell us the current ammo
- sped = "Speed: " + Math.round(speed) // make the text tell us the current speed
- turRot = "Turret Rotation: "+ Math.round(Tank.turret._rotation); // make the text tell us the current turret rotation
- tankRot = "Tank Rotation: " + Math.round(Tank._rotation); // make the text tell us the current tank rotation
- hP = "Health Points: " + Math.round(healthPoints) // make the text tell us the current HP
- scoreTxt = "Score : " + score // make the text tell us the current score
- //----------------------------------------------------------
- //----------------\
- // Define Angle |
- //----------------/
- var __x = _xmouse - Tank._x;
- var __y = _ymouse - Tank._y;
- var angle = Math.atan2(__y, __x) * 180 / Math.PI; //make a variable to difine angle so it can be used to rotate the turret
- //----------------------------------------------------------
- mouseCursor._x = _xmouse; //make the crosshair follow the mouse
- mouseCursor._y = _ymouse;
- if(Tank._x > boundR){ //if tank xPos is more than the right boundry, tank xPos = boundL
- Tank._x = boundR;
- trace("At Right Boundry")
- }
- if(Tank._x < boundL){//if tank xPos is less than the left boundry, tank xPos = boundL
- Tank._x = boundL;
- trace("At Left Boundry")
- }
- if(Tank._y < boundT){ //if tank xPos is less than the left boundry, tank xPos = boundL
- Tank._y = boundT;
- trace ("At Top Boundry")
- }
- if(Tank._y > boundB){
- Tank._y = boundB;
- trace("At Bottom Boundry")
- }
- //-------------------------\
- //Character movement code |
- //-------------------------/
- if (Key.isDown(Key.UP))// if the up key has been pressed increase speed by acceleration until it is equal to maxSpeed
- {
- trace("Up key is pressed");
- if (speed <= maxSpeed){
- speed += accel;
- }
- }else //else times the speed by decel
- {
- speed *= decel;
- }
- if(Key.isDown(Key.DOWN)){ //if the down key has been pressed decrease speed by acceleration
- if(Math.abs(speed) <= maxSpeed){ // Math.abs so the speed can go into negative
- speed -= accel;
- }
- }
- else{ //else times the speed by decel
- speed *= decel;
- }
- if (Key.isDown(Key.RIGHT))// if the right key is pressed,rotate the tank right.
- {
- trace("Right Rotation");
- this._rotation += 2;
- }
- if (Key.isDown(Key.LEFT))// if the left key is pressed,rotate the tank left.
- {
- trace("Left Rotation");
- this._rotation -= 2;
- }
- //----------------------------------------------------------
- //---------------\
- // Trigonometry |
- //---------------/
- this._y += Math.sin(Tank._rotation / 180 * Math.PI) * speed;// allows the tank to move forward in the direction it is facing
- this._x += Math.cos(Tank._rotation / 180 * Math.PI) * speed;
- //----------------------------------------------------------
- //------------------\
- //Turret Rotation |
- //------------------/
- Tank.turret._rotation = angle - Tank._rotation; // makes the turret follow the mouse.
- //----------------------------------------------------------
- //--------------------\
- // Bullets & reloading|
- //--------------------/
- if (ammo <= 0){ // if ammo is less than or equal to 0, run the "reload" function with the number 100
- reload(100); // givees it a reload time so you can't spam shoot.
- }
- if(isMouseDown == true){ //if mouse is down,ammo >= 1 and canFire = true, run the "shoot" function,decrease the ammo by 1 and set canFire to false.
- if (ammo >= 1){// this will place a delay between each fire to make it feel more realisitc
- if (canFire == true){
- shoot()
- ammo -=1
- canFire = false
- }
- }
- }
- //------------------------------------------------------------------
- //----------------\
- // Function calls |
- //----------------/
- rotateBullets()
- fireDelay(40)
- spawnDelay(60)
- moveEnemy()
- deathBox()
- //------------------------------------------------------------------
- }; // onEnterFrame end
- function deathBox(){ // function to kill bullets when it collides with the black boxes around the map.
- for(i = 1; i <= numBullets; i++){
- if(bulletList[i].hitTest(box1)){
- bulletList[i].removeMovieClip();
- }
- if(bulletList[i].hitTest(box2)){
- bulletList[i].removeMovieClip();
- }
- if(bulletList[i].hitTest(box3)){
- bulletList[i].removeMovieClip();
- }
- if(bulletList[i].hitTest(box4)){
- bulletList[i].removeMovieClip();
- }
- }
- }
- function spawnEnemy() {
- numEnemies++; //increase the numEnemies variable by 1 everytime an enemy is spawned.
- trace("Number of Enemies: " + numEnemies); //tells us how many enemys there are.
- enemyList[numEnemies] = this.attachMovie("Enemy", "EnemyName" + numEnemies, this.getNextHighestDepth(), { _x:-50 , _y:100}); // spawn enemies at the x cord of -50 so its slightly off the screen.
- }
- function moveEnemy(){
- if (numEnemies > 0){ //if there are moire than one enemy on the screen.
- for(num = 1; num <= numEnemies; num++) {
- doFollow(enemyList[num],Tank,1) //make the enemys walk towards to tank
- if(Tank.hitTest(enemyList[num])){ //if the enemys hit the tank,decrease health by 0.03 every frame
- healthPoints-=0.03
- }
- for(i = 1; i <= numBullets; i++) {
- if(enemyList[num].hitTest(bulletList[i])){ //if bullet hits an enemy remove the bullet
- enemyList[num].removeMovieClip();
- enemyList.splice(num,1);
- numEnemies--;
- bulletList[i].removeMovieClip();
- score+=10//increase score when an enemy is killed
- }
- }
- }
- }
- }
- function shoot() {
- numBullets++;//increase the numBullets variable by 1 everytime a bullet is spawned.
- bulletList[numBullets] = this.attachMovie("Bullet", "bulletName" + numBullets, this.getNextHighestDepth(), { _x:Tank._x , _y:Tank._y});
- ammo--; //decrease ammo by one
- bulletList[numBullets]._rotation = Tank.turret._rotation + Tank._rotation //make the bullet face the direction the turret it rotated to
- fire.start();//play the souund "fire" when you shoot.
- }
- function rotateBullets(){
- for(num = 1; num <= numBullets; num++) {
- bulletList[num]._y += Math.sin(bulletList[num]._rotation / 180 * Math.PI) * bulletSpeed; //makes the bullets travel towards the direction it is facing.
- bulletList[num]._x += Math.cos(bulletList[num]._rotation / 180 * Math.PI) * bulletSpeed;
- }
- }
- function reload (time:Number){ //1 second = 24,5 seconds = 120.
- if (reloadTime < time){//if reload is less than time, increase roloadTime every frame and set canFire to false
- reloadTime ++
- canFire = false
- }
- if (reloadTime >= time){//if reload is more than or eqial to time, set ammo to 10,set relaodTime to 0 and canFire to true.
- ammo = 10
- reloadTime = 0
- canFire = true
- }
- }
- function doFollow(follower:MovieClip, target:MovieClip, enemySpeed:Number)
- {
- var originalSpeed:Number = enemySpeed
- var distanceX:Number = target._x - follower._x;//calculate distance between follower and target
- var distanceY:Number = target._y - follower._y;
- distanceTotal = Math.sqrt(distanceX * distanceX + distanceY * distanceY);//get total distance as one number
- if (target.hitTest(follower)){
- enemySpeed = 0;
- }else{
- enemySpeed = originalSpeed;
- }
- var moveDistanceX:Number = turnRate * distanceX / distanceTotal;//calculate how much to move
- var moveDistanceY:Number = turnRate * distanceY / distanceTotal;
- moveX += moveDistanceX;//increase current speed
- moveY += moveDistanceY;
- var totalmove = Math.sqrt(moveX * moveX + moveY * moveY);//get total move distance
- moveX = enemySpeed * moveX / totalmove;//apply easing
- moveY = enemySpeed * moveY / totalmove;
- follower._x += moveX;//move follower
- follower._y += moveY;
- follower._rotation = 180 * Math.atan2(moveY, moveX) / Math.PI;//rotate follower toward target
- }
- function fireDelay(i:Number){
- if (canFire == false){//the function for the fireDelay with chnagable delay times.
- if (fireTime < i){
- fireTime ++
- }
- if (fireTime >= i){//if fireTime is more than or equal to i then fireTime will be reset and canFire will be set to true
- fireTime = 0
- canFire = true
- }
- }
- }
- function spawnDelay (i:Number){//a fumction to prevent a flood of zombies spawning at once, Changable times to increase or descrease the delay.
- if (canSpawn == false){
- if (spDelay < i){
- spDelay++
- }
- }
- if (spDelay>= i){//if spDelay is more than or equal to i then spDelay will be reset and ccanSpawn will be set to true
- spDelay = 0
- canSpawn = true
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment