such schon 2 Stunden

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
duepperdaniel
User
Beiträge: 3
Registriert: Donnerstag 11. Juni 2009, 11:10

Hallo,
ich hab in den letzten paar Tagen ein Python/ Pygame Spiel programmiert.
Nun jetzt wo ich fast fertig bin tritt ein Fehler auf und zwar:

Das eigentliche Spiel läuft nur wenn man die Maus in dem Fenster bewegt ansonsten tut sich garnicht.

Habt ihr ne Idee??

Schon einmal danke
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

kannst du ein wenig code posten. schuss ins blaue: du scheinst irgendwelchen elementaren code in einem mouse-move handler stehen zu haben.
http://www.kinderpornos.info
duepperdaniel
User
Beiträge: 3
Registriert: Donnerstag 11. Juni 2009, 11:10

also ist sehr einfach gehalten ist nur en Projekt für die Schule aber das müsste eig der teil sein wo der Fehler seien müsste aber ich find keinen

Code: Alles auswählen

while aktiv:

    for event in pygame.event.get():
 
        if spielstarten==0:
            if event.type == pygame.QUIT or (event.type== KEYDOWN and event.key == K_ESCAPE):
                sys.exit()
            mousetaste=pygame.mouse.get_pressed()
            mousepos=pygame.mouse.get_pos ()
            mouseposx=mousepos[0]
            mouseposy=mousepos[1]
            mleft=mousetaste[0]
            if mouseposx>12 and mouseposx<310 and mouseposy>525 and mouseposy<718:
                screen.blit (Menuele, Menuelerect)
            else:
                screen.blit (Menuest, Menuestrect)
            if mouseposx>344 and mouseposx<639 and mouseposy>525 and mouseposy<718:
                screen.blit (Menuemi, Menuemirect)
            if mouseposx>660 and mouseposx<995 and mouseposy>525 and mouseposy<718:
                screen.blit (Menuesc, Menuescrect)
            if mouseposx>12 and mouseposx<310 and mouseposy>525 and mouseposy<718 and mleft>0:
                screen.blit (Menuele, Menuelerect)
                spielstarten=1
                speedx=6
                speedy=6
            if mouseposx>344 and mouseposx<639 and mouseposy>525 and mouseposy<718 and mleft>0:
                screen.blit (Menuemi, Menuemirect)
                spielstarten=1
                speedx=14
                speedy=14
                speedfactor=1.5
            if mouseposx>660 and mouseposx<995 and mouseposy>525 and mouseposy<718 and mleft>0:
                screen.blit (Menuesc, Menuescrect)
                spielstarten=1
                speedx=20
                speedy=20
                speedfactor=2
        pygame.display.flip()
           
###Schleife

        if spielstarten == 1:

            if event.type == pygame.QUIT or (event.type== KEYDOWN and event.key == K_ESCAPE):
                sys.exit()
            
            balkenrect=balkenrect.move(speedbx,0)
            keystate=pygame.key.get_pressed()
            
            
            if keystate[K_RIGHT]:
                speedbx=10*speedfactor
            else:    
                if keystate[K_LEFT]:
                    speedbx=-10*speedfactor
                else:
                    speedbx=0
            
            
            ballrect=ballrect.move(speedx,speedy)
            
            if (ballrect.left < 0 or ballrect.right > width ):
                speedx=-speedx
            if (ballrect.top < 0):
                speedy = -speedy
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

Code: Alles auswählen

for event in pygame.event.get()
das ganze spiel steht in dieser for-schleife?
und die wird nur ausgeführt wenn was in der event-queue steht.
die maus produziert events wenn du sie bewegst, daher das verhalten.


setz mal code-tags um deinen code.
http://www.kinderpornos.info
duepperdaniel
User
Beiträge: 3
Registriert: Donnerstag 11. Juni 2009, 11:10

ok ich versuchs mal danke
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Bie der Gelegenheit solltest du den Thread auch umbenennen, den mit so einem Namen hat man ganz sicher keine Lust dir zu helfen. Ich hab den Thread auch gleich mal ins pygame-Forum verschoben.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Mal ein paar Anmerkungen:
- "spielstarten" sollte besser ein Boolean sein
- es gibt Tupel: "mousepos = (23, 42)
- Konstanten solltest du auch benuzen
- "elif" könntet du sicher auch gebrauchen
- du schreibst unglaublich viel Code doppelt, den kann man locker auf die Hälfte reduzieren
- dann solltest du dich noch für Deutsch oder Englisch entscheiden, aber nicht beides gemischt
- und natürlich der obligatorische Hineweis auf PEP8
Das Leben ist wie ein Tennisball.
Antworten