2016-07-22 5 views
2

bei Pygame Ich habe ein Spiel mit einem Hintergrund (im Code das Bild namens: 'bg) und ein Bild auf dem (mit dem Namen:' Würfel ') Ich bin versuchen zu bemerken, wenn der Spieler auf das Bild klickt, aber es schreibt mir, dass die Rect der Würfel 0,0 (x = 0 und y = 0) ist, während das Bild bei 740,40 gezeigt wird.pygame erkennt nicht die richtige rect meines Bildes

was soll ich tun?

bg = pygame.image.load("temptry.gif") 
dice=pygame.image.load("dicee.gif") 
screen.blit(bg, (0, 0)) 
bg.blit(dice,(740,40)) 
pygame.display.update() 

while True: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      sys.exit() 
     if event.type == pygame.MOUSEBUTTONDOWN: 
      # Set the x, y postions of the mouse click 
      x, y = event.pos 
      print dice.get_rect() 
      if dice.get_rect().collidepoint(x, y): 
       print "omg" 
    screen.blit(bg, (0, 0)) 
    bg.blit(dice,(740,40)) 
    pygame.display.update() 
+0

'dice.get_rect()' standardmäßig eine pygame.Rect an machen würde (0, 0). Verwenden Sie stattdessen 'dice.get_rect (left = 740, top = 40) .collidepoint (x, y)'. –

+1

omg yess danke dir so viel !!!!! das ist es! – roni280

Antwort

1

Es gibt mehrere Probleme in Ihrem Code. Vor der Hauptschleife brauchen Sie nicht pygame.display.update(). Als nächstes sollten Sie Ihre Bilder konvertieren(). Zum Beispiel Würfel = pygame.image.load ("dicee.gif"). Convert(). Außerdem kann ein Problem beim Laden von GIFS auftreten.

Es scheint, wie Sie verwenden sehr komplizierte Art und Weise, Dinge zu tun. Was ich vorschlagen würde ist, dass Sie alle Bilder hinter Ihrer Hauptschleife geladen haben, konvertieren Sie die. Nach der Hauptschleife blit das Bild. Anstatt zu tun bg.blit(dice,(740,40)) wie Sie gerade tun screen.blit(bg,(740,40))

Als nächstes sollten Sie eine Maus Position Variable nach der Hauptschleife.

Es sollte diese aussehen

mouse_pos = pygame.mouse.get_pos() 

Als nächstes sollten Sie Rects für Ihre Würfel Bild erstellen. Legen Sie eine Variable für sie

dice_rect = dice.get_rect()

dann eine if-Anweisung, dass Tests, wenn jemand auf dem Würfel Bild klickt

if pygame.mouse.get_pressed()[0] and dice_rect.collidepoint(mouse_pos): 
     print "omg" 

Dann pygame.display.update()

tun Ich hoffe, Dies half, wenn Sie weitere Fragen zu diesem Kommentar haben.

+0

ich nicht beiden Fotos unter dem Bildschirm (screen.blit) setzen kann, ist es nicht funktioniert, so habe ich den Rat von dieser Frage: http://stackoverflow.com/questions/19336585/how-to-blit -an-Bild-in-python-inside-the-Area-of-a-specific-Bild? rq = 1 – roni280

+0

auch ich habe Probleme die Fotos nicht geladen, werden sie an dem an der richtigen Stelle mich gezeigt Bildschirm, aber die Pygame einfach nicht erkennen, sie sind der richtige Ort – roni280

+0

Ich rate, Sie können die Bilder dann gut blit. Verwenden Sie einfach das Kollisions-Argument, das prüft, ob eine Person auf das Bild klickt. – abc1234

Verwandte Themen