Untitled
unknown
python
9 months ago
2.8 kB
13
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