development: resources
wrok / clients
flash games
flash projects
web sites
client list
 
Development (R&D)
resources
current development
 
about artifact interactive
contact

TUTORIAL: Building games in Flash 5
Part3: Enemies and collisions.

Author: David Doull
Date: 11/04/01
Download source files: tut3.zip

Step 1: Creating something to fire at!

First we are going to create some enemy spaceships to fire at.

On the main Timeline create a new layer and call it enemy.
On this new layer draw an enemy spaceship. Select the enemy spaceship, choose Insert and Convert to Symbol (or F8) and make your enemy a movie clip.

Select this enemy movie clip and in the Instance panel set the movie clips name to enemy1 (as shown below).

If you don't want to draw the enemy spaceship you can download this fla; tutorial3_parta.fla, with this step already done for you.

The enemy spaceships:

Our game is going to follow a typical space shooting game structure. The enemy spaceships are going to move across the stage from right to left. The player will need to either dodge or shoot the enemies. If the player shoots an enemy it will explode. If an enemy collides with the player the game will be over.
We will use duplicateMovieCip to create multiple enemy ships.

Random start locations

Our enemies are going to start just to the right of the screen and move left. However if all the enemies started at the same location the game would be very easy and boring. We need to introduce a random element to the game. So all the enemy spaceships will start at the same x-position (to the right of the stage) but will each have a random y-position.

We will also make the enemy speed random, to add an extra challenge to the game.

Lets code

So we want to write code for setting up a random start position and speed for our enemy spaceships. To do this we are going to use something called a function. If you already know about functions you can skip the next three paragraphs.

What are Functions?

Functions let you group together lines of code. Often in game programming you want the same code to be run in different parts of your game. For example, you might want to increase the players score and play an animation if they collect a bonus. You might want the exact same thing to happen if they complete a level. You could write the code for collecting the bonus and then copy and paste it to the part of the game that handles completing a level. OR you could write a function to increase the score and play the animation and call the function whenever you wanted the score increase and animation to happen. The code for a function looks like this

function scoreBonus(){

// code goes here

}

This is known as defining the function - it defines what the function is called and what code makes up the function. scoreBonus is the functions name. Any code contained between the curly brackets will be run when the function is called. 'Calling a function' means running a function and is done in your code simply by typing the function name. So the code scoreBonus(); will call the function resulting in the functions code being run.

NB: Defining the function doesn't actually run the functions code. The code is only run when the function is called.

A reset function

We are going to create a function to set up the start location and speed for the enemy spaceship.

Select the enemy movie clip and open the actions window (Window > actions). Type the following code:

onClipEvent (load) {

 function reset(){
	this._x=600;
	this._y=random(200)+100;
	enemySpeed=random(4)+1;

 }

 reset();

}

The code does two things, it defines the function called reset and then runs this function. The code is all within a load clip event so it will be run when the movie clip first loads.

The line function reset(){ defines the reset function. The next three lines are the reset functions code.

The line this._x=600; just sets the x-coordinate of the enemy spaceship to 600 (just to the right of the stage).

The line this._y=random(200)+100; sets the y-coordinate of the enemy to a random number between 99 and 299. random is a function that is built into flash - what it does is to create a random number between zero and 'one less than the number contained within the brackets'. eg: random(3) will create a random number between 0 and 2 (either 0, 1 or 2). We add 100 to the random number to ensure that the y-coordinate isn't at the very top of the stage.

enemySpeed=random(4)+1; sets a new variable called enemySpeed to a value random between 1 and 4. This will be the number of pixels that the enemy moves per frame.

Finally the line reset(); calls the function - which runs the code we defined above.

You might wonder why we bothered to create the reset function and then to just call the function right after we defined it? We could have just written the three lines of code and left out the function definition altogether. Well in the next step you will see that we also want to call the reset function elsewhere in our code.

 

Next >>