Problem mit Pygameprogramm

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
Hoerns
User
Beiträge: 2
Registriert: Dienstag 15. November 2011, 20:40

Hallo,
toll, dass es hier ein Pythonforum gibt. Ich habe mich gerade erst angemeldet und ich bin ein ziemlicher Anfänger (bei Python). Deshalb bin ich mir sicher, dass ihr mir helfen könnt! Ich habe einen Code mit dem man eine Grafik hoch und runter bewegen kann (Nicht viel, aber genug Platz für Fehler). Ich hoffe das ist jetzt nicht das falsche Forum oder so. Hier ist der Code:

Code: Alles auswählen

import pygame, sys

class AvatarKlasse(pygame.sprite.Sprite): #AvatarKlasse
    def __init__(self, grafik2, ort):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load(grafik2)
        self.rect = self.image.get_rect()
        self.rect.left, self.rect.top = ort

pygame.init()
screen = pygame.display.set_mode([640, 480])
screen.fill([255, 255, 255])
pygame.display.set_caption("Avatar")
pygame.display.flip()

Avatar = AvatarKlasse('grafik.png', [40, 40])
pygame.display.flip()


while True:
    pygame.display.flip()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pass
        elif event.type == pygame.KEYDOWN:
            Avatar.rect.top = Avatar.rect.top - 10
        elif event.type == pygame.KEYUP:
            Avatar.rect.top = Avatar.rect.top + 10
Die Grafik ist im selben Verzeichnis, wie die .py-Datei und die Pygamebibliothek ist auch installiert. Beim ausführen erscheint ein weißes Fenster (Das Pygamefenster). Es wird jedoch keine Grafik angezeigt und beim schließen des Fensters wird folgende Fehlermeldung angezeigt:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Users\Johannes\Desktop\Pythonprojekte\Fenster[fertig].py", line 24, in <module>
    sys.exit()
SystemExit
Findet ihr den Fehler? - Habt ihr irgendwelche Tipps für mich?
Zuletzt geändert von Anonymous am Dienstag 15. November 2011, 21:57, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
BlackJack

@Hoerns: Du veränderst nur die Koordinaten. So ein Sprite zeichnet sich aber nicht von selbst. Das fehlt.

Ausserdem solltest Du den Zusatz `Klasse` im Klassennamen weglassen. Das es sich um eine Klasse handelt sollte man schon daran erkennen, das es mit einem Grossbuchstaben beginnt. Da `Avatar` keine Klasse ist, sollte der Name deshalb auch *nicht* mit einem Grossbuchstaben beginnen.

Der Traceback lässt vermuten, dass Du irgend eine Art von IDE verwendest. Das kann unter Umständen Probleme geben wenn das Programm in deren Kontext ausgeführt wird und damit zwei Teile eines Prozesses sich um die GUI-Ressourcen Konkurrenz machen.

Der Dateiname `Fenster[fertig].py` führt zu einem ungültigen Modulnamen. Das sollte man sich auch nicht unbedingt angewöhnen.
Hoerns
User
Beiträge: 2
Registriert: Dienstag 15. November 2011, 20:40

Danke für die Antwort! Ich hab das jetzt so gemacht:

Code: Alles auswählen

import pygame, sys

class AvatarKlasse(pygame.sprite.Sprite): #AvatarKlasse
    def __init__(self, grafik2, ort):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load(grafik2)
        self.rect = self.image.get_rect()
        self.rect.left, self.rect.top = ort

pygame.init()
screen = pygame.display.set_mode([640, 480])
screen.fill([255, 255, 255])
pygame.display.set_caption("Avatar")
pygame.display.flip()
x = 40
y = 40
Avatar = AvatarKlasse('grafik.png', [x, y])
screen.blit(Avatar)
pygame.display.flip()


while True:
    screen.blit(Avatar)
    pygame.display.flip()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == pygame.KEYDOWN:
            y = y - 10
        elif event.type == pygame.KEYUP:
            y = y +10
Jetzt kommen diese Fehlermeldungen:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Users\Johannes\Desktop\Pythonprojekte\fenster3.py", line 1, in <module>
    import pygame, sys
  File "C:\Users\Johannes\Desktop\Pythonprojekte\pygame.py", line 3, in <module>
AttributeError: 'module' object has no attribute 'sprite'
Was hab ich jetzt falsch gemacht? Wenn jemand posten würde, wie man dieses PG-Fenster hinbekommt, würde ich mich sehr freuen.
BlackJack

@Hoerns: Du hast ein eigenes Modul `pygame` genannt.
Antworten