Spielfigur
Verfasst: Samstag 10. März 2018, 11:25
Erstmal mein Code:
Irgendwann soll ein Spiel rauskommen, bei dem man mit einem Raumschiff rumfliegt und schießen kann. Mein momentanes Problem ist, dass das display nicht aktualisiert wird, also jede vorherige Position der Spielfigur bleibt beim Bewegen dieser erhalten. Wie kann ich dieses Problem lösen? Ich habe bereits probiert, dass "pygame.display.update()" vor "spieler.zeichnen(fenster)" zu schieben, das hat aber nicht geholfen.
Code: Alles auswählen
import pygame
from pygame.locals import *
MAP_WIDTH = 500
MAP_HEIGHT = 500
class Spieler(object):
def __init__(self, x, y, bild):
self.x = x
self.y = y
self.bild = bild
def zeichnen(self, fenster):
fenster.blit(self.bild, (self.x, self.y))
def bewegen(self, richtung):
if richtung == 'N':
self.y -= 50
if richtung == 'S':
self.y += 50
if richtung == 'O':
self.x += 50
if richtung == 'W':
self.x -= 50
def main():
pygame.init()
fenster = pygame.display.set_mode((MAP_WIDTH,MAP_HEIGHT))
spieler_bild = pygame.image.load("spieler.png").convert_alpha()
spieler = Spieler(0, 0, spieler_bild)
try:
while True:
for event in pygame.event.get():
if event.type == QUIT:
return
elif event.type == KEYDOWN:
if event.key == K_RIGHT and spieler.x < MAP_WIDTH:
spieler.bewegen('O')
if event.key == K_LEFT and spieler.x > 0:
spieler.bewegen('W')
if event.key == K_UP and spieler.y > 0:
spieler.bewegen('N')
if event.key == K_DOWN and spieler.y < MAP_HEIGHT:
spieler.bewegen('S')
spieler.zeichnen(fenster)
pygame.display.update()
finally:
pygame.quit()
if __name__ == '__main__':
main()