Dies ist eine alte Version des Dokuments!
Bomb It mit Python
Wir wollen ein Spiel programmieren, in welchem man mit dem Spieler auf einem Feld herumlaufen kann. Es gibt fixe Hindernisse und auch zerstörbare. Der Spieler kann Bomben platzieren. Bomben zerstören Hindernisse, welche dann Item droppen. Wenn man die Items aufsammelt, bekommt der Spieler ein Upgrade. Das Spiel spielt man zu zweit. Der Spieler der am längsten überlebt gewinnt. Andere Spieler werden durch Bomben getötet. Spieler 1 spielt mit W,A,S,D und Leertaste und Spieler 2 spielt mit dem Pfeiltasten und Enter.
import arcade
# Größe des Fensters festlegen
WINDOW_WIDTH = 640
WINDOW_HEIGHT = 480
# Klasse für den Spieler definieren
class Player(arcade.Sprite):
def __init__(self, x, y):
super().__init__(":resources:images/animated_characters/male_person/malePerson_idle.png", 0.5)
self.center_x = x
self.center_y = y
#Klasse für die explodierten Bomben
class Explodedbomb(arcade.Sprite):
def __init__(self,x ,y):
super().__init__(":resources:images/pinball/bumper.png", 0.4)
self.center_x = x
self.center_y = y
self.explodedbomb_list.append(self.explodedbomb)
def explodedbomb(self, explodedbomb):
pass
def remove_explodedbomb(self, explodedbomb):
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, x, y):
super().__init__(":resources:images/tiles/bomb.png", 0.4)
self.center_x = x
self.center_y = y
# Timer für die Explosion starten
arcade.schedule(self.explode_bomb, 3)
#Explosion-Grafik anzeigen
def explode_bomb(self, bomb):
#Explodierte Bombe hinzufügen
explodedbomb = Explodedbomb(self.center_x, self.center_y)
arcade.schedule(self.remove_bomb, 0)
#Bombe aus der Sprite-Liste entfernen
def remove_bomb(self, bomb):
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, width, height):
super().__init__(width, height)
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, key, modifiers):
# 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.player.center_y)
self.bomb_list.append(bomb)
def on_update(self, delta_time):
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, self.explodedbomb_list)
for self.player in hit_list:
self.remove_from_sprite_lists()
# Hauptfunktion
def main():
game = BombItGame(WINDOW_WIDTH, WINDOW_HEIGHT)
arcade.run()
if __name__ == "__main__":
main()