The code in Listing 8 is essentially the same as code that I explained in an earlier module so no explanation beyond the embedded comments should benecessary.
The overridden Update method
The overridden Update method begins in Listing 9 .
Listing 9 . Beginning of the overridden Update method.
protected override void Update(GameTime gameTime) {//Tell all the spiders in the list to move.
for(int cnt = 0;cnt<spiders.Count;cnt++) {
spiders[cnt].Move(gameTime);
}//end for loop//Tell all the ladybugs in the list to move.
for(int cnt = 0;cnt<ladybugs.Count;cnt++) {
ladybugs[cnt].Move(gameTime);
}//end for loop
The code in Listing 9 is essentially the same as code that I have explained in earlier modules, so no further explanation should be necessary.
A for loop that controls the collision testing
Listing 10 shows the beginning of a for loop that causes each ladybug Sprite object to test for a collision with the spiders in the list of spiders once during each iteration of the game loop.
If a ladybug detects a collision with a spider, the action described earlier is taken.
Listing 10 . Beginning of a for loop that controls the collision testing.
for(int cnt = 0;cnt<ladybugs.Count;cnt++) {
Not every spider is tested during each iteration
If a ladybug detects a collision with a spider, the remaining spiders in the list are not tested by that ladybug during that iteration of thegame loop. In other words, if a ladybug's rectangle intersects the rectangles belonging to two or more spiders, only the spider closest to the top of the listwill register a collision.
Test for a collision
The code that tests for a collision is shown in Listing 11 .
Listing 11 . Test for a collision.
//Test for a collision between this ladybug and
// all of the spiders in the list of spiders.Sprite target =
ladybugs[cnt].IsCollision(spiders);
if(target != null) {//There was a collision. Cause the spider to
// move 128 pixels to the right.target.Position =
new Vector2(target.Position.X + 128,target.Position.Y);
The first statement in Listing 11 calls the IsCollision method on the current ladybug object, passing a reference to the list of spiders as a parameter. As you learned earlier,this will cause the ladybug object to test each spider in the list for a collision until either a collision is found or the list is exhausted.
Return a reference to a spider or null
When the IsCollision method returns and control moves to the beginning of the if statement, the variable named target will either contain null , (meaning that no collision was detected), or will contain a reference to thespider object involved in a collision.
If a collision was detected...
The body of the if statement shown in Listing 11 is executed if a collision was detected and the target variable does not contain null. In this case, the X component of the spider's position vector isincreased by a value of 128. This will cause the spider to move 128 pixels to the right the next time it is drawn.