# Jane, Stop this crazy thing?

**URL:** <https://forum.kirupa.com/t/jane-stop-this-crazy-thing/37651>\
**Category:** Uncategorized\
**Created:** [December 1, 2003, 8:54pm UTC](https://forum.kirupa.com/t/jane-stop-this-crazy-thing/37651 "2003-12-01T20:54:14Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![hds](https://avatars.discourse-cdn.com/v4/letter/h/bb73d2/32.png) [@hds](https://forum.kirupa.com/u/hds)\
**Post date:** [December 1, 2003, 8:54pm UTC](https://forum.kirupa.com/t/jane-stop-this-crazy-thing/37651/1 "2003-12-01T20:54:14Z")

</div>

Hey. I have a subscription the Computer Arts Magazine. A few months ago they dedicated an entire magazine to Flash Games. I followed a tutorial to build an Asteroids game. It works fine; except there is no code to slow the ship down. Attached is the file and here is the code on the main movie timeline in frame 2:

[AS]  
initRocks();  
initShip();

// listen for key presses  
spacebarListener = new Object();  
spacebarListener.onKeyDown = fireBullet;  
Key.addListener(spacebarListener);

// start time for game  
gameStartTime = getTimer();

// init score  
score = 0;

function initRocks() {  
rocksArray = new Array ();  
// start rocks at number 0  
rockNum = 0;

```
// create four large rocks, 100%, at random locations
for (i=0; i&lt;4; i++){
	rockMC = newRock(100);
	rockMC._x = 550*Math.random();
	rockMC._y = 400*Math.random();
}

```

}

function newRock(size) {  
// random rock type  
rockType = Math.floor(3\*Math.random()+1);

```
// create a new rock
rockMC = attachMovie("Rock"+rockType, "rock"+rockNum, rockNum++);
					 
// scale it to size					 
rockMC._xscale = size;
rockMC._yscale = size;

// random speed and direction
rockMC.dx = 4*(Math.random()-.5);
rockMC.dy = 4*(Math.random()-.5);

// move every 50 ms
setInterval(moveRocks,50,rockMC);

// store in array
rocksArray.push(rockMC);

return (rockMC);

```

}

function moveRocks(rockMC){  
// move rock  
rockMC.\_x += rockMC.dx;  
rockMC.\_y += rockMC.dy;

```
//wrap around screen
if (rockMC._x &gt; 560) rockMC._x -= 570;
if (rockMC._x &lt; -10) rockMC._x += 570;
if (rockMC._y &gt; 410) rockMC._y -= 420;
if (rockMC._y &lt; -10) rockMC._y += 420;

```

}

function initShip() {  
// start still  
ship.dx = 0;  
ship.dy = 0;

```
// move every 50ms
setinterval(moveShip, 50);

```

}

function moveShip() {  
// rotate ship left and right  
if(Key.isDown(key.LEFT)) {  
ship.\_rotation -= 5;  
}  
if (Key.isDown(Key.RIGHT)) {  
ship.\_rotation += 5;  
}

```
//thrust forward
if(key.isDown(key.UP)) {
	shipAngle = 2.0*Math.PI*(ship._rotation-90)/360.0;
	ship.dx += Math.cos(shipAngle);
	ship.dy += Math.sin(shipAngle);
	
//show thrust animation
if (ship._currentframe == 1){
	ship.gotoAndPlay(2);
 }
}

// move ship
ship._x += ship.dx;
ship._y += ship.dy;

// wrap around screen
if (ship._x &gt; 550) ship._x -= 550;
if (ship._x &lt; 0) ship._x += 550;
if (ship._y &gt; 400) ship._y -= 400;
if (ship._y &lt; 0) ship._y += 400;

// see if ship hit rock
if (getTimer() - gameStartTime &gt; 3000) {
for(var i in rocksArray){
	if (rocksArray*.hitTest(ship._x,ship._y)){
		gotoAndStop("lose")
	  }
	}
}

```

}

function fireBullet(){  
if (Key.getAscii() == 32) {

```
	//create new bullet at level 1000+bulletNum
	bulletMC = attachMovie("Bullet", "bullet"+bulletNum,1000+bulletNum++);
	
	//start at center of ship
	bulletMC._x = ship._x;
	bulletMC._y = ship._y;
	
	//direction of the ship
	shipAngle = 2*Math.PI*(ship._rotation-90)/360;
	bulletMC.dx = Math.cos(shipAngle);
	bulletMC.dy = Math.sin(shipAngle);
	
	//attach movement function
	bulletMC.moveBullet = moveBulletFunction;
	setInterval(bulletMC, "moveBullet", 50, bulletMC)
}

```

}

function moveBulletFunction(){  
//move bullet  
bulletSpeed = 10.0;  
this.\_x += bulletSpeed_this.dx;  
this.\_y += bulletSpeed_this.dy;

```
//see if reached end of screen
if (this._x &gt; 550) this.removeMovieClip();
if (this._x &lt; 0) this.removeMovieClip();
if (this._y &gt; 400) this.removeMovieClip();
if (this._y &lt; 0) this.removeMovieClip();

// loop through rocks to see if bullet hit any
for (var i = _root.rocksArray.length-1; i&gt;=0; i--) {
	if (_root.rocksArray*.hitTest(this._x, this._y)){
		
		//remove bullet
		this.removeMovieClip();
		
		//deal with rock destruction
		_root.hitRock(_root.rocksArray*);
		
		//remove rock from array
		_root.rocksArray.splice(i, 1);
		
		// see if all rocks are gone
		if (_root.rocksArray.length == 0) {
			gotoAndStop("win");
		}
	}
}	

```

}

function hitRock(rockMC){  
if (rockMC.\_xscale \> 25) {  
// if rock is large enough, split in two  
for (var i=0; i\<2; i++){  
// starting at old location  
newRockMC = newRock(rockMC.\_xscale/2);  
newRockMC.\_x = rockMC.\_x;  
newRockMC.\_y = rockMC.\_y;  
}  
}

```
// add to score
score += 10;

// remove old rock
rockMC.removeMovieClip();

```

}[/AS]

Any suggestions on how to give the ship brakes?  
Thank you. Also I am still working on the other game.
