Pygame Fehler...

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
Pyanfänger
User
Beiträge: 99
Registriert: Mittwoch 28. Dezember 2011, 12:50

Hi an alle :)

nach einer kleinen Auszeit mal wieder mit Pygame was rumprobiert, aber dabei habe ich folgende Probleme:



- "Objekt" wird bei einem Klick nur sehr selten angezeigt, dh von 10 Klicks irgendwo hin Blitzt einmal kurz "Objekt" auf und verschwindet wieder.
- Das pygame.QUIT event funktionniert nicht immer, dh ab und zu shcließt es sich, ab und zu bleibt esaber auch einfach hängen...

Code: Alles auswählen


# -*- coding: UTF-8 -*-
 
import pygame
import Tilemap
import sys
 




pygame.init()
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Tribal Age")
pygame.mouse.set_visible(1)
#pygame.key.set_repeat(1, 30)
 
clock = pygame.time.Clock()
 
map = Tilemap.Tilemap()

Objekt = pygame.image.load('Objekt.png')
Objekt_rect = Objekt.get_rect() 
 
running = True
while running:

    clock.tick(50) # 50frames maximal...
    screen.fill((0, 0, 0))
    for event in pygame.event.get():

        if event.type == pygame.MOUSEBUTTONDOWN:
            pos1 = pygame.mouse.get_pos()
            xm = pos1[0]
            ym = pos1[1]
            screen.blit(Objekt,[xm,ym])
            pygame.display.flip()
            
        if event.type == pygame.QUIT:
            running = False
            sys.exit()
 
        if event.type == pygame.KEYDOWN:
                
            if event.key == pygame.K_ESCAPE:
                pygame.event.post(pygame.event.Event(pygame.QUIT))
                sys.exit()
 
                map.handleInput(event.key)
 
    map.render(screen)
 
    pygame.display.flip()
Hat wer ne Ahnung wieso :( ?
-
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Pyanfänger hat geschrieben:- "Objekt" wird bei einem Klick nur sehr selten angezeigt, dh von 10 Klicks irgendwo hin Blitzt einmal kurz "Objekt" auf und verschwindet wieder.
Du zeichnest das Objekt ja auch nur, wenn überhaupt irgendein Event passiert. Danach bügelst du es wieder platt.
Pyanfänger
User
Beiträge: 99
Registriert: Mittwoch 28. Dezember 2011, 12:50

Thx für die Antwort :D

Naja aber selbst wenn ich die Maus gedrückt halte - das Objekt wird nciht angezeigt :(
-
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Pyanfänger hat geschrieben:Naja aber selbst wenn ich die Maus gedrückt halte - das Objekt wird nciht angezeigt :(
Wenn du die Maus gedrückt hältst gibt es ja auch kein Event.
LPython
User
Beiträge: 2
Registriert: Montag 13. Mai 2013, 12:47

Pygame.QUIT funktioniert nicht weil die prozesse in idle durcheinander kommen :/
Versuch das Programm mal mit cmd oder einem codeeditor
wie spe auszuführen. :D
Py19917062
User
Beiträge: 113
Registriert: Freitag 30. Januar 2009, 00:53
Wohnort: Dortmund
Kontaktdaten:

Wenn du Pygame mit pygame.init() initialisierst, solltest du es auch beim Schließen mit pygame.quit() verlassen. Das ist der Grund warum es "hängen" bleibt.

Code: Alles auswählen

if event.type == pygame.QUIT:
    running = False
    pygame.quit()
    sys.exit()
Wobei ich persönlich auf sys.exit() verzichten würde, da es nicht schön in der Shell aussieht und auch ohne bestens funktioniert :)

Und screen.blit(Objekt,[xm,ym]) passt in die vorletzte Zeile besser rein. Dann kannst du auch auf pygame.display.flip() in der Eventabfrage verzichten.
Antworten