Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| ef:gameprojekt:gruppenseiten:gruppe5:start [2023/01/17 15:43] – amackert | ef:gameprojekt:gruppenseiten:gruppe5:start [2023/02/10 21:51] (aktuell) – [Bomb It mit Python] amackert | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | **Bomb It mit Python** | + | =====Bomb It mit Python===== |
| - | Wir wollen | + | Wir haben ein Spiel programmiert, in welchem man mit dem Spieler auf einem Feld herumlaufen kann. Es gibt feste Hindernisse und auch zerstörbare. Der Spieler kann Bomben platzieren, diese zerstören Hindernisse, |
| - | <sxh python> | + | ====Unsere Quellen: |
| - | import arcade | + | |
| - | # Größe des Fensters festlegen | + | * Die [[https:// |
| - | WINDOW_WIDTH | + | * Unsere Tiles haben wir von [[https:// |
| - | WINDOW_HEIGHT = 480 | + | |
| - | # Klasse für den Spieler definieren | + | ====Verbesserungen:==== |
| - | class Player(arcade.Sprite): | + | |
| - | def __init__(self, | + | |
| - | super().__init__(": | + | |
| - | self.center_x | + | |
| - | self.center_y | + | |
| - | #Klasse für die explodierten Bomben | + | * Einen künstlichen Gegener erstellen um alleine Spielen zu können |
| - | class Explodedbomb(arcade.Sprite): | + | * Einen Modus um Münzen zu sammeln erstellen, wenn man stirbt wird man wieder an den Anfange gebracht und Münzen werden abgezogen und dem Töter gegeben |
| - | def __init__(self,x ,y): | + | * Den Spieler vor dem Start die Farbe des Roboters entscheiden lassen oder durch Zufall unterschiedliche Farben abgeben und weiter Farben einbauen |
| - | super().__init__(": | + | * Weiter Items wie ein Schild, welches den Spieler einmalig vor der Bombe schützt, eine Pistole, oder eine Mine, welche den Spieler langsamer macht |
| - | self.center_x = x | + | |
| - | self.center_y = y | + | |
| - | self.explodedbomb_list.append(self.explodedbomb) | + | |
| - | + | ||
| - | def explodedbomb(self, explodedbomb): | + | |
| - | pass | + | |
| - | + | ||
| - | def remove_explodedbomb(self, | + | |
| - | self.remove_from_sprite_lists() | + | |
| - | arcade.unschedule(self.explode_bomb) | + | |
| - | arcade.unschedule(self.remove_explodedbomb) | + | |
| - | # Klasse für die Bombe definieren | ||
| - | class Bomb(arcade.Sprite): | ||
| - | def __init__(self, | ||
| - | super().__init__(": | ||
| - | self.center_x = x | ||
| - | self.center_y = y | ||
| - | # Timer für die Explosion starten | ||
| - | arcade.schedule(self.explode_bomb, | ||
| - | | ||
| - | # | ||
| - | def explode_bomb(self, | ||
| - | # | ||
| - | explodedbomb = Explodedbomb(self.center_x, | ||
| - | arcade.schedule(self.remove_bomb, | ||
| - | | ||
| - | #Bombe aus der Sprite-Liste entfernen | ||
| - | def remove_bomb(self, | ||
| - | self.remove_from_sprite_lists() | ||
| - | arcade.unschedule(self.explode_bomb) | ||
| - | arcade.unschedule(self.remove_bomb) | ||
| - | |||
| - | # Klasse für das Spiel definieren | ||
| - | class BombItGame(arcade.Window): | ||
| - | def __init__(self, | ||
| - | super().__init__(width, | ||
| - | arcade.set_background_color(arcade.color.BLACK) | ||
| - | |||
| - | # Sprite-Listen erstellen | ||
| - | self.player_list = arcade.SpriteList() | ||
| - | self.bomb_list = arcade.SpriteList() | ||
| - | self.explodedbomb_list = arcade.SpriteList() | ||
| - | |||
| - | # Spieler-Sprite erstellen und zur Sprite-Liste hinzufügen | ||
| - | self.player = Player(50, 50) | ||
| - | self.player_list.append(self.player) | ||
| - | |||
| - | def on_draw(self): | ||
| - | # Zeichenbereich löschen und neu zeichnen | ||
| - | arcade.start_render() | ||
| - | |||
| - | # Sprites zeichnen | ||
| - | self.player_list.draw() | ||
| - | self.bomb_list.draw() | ||
| - | self.explodedbomb_list.draw() | ||
| - | |||
| - | def on_key_press(self, | ||
| - | # Bewegung des Spielers mit den Pfeiltasten | ||
| - | if key == arcade.key.UP: | ||
| - | self.player.center_y += 50 | ||
| - | elif key == arcade.key.DOWN: | ||
| - | self.player.center_y -= 50 | ||
| - | elif key == arcade.key.LEFT: | ||
| - | self.player.center_x -= 50 | ||
| - | elif key == arcade.key.RIGHT: | ||
| - | self.player.center_x += 50 | ||
| - | |||
| - | # Bombe legen mit der Leertaste | ||
| - | elif key == arcade.key.SPACE: | ||
| - | bomb = Bomb(self.player.center_x, | ||
| - | self.bomb_list.append(bomb) | ||
| - | | ||
| - | def on_update(self, | ||
| - | self.player_list.update() | ||
| - | self.bomb_list.update() | ||
| - | self.explodedbomb_list.update() | ||
| - | |||
| - | # Generate a list of all sprites that collided with the player. | ||
| - | hit_list = arcade.check_for_collision_with_list(self.player, | ||
| - | for self.player in hit_list: | ||
| - | self.remove_from_sprite_lists() | ||
| - | |||
| - | | ||
| - | |||
| - | # Hauptfunktion | ||
| - | def main(): | ||
| - | game = BombItGame(WINDOW_WIDTH, | ||
| - | arcade.run() | ||
| - | |||
| - | if __name__ == " | ||
| - | main() | ||
| - | </ | ||