Übung 8: Sprites

../../_images/lab_8.gif
  • Make sure you understand the code from Sprites und Kollisionen. The example code there is great to get started with.

  • Create a player-character sprite. Pick your own image for the sprite, from the web or from Kenney.nl.

  • Allow the user to move the player move by the keyboard, mouse, or game pad. Your choice. If you use the mouse, make sure you hide the cursor. The Sprites und Kollisionen chapter uses the mouse, you can also look at the examples on the Arcade website for Sprite Player Movement. These examples show mouse, keyboard, improved keyboard, and the game controller.

  • Create „good“ sprites. Pick your own image for the good sprite.

  • Erhöhe die Punktzahl für jedes eingesammelte gute Sprite. Spiele einen „guten“ Sound ab, wenn der Benutzer diesen Gegenstand sammelt.

  • Create „bad“ sprites. Pick your own image for the bad sprite.

  • Lasse für jedes böse Sprite die Punktzahl sinken. Spiele einen „schlechten“ Sound ab, wenn der Benutzer diesen Gegenstand einsammelt.

Bemerkung

A common mistake at this stage is to overwrite your list:

hit_list = arcade.check_for_collision_with_list(self.player_sprite, self.good_sprite_list)
hit_list = arcade.check_for_collision_with_list(self.player_sprite, self.bad_sprite_list)
for good_sprite in hit_list:
    # Process
for bad_sprite in hit_list:
    # Process

This would cause bad sprites to be processed twice, because the original hit_list is overwritten. Instead try:

hit_list = arcade.check_for_collision_with_list(self.player_sprite, self.good_sprite_list)
for good_sprite in hit_list:
    # Process
hit_list = arcade.check_for_collision_with_list(self.player_sprite, self.bad_sprite_list)
for bad_sprite in hit_list:
    # Process

or:

good_hit_list = arcade.check_for_collision_with_list(self.player_sprite, self.good_sprite_list)
bad_hit_list = arcade.check_for_collision_with_list(self.player_sprite, self.bad_sprite_list)
for good_sprite in good_hit_list:
    # Process
for bad_sprite in bad_hit_list:
    # Process
  • Animate/move the good sprites. Pick any of the motions we showed, such as move and reset, bounce, go in circles, or a pattern. You can even make your own. Try a sine-waves!

  • Bewege die bösen Sprites. Bewege sie anders als die Guten.

  • Wenn die Länge der Liste der guten Sprites Null ist, verschiebe die Sprites oder die Spielfigur nicht mehr. „Friere“ das Spiel ein. Beachte dazu, in welcher Zeile der Methode update in der Hauptfensterklasse die Sprites verschoben werden. Führe diese Zeile dann nur aus, wenn du gute Sprites hast. (Überprüfe die Länge der Sprite-Liste.) Wenn du das zum Laufen gebracht hast, tue etwas Ähnliches in on_mouse_motion.

  • Wenn die Länge der guten Sprite-Liste Null ist, zeichne „Game Over“ auf dem Bildschirm.

  • Add, commit und push mit git.

  • Gib eine URL für dein Projekt ab.