Example #1
0
    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)
Example #2
0
    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()
Example #3
0
    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)
Example #4
0
    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)