Code in frame 1 layer 1


//threeCars

//has three different cars working simultaneously



init();



function init(){

  //initialization



  //direction constants

  _root.NORTH = 0;

  _root.NORTHWEST = 1;

  _root.WEST = 2;

  _root.SOUTHWEST = 3;

  _root.SOUTH = 4;

  _root.SOUTHWEST = 5;

  _root.WEST = 6;

  _root.NORTHWEST = 7;



  //randomly position cars



  reset(car1);

  reset(car2);

  reset(car3);



  //set monster initial values

  monster.dx = 0;

  monster.dy = 0;

  monster.speed = 0;

  monster.dir = _root.NORTH;



} // end init



monster.onEnterFrame = function(){

  checkKeys();

  turn(monster);

  move(monster);



  //move the cars, too

  move(car1);

  move(car2);

  move(car3);

} // end monster enterFrame



function checkKeys(){

  //check keyboard to move monster

  if (Key.isDown(Key.UP)){

    trace ("up");

    monster.speed++;

    if (monster.speed > 8){

      monster.speed = 8;

    } // end if



  } // end if



  if (Key.isDown(Key.DOWN)){

    monster.speed--;

    if (monster.speed < -3){

      monster.speed = -3;

    } // end if

  } // end if



  if (Key.isDown(Key.RIGHT)){

    monster.dir++;

    if (monster.dir > 7){

      monster.dir = 0;

    } // end if

  } // end if



  if (Key.isDown(Key.LEFT)){

    monster.dir--;

    if (monster.dir < 0){

      monster.dir = 7;

    } // end if

  } // end if



} // end checkKeys



function reset(sprite){

  //given a car sprite, resets its parameters

  sprite._x = Math.random() * Stage.width;

  sprite._y = Math.random() * Stage.height;

  sprite.dir = Math.random() * 8;

  sprite.dir = Math.floor(sprite.dir);

  sprite._rotation = sprite.dir * 45;

  sprite.speed = Math.random() * 10;

  turn(sprite);

} // end reset



function move(sprite){

  //moves any sprite, wrapping around boundaries



  //move

  sprite._x += sprite.dx;

  sprite._y += sprite.dy;



  //rotate

  sprite._rotation = sprite.dir * 45;

  

  //check boundaries - wrap all directions

  if (sprite._x > Stage.width){

    sprite._x = 0;

  } // end if



  if (sprite._x < 0){

    sprite._x = Stage.width;

  } // end if



  if (sprite._y > Stage.height){

    sprite._y = 0;

  } // end if



  if (sprite._y < 0){

    sprite._y = Stage.height;

  } // end if

} // end move



function turn(sprite){

  //given a sprite with a dir and speed, calculates dx and dy values

  switch (sprite.dir){

    case 0:

      sprite.dx = 0 * sprite.speed;

      sprite.dy = -1 * sprite.speed;

      break;

    case 1:

      sprite.dx = .7 * sprite.speed;

      sprite.dy = -.7 * sprite.speed;

      break;

    case 2:

      sprite.dx = 1 * sprite.speed;

      sprite.dy = 0 * sprite.speed;

      break;

    case 3:

      sprite.dx = .7 * sprite.speed;

      sprite.dy = .7 * sprite.speed;

      break;

    case 4:

      sprite.dx = 0 * sprite.speed;

      sprite.dy = 1 * sprite.speed;

      break;

    case 5:

      sprite.dx = -.7 * sprite.speed;

      sprite.dy = .7 * sprite.speed;

      break;

    case 6:

      sprite.dx = -1 * sprite.speed;

      sprite.dy = 0 * sprite.speed;

      break;

    case 7:

      sprite.dx = -.7 * sprite.speed;

      sprite.dy = -.7 * sprite.speed;

      break;

    default:

      trace ("Something went wrong here...");

      break;

  } // end switch

} // end turn