An object of the Sound class
The only thing new in Listing 2 is the instantiation of the object of type Sound . As you can see, the syntax for instantiation of a Sound object is essentially the same as for instantiating an Image object.
Add a red sprite
Listing 3 calls the add method of the ArrayList class to add a red sprite to the beginning of the ArrayList object. (Actually it add a reference to that object and not the object itself.)
You are already familiar with the constructor parameters (shown in Listing 3 ) for a Sprite01 object.
Listing 3 . Add a red sprite to the ArrayList object. |
---|
sprites.add(new Sprite01(
redBallImage,//imagebackgroundWidth/2.0f,//initial position
backgroundHeight/2.0f,//initial position(random.nextFloat()>0.5) ? 1f : -1f,//direction
(random.nextFloat()>0.5) ? 1f : -1f,//direction
0.1f+random.nextFloat()*2.0f,//step size0.1f+random.nextFloat()*2.0f,//step size
0.5f+random.nextFloat()*1.5f,//scalenew Color(1.0f,1.0f,1.0f)));//color filter |
Populate the ArrayList object
Listing 4 uses a for loop and the value of the variable named numberSprites (see Listing 1 ) to add 1000 green Sprite01 object references to the ArrayList object.
Listing 4 . Populate the ArrayList object. |
---|
for(int cnt = 0;cnt<numberSprites;cnt++){
sprites.add(new Sprite01(greenBallImage,//image
backgroundWidth*random.nextFloat(),//positionbackgroundHeight*random.nextFloat(),//position
(random.nextFloat()>0.5) ? 1f : -1f,//direction
(random.nextFloat()>0.5) ? 1f : -1f,//direction
0.1f+random.nextFloat()*2.0f,//step size0.1f+random.nextFloat()*2.0f,//step size
random.nextFloat()*1.0f,//scalenew Color(1.0f,1.0f,1.0f)));//color filter
}//end for loopgc.setTargetFrameRate(targetFPS);//set frame rate
}//end init |
Listing 4 also sets the target frame rate and signals the end of the init method.
The update method
The overall behavior of the update method is to use a for loop to process the red sprite against each of the green sprites and to take appropriate actions when a collision between the red sprite and agreen sprite occurs.
The update method begins in Listing 5 .
Listing 5 . Beginning of the update method. |
---|
public void update(GameContainer gc, int delta)
throws SlickException{//Access to the first sprite in the ArrayList object.
Sprite01 redBallSprite = sprites.get(0);//Do the following for every sprite in the ArrayList
// objectfor(int cnt = 0;cnt<sprites.size();cnt++){
//Get a reference to the Sprite01 object.Sprite01 thisSprite = sprites.get(cnt);//Ask the sprite to move according to its properties
thisSprite.move();//Ask the sprite to bounce off the edge if it is at
// an edge.thisSprite.edgeBounce(
backgroundWidth,backgroundHeight); |
Mostly same as before
The code in Listing 5 is mostly the same as code that you have seen before, so further explanation should not be necessary.
Test for a collision
The code in Listing 6 is new to this module. This code calls the isCollision method of the Sprite01 class to test for a collision between the current green sprite and the red sprite.