Seite 1 von 1

such schon 2 Stunden

Verfasst: Donnerstag 11. Juni 2009, 11:13
von duepperdaniel
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

Verfasst: Donnerstag 11. Juni 2009, 11:17
von Dill
kannst du ein wenig code posten. schuss ins blaue: du scheinst irgendwelchen elementaren code in einem mouse-move handler stehen zu haben.

Verfasst: Donnerstag 11. Juni 2009, 11:19
von duepperdaniel
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

Verfasst: Donnerstag 11. Juni 2009, 11:24
von Dill

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.

Verfasst: Donnerstag 11. Juni 2009, 11:24
von duepperdaniel
ok ich versuchs mal danke

Verfasst: Donnerstag 11. Juni 2009, 15:44
von Leonidas
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.

Verfasst: Donnerstag 11. Juni 2009, 15:53
von EyDu
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