Untitled

 avatar
unknown
python
8 months ago
2.8 kB
11
Indexable
import pygame
import copy
from richtung import Richtung
from segment import Segment 

class Schlange(pygame.sprite.Sprite):
    def __init__(self):
        self.originalbild = pygame.image.load("images/head.png")
        self.bild = pygame.transform.rotate(self.originalbild, 0)
        self.rect = self.bild.get_rect(center=(12*32+16, 9*32+16))

        # Variablen fuer die Richtung und die neue Richtung
        self.richtung = Richtung.OBEN
        self.neue_richtung = Richtung.OBEN

        self.letzte_position = self.rect
        self.segment_hinzufuegen = False
        self.segmente = []

    def richtung_aendern(self, richtung):
        aenderung_moeglich = True
        if richtung == Richtung.OBEN and self.richtung == Richtung.UNTEN:
            aenderung_moeglich = False
        if richtung == Richtung.UNTEN and self.richtung == Richtung.OBEN:
            aenderung_moeglich = False
        if richtung == Richtung.RECHTS and self.richtung == Richtung.LINKS:
            aenderung_moeglich = False
        if richtung == Richtung.LINKS and self.richtung == Richtung.RECHTS:
            aenderung_moeglich = False
        if aenderung_moeglich == True:
            self.neue_richtung = richtung

    def aktualisieren(self):
        self.richtung = self.neue_richtung
        self.bild = pygame.transform.rotate(self.originalbild, (self.richtung.value * -90))
        self.letzte_position = copy.deepcopy(self.rect)

        if self.richtung == Richtung.OBEN:
            self.rect.move_ip(0,-32)
        if self.richtung == Richtung.RECHTS:
            self.rect.move_ip(32, 0)
        if self.richtung == Richtung.LINKS:
            self.rect.move_ip(-32, 0)
        if self.richtung == Richtung.UNTEN:
            self.rect.move_ip(0, 32)

        for i in range(len(self.segmente)):
            if i == 0:
                self.segmente[i].verschieben(self.letzte_position)
            else:
                self.segmente[i].verschieben(self.segmente[i-1].letzte_position)

        if self.segment_hinzufuegen == True:
            neues_segment = Segment()      # Objekt der Klasse Segment erstellt

            neue_position = None
            if len(self.segmente) > 0:
                neue_position = copy.deepcopy(self.segmente[-1].position)
            else:
                neue_position = copy.deepcopy(self.letzte_position)

            neues_segment.position = neue_position
            self.segmente.append(neues_segment)    # hinzufügen
            self.segment_hinzufuegen = False

    def segmente_zeichnen(self, display):
        for segment in self.segmente:
            display.blit(segment.bild, segment.posision)

    def apfel_fressen(self):
        self.segment_hinzufuegen = True




        


Editor is loading...
Leave a Comment