Lab 9: Sprites and Walls

Goal: Create a landscape of wall objects that the user must navigate around to collect coins. This will help practice using for loops to create and position multiple items.

../../_images/lab9.gif
  • Step 1: Start with one of the move with walls examples. Use either the Move with Walls example or the Move with a Scrolling Screen example.
  • Step 2: If you start with the examples, delete the current wall placement code. You want to create your own.
  • Step 3: Create a more complex arrangement of walls. Make sure the walls don’t allow the user to go off-screen. 6 points, based on how complex the arrangement. See Individually Placing Walls, Placing Walls With A Loop, and Placing Walls With A List for ideas. Just DON’T do the same thing as examples. Make it your own. Also, if you have more than one type of wall block, that’s great. But you don’t need more than one wall list. The physics engine requires all walls be kept in the same list.
  • Step 4: Update the graphics. Use multiple types of blocks for the walls. Maybe change the character. 4 points, one point for each graphic used that wasn’t part of the base example. Remember to put a quick citation in your program just before you load graphics or sounds.
  • Step 5: Add coins (or something) for the user to collect. 4 points, based on the complexity of the coin layout. Remember, you can place coins like we placed wall blocks. If you randomly place coins, you might end up with coins on top of walls. See the “Important Part” around line 75 or so of the example sprite_no_coins_on_walls.py for how to avoid this.
  • Step 6: Keep score of how many coins were collected, and display on-screen. 4 points.
  • Step 7: Add a sound to play each time the user collects a coin. 2 points.

Warning

Don’t move the player twice!

The command self.physics_engine.update() moves the player while checking for walls. The command self.all_sprites_list.update() will move the player WITHOUT checking for walls. Don’t do both commands. You’ll end up “walking through walls.” If you have other sprites to update, update only those sprites. For example: self.coin_list.update().

Additional Challenges

These aren’t required for the lab, but I’ve had students ask in prior years how to do these: