Ich versuche, einen Menübildschirm für mein Spiel zu erstellen. Im Moment benutze ich Sprites für Buttons und alles funktioniert gut, und ich kann unendlich viele Buttons erstellen (momentan habe ich nur Start und Optionen), aber nur der erste Button, den ich anrufe erscheint auf dem Bildschirm. Ich denke, es hat etwas mit der While-Schleife in der Button-Klasse zu tun, aber ich bin mir nicht sicher, wie ich es beheben soll. Ich mache hier wahrscheinlich keinen Sinn. Wenn Sie mich brauchen, um etwas zu klären, werde ich es tun. Vielen Dank!Pygame - Menü Bildschirm Tasten funktionieren nicht richtig
import pygame
import random
import time
pygame.init()
#colours
white = (255,255,255)
black = (0,0,0)
red = (255,0,0)
green = (0,155,0)
blue = (50,50,155)
display_width = 800
display_height = 600
gameDisplay = pygame.display.set_mode((display_width,display_height))
pygame.display.set_caption('Numeracy Ninjas')
clock = pygame.time.Clock()
img_button_start = pygame.image.load('Sprites/Buttons/button_start.png')
img_button_options = pygame.image.load('Sprites/Buttons/button_options.png')
gameDisplay.fill(white)
class Button(pygame.sprite.Sprite):
def __init__(self, sprite, buttonX, buttonY):
super().__init__()
gameDisplay.blit(sprite, (buttonX, buttonY))
pygame.display.update()
running = True
while (running):
for event in pygame.event.get():
if event.type == pygame.MOUSEBUTTONDOWN:
# Set the x, y postions of the mouse click
x, y = event.pos
print(x, y)
if x <= (150 + buttonX) and x >=(0 + buttonX) and y <= (75 + buttonY) and y >= (0 + buttonY):
print('clicked on button')
def gameIntro():
button_start = Button(img_button_start, 27, 0)
button_options = Button(img_button_options, 27, 500)
gameIntro()
Danke für das Feedback, vermuten ich es zu einem unendlichen zurückzuführen Schleife, aber ich habe versucht, mit Ihrem Code und sehen, wie es funktioniert, aber es sagte immer "erwartet einen Einzug Block". Ich bin neu in der Programmierung, also bin ich mir nicht sicher, ob das Setzen der Ereignisprüfungsmethode in der Hauptschleife wirklich funktionieren würde, weil ich Variablen innerhalb der Button-Klasse wie buttonX, buttonY usw. habe, die nur innerhalb der Klasse aufgerufen werden können. aber dann verwendest du self.rect.collidepoint also bin ich mir nicht sicher. Ich versuche einen Weg zu finden, um diese Schleifen zur gleichen Zeit laufen zu lassen, wenn das möglich ist, aber ich weiß es nicht. –