59 lines
2.2 KiB
Python
59 lines
2.2 KiB
Python
import pygame
|
|
import Utils
|
|
import Animation
|
|
|
|
# Die Player Klasse verwendet zwei Animationen, um eine steuerbare Spielfigur dazustellen.
|
|
class Player(object):
|
|
def __init__(self):
|
|
# Bild laden und erste Animation erstellen:
|
|
self.anim_image_right = Utils.load_image("tileset.png", (255, 0, 255))
|
|
self.anim_right = Animation.Animation(self.anim_image_right, 32, 32, 2, 32, 64, 15)
|
|
|
|
# Die Grafik spiegeln und in einer neuen Surface speichern,
|
|
# dann können wir die linke Animation erstellen.
|
|
self.anim_image_left = pygame.transform.flip(self.anim_image_right, True, False)
|
|
self.anim_left = Animation.Animation(self.anim_image_left, 32, 32, 2, 32, 64, 15)
|
|
|
|
# Start-Position des Players festlegen und
|
|
# merken in welche Richtung wir schauen und ob wir überhaupt laufen.
|
|
self.pos_x = 10*32
|
|
self.pos_y = 13*32
|
|
self.dir = 0
|
|
self.walking = False
|
|
|
|
|
|
def render(self, screen):
|
|
# Die Blickrichtung ist links:
|
|
if self.dir == -1:
|
|
# Wenn der Spieler die linke oder rechte Pfeiltaste gedrückt hat sind wir am laufen,
|
|
if self.walking:
|
|
# nur dann die Animation updaten.
|
|
self.anim_left.update()
|
|
# Blickrichtung links rendern.
|
|
self.anim_left.render(screen, (self.pos_x, self.pos_y))
|
|
else:
|
|
# Und das gleiche nochmal für rechts:
|
|
if self.walking:
|
|
self.anim_right.update()
|
|
self.anim_right.render(screen, (self.pos_x, self.pos_y))
|
|
|
|
# De Laufen-Zustand zurücksetzen, im nächsten Frame bleiben wir stehen.
|
|
self.walking = False
|
|
|
|
|
|
def handle_input(self, key):
|
|
# Linke Pfeiltaste wird gedrückt:
|
|
if key == pygame.K_LEFT:
|
|
# x-Position der Spielfigur anpassen,
|
|
# die Blickrichtung festlegen
|
|
# und den Laufen-Zustand einschalten.
|
|
self.pos_x -= 1
|
|
self.dir = -1
|
|
self.walking = True
|
|
|
|
# Und nochmal für die rechte Pfeiltaste.
|
|
if key == pygame.K_RIGHT:
|
|
self.pos_x += 1
|
|
self.dir = 1
|
|
self.walking = True
|