def __init__(self): self.bewegungs_richtung = 1 self.timer = 0 self.timer_grenze = 400 self.modus = Schaf.MODUS_GRASSEND self.entfuerendes_ufo = None # Fallschirm bild hinzufügen und zunächst verstecken self.fallschirm = BildSpeicher.gib_bild("fallschirm") self.fallschirm.verstecke() # Animation initialsieren super().__init__( [(BildSpeicher.gib_pygame_bild("schaf_1"), 500), (BildSpeicher.gib_pygame_bild("schaf_2"), 500)] ) self.setze_position(random.randint(0, Spiel.breite), Schaf.schaf_hoehe) self.start() self.setze_wiederhole(True)
def __init__(self): pygame_ufo = BildSpeicher.gib_pygame_bild("ufo") x = random.randint(0, Spiel.breite - pygame_ufo.get_width()) super().__init__(x, 0, pygame_ufo) self.text = UfoUndSchafeSpiel.neues_wort(self, 0, -30, self.zerstoert) self.such_strahl = BildAnimationSpeicher.gib_animation("such_strahl") self.such_strahl.start() self.such_strahl.setze_wiederhole() self.such_strahl.verstecke() self.timer = 20 self.bewegungs_richtung = 1 if random.randint(0, 1) == 1 else -1 self.entfuertes_schaf = None self.modus = Ufo.MODUS_RUNTERFLIEGEN self.nach_vorne()
def __init__(self, pygame_flaechen_und_zeiten, wiederhole=False, alpha=True): """ Ein neues Animationsobjekt. :param pygame_flaechen_und_zeiten: :param wiederhole: :param alpha: :raise AttributeError: """ self._wiederhole_animation = wiederhole """ Gibt an ob die Animation wiederholt wird oder nicht """ self._flaechen_zeiten = [] """ :type: list[(ZeichenFlaeche, int)] """ self._zeige_letztes_bild = False self._bild_gewechselt = EreignisBearbeiter() self._animation_gestartet = EreignisBearbeiter() self._animation_geendet = EreignisBearbeiter() self._gesamt_zeit = 0 self._aktuelle_flaeche = 0 self._zustand = GESTOPPT self._vergangen = 0 self._gesamt_zeit = 0 # zur Ermittlung der Dimension breite = 0 hoehe = 0 # Für klone() self.__quelle = pygame_flaechen_und_zeiten.copy() self.__alpha = alpha for zf in pygame_flaechen_und_zeiten: animations_bild = zf[0] # Die Fläche kann entweder aus einer Datei/ dem Bildspeicher geladen werden if isinstance(animations_bild, str): # Falls im Speicher, nehmen wir dieses Bild if BildSpeicher.ist_bild_vorhanden(animations_bild): animations_bild = BildSpeicher.gib_pygame_flaeche(animations_bild) else: # Ansonsten laden wir es animations_bild = BildSpeicher.lade_bild_aus_datei(animations_bild, alpha) # oder schon eine pygame surface sein elif not isinstance(animations_bild, pygame.Surface): raise AttributeError("Entweder Surface oder Strings übergeben.") # die größten werte ermitteln if animations_bild.get_width() > breite: breite = animations_bild.get_width() if animations_bild.get_height() > hoehe: hoehe = animations_bild.get_height() # Zur List hinzufügen und Zeit addieren self._flaechen_zeiten.append((animations_bild, zf[1])) self._gesamt_zeit += zf[1] self.__rotations_flaechen = None self._anzahl_flaechen = len(self._flaechen_zeiten) SkalierbaresElement.__init__(self, self) ZeichenbaresElement.__init__(self, 0, 0, breite, hoehe, None)
def aufbauen(self): BildSpeicher.lade_bild("ufo", "bilder/ufo.png", True) BildSpeicher.lade_bild("such_strahl1", "bilder/such_strahl_trans0.png", True) BildSpeicher.lade_bild("such_strahl2", "bilder/such_strahl_trans1.png", True) BildSpeicher.lade_bild("such_strahl3", "bilder/such_strahl_trans1.png", True) BildSpeicher.lade_bild("grass_1", "bilder/grass_1.png", True) BildSpeicher.lade_bild("grass_2", "bilder/grass_2.png", True) BildSpeicher.lade_bild("grass_3", "bilder/grass_3.png", True) BildSpeicher.lade_bild("grass_4", "bilder/grass_4.png", True) BildSpeicher.lade_bild("grass_5", "bilder/grass_5.png", True) BildSpeicher.lade_bild("fallschirm", "bilder/fallschirm.png", True) BildSpeicher.lade_bild("schaf_1", "bilder/schaf_1.png", True) BildSpeicher.lade_bild("schaf_2", "bilder/schaf_2.png", True) BildSpeicher.lade_bild("sonne", "bilder/sonne.png", True) zeit = 1000 / 6 bilder_zeiten = [] for i in range(1, 6): BildSpeicher.lade_bild("rauch_%d" % i, "../testimages/smoke_puff_000%d.png" % i, True) bilder_zeiten.append(("rauch_%d" % i, zeit)) BildAnimationSpeicher.registriere_animation("rauch", bilder_zeiten) BildAnimationSpeicher.registriere_animation( "such_strahl", [("such_strahl1", 300), ("such_strahl2", 500), ("such_strahl3", 300)] ) sonne = BildSpeicher.gib_bild("sonne") sonne.aendere_position(Spiel.breite - 150, 25) self.neues_schaf() self.neues_schaf() s = self.neues_schaf() s.fallschirm_rettung(300, 200) for i in range(schwierigkeit.anzahl_ufos): self.neues_ufo() anzahl = 60 b = Spiel.breite / anzahl for i in range(1, anzahl): g1 = BildSpeicher.gib_bild("grass_" + str(random.randint(1, 5))) y_offset = random.randint(0, 10) - 5 x_offset = random.randint(0, 10) - 5 g1.aendere_position(i * b + x_offset, 360 + y_offset)