2017-05-17 14 views
-1

Also ich versuche, eine Schaltfläche zu erstellen, die einfach die Hintergrundbilder (durch das Blitting übereinander) festlegen wird. Aber ich denke, dieser Code funktionieren soll:Pygame-Code mit einer flackernden Maus nach hinten

place = True 
action = None 
def startup(action): 
    while place == True: 
    gameDisplay.blit(imgstr, (0, 0)) 
    mouse = pygame.mouse.get_pos() 
    click = pygame.mouse.get_pressed() 
    if 500+140 > mouse[0] > 500 and 140+150 > mouse[1] > 140: 
     pygame.draw.rect(gameDisplay, black, (500,140,150,150)) 
     pygame.mouse.set_cursor(*pygame.cursors.tri_left) 
     if click[0] == 1 and action != None: 
      if action == "play": 
       game_loop() 
    else: 
     pygame.draw.rect(gameDisplay, white, (500,140,150,150)) 
     pygame.mouse.set_cursor(*pygame.cursors.arrow) 
def game_loop(): 
    while place == True: 
     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       pygame.quit() 
       quit() 
      if event.type == pygame.KEYDOWN: 
       if event.key == pygame.K_RCTRL: 
        pygame.quit() 
        quit() 
     gameDisplay.blit(imgm, (0, 0)) 

     pygame.display.update() 
startup("play") 

Aber pygame nur startet mit einem schwarzen Bildschirm und die Maus flackert, bis Windows stoppt, weil er nicht reagiert.

+2

Ihre inden falsch ist und wird in einem 'IndentionError' zu lösen. Stellen Sie sicher, dass der Code, den Sie hier posten, mit Ihrem tatsächlichen Code übereinstimmt. Außerdem reagiert es nicht, weil Sie keine [Ereignisfunktionen] aufrufen (http://stackoverflow.com/documentation/pygame/5110/event-handling/18049/state-checking#t=201705171154322622145) (Der dritte Aufzählungspunkt). Der Grund für den schwarzen Bildschirm ist, dass Sie die Anzeige nicht bei 'Startup 'aktualisieren. –

+0

@TedKleinBergman Ich habe ein for-Ereignis in der pygame.event.get() -Schleife zwischen der ersten if-Anweisung und der while-Schleife in der startup() -Anweisung hinzugefügt und auch pygame.display.update() zum Start hinzugefügt (), aber jetzt wird es das Rechteck nur einmal in Weiß zeichnen, ist das ein Einrückungsfehler, und wenn es das ist, wie repariere ich es? Ich weiß, dass es scheint, als ob ich vage bin, aber, meine Eingabeaufforderung wird den Code nicht ausführen, so dass ich absolut keine Fehlermeldungen habe, um zu helfen. – Connectiontube

+0

Wenn Sie Änderungen an Ihrem Code vorgenommen haben, bearbeiten Sie Ihre Frage mit dem neuen Code. Wenn Ihr Code einen 'IndentationError' enthält, kann er nicht ausgeführt werden. In dem Code, den Sie in Ihrer Frage angegeben haben, gibt es keine Einrückung nach der Zeile 'while place == True:', was Ihr Programm sofort zum Absturz bringen sollte. Ich würde empfehlen, einem Anfänger-Tutorial über Python zu folgen und mehr über Debugging und Fehler zu erfahren, bevor Sie anfangen, grafische Anwendungen zu programmieren. Grafische Anwendungen können viel Debugging erfordern und ohne ein gutes Verständnis kann es sehr hart und nervig werden. –

Antwort

0

Ich habe erfolgreich gelöst, das Problem mit dem folgenden Code, wenn jemand fragen wurde:

import pygame 

pygame.init() 

screen = pygame.display.set_mode([852,441]) 

pygame.display.set_caption("test") 

keep_going = True 
mousedown = True 

background_image = pygame.image.load("start.jpg") 

main_img = pygame.image.load("chromos.png") 

colorkey = background_image.get_at((0,0)) 
background_image.set_colorkey(colorkey) 
black = (0,0,0) 
red = (255,0,0) 

picx = 0 
picy = 0 

main_picx = 0 
main_picy = 0 

screen.fill(red) 

while keep_going: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      keep_going = False 
     if event.type == pygame.MOUSEBUTTONDOWN: 
      if pygame.mouse.get_pos() > (500, 500) and pygame.mouse.get_pos() < (700, 700): 
       picx = 5000 
       picy = 5000 
       mousedown = False 
     print(event) 
    if mousedown: 
     screen.blit(background_image, (picx,picy)) 
    else: 
     screen.blit(main_img, (main_picx, main_picy)) 
    pygame.display.update() 
pygame.quit() 
quit() 
Verwandte Themen