コード例 #1
0
ファイル: ufos_und_schafe.py プロジェクト: coderdojoka/py2cd
    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)
コード例 #2
0
ファイル: ufos_und_schafe.py プロジェクト: coderdojoka/py2cd
    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()
コード例 #3
0
ファイル: anim.py プロジェクト: coderdojoka/py2cd
    def __init__(self, pygame_flaechen_und_zeiten, wiederhole=False, alpha=True, anzeige_dauer=STANDART_ZEIT):
        """
        Ein neues Animationsobjekt.

        :param pygame_flaechen_und_zeiten:
        :type pygame_flaechen_und_zeiten: list[]
        :param wiederhole:
        :type wiederhole: bool
        :param alpha:
        :type alpha: bool
        :param anzeige_dauer:
        :type anzeige_dauer: float
        :return:
        :rtype:
        """

        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:

            # Entweder Tupel/Liste mit (Bild,Zeit) oder nur Bild
            if isinstance(zf, list) or isinstance(zf, tuple):
                animations_bild = zf[0]
                dauer = zf[1]
            else:
                animations_bild = zf
                dauer = anzeige_dauer

            # 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_bild(animations_bild)
                else:
                    # Ansonsten laden wir es
                    animations_bild = BildSpeicher._lade_pygbild_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, dauer))
            self._gesamt_zeit += dauer

        self.__rotations_flaechen = None
        self._anzahl_flaechen = len(self._flaechen_zeiten)

        SkalierbaresElement.__init__(self, self)
        ZeichenbaresElement.__init__(self, 0, 0, breite, hoehe, None)