Wie erstelle ich Buttons in Python / Pygame?

Ich mache ein Spiel im Pygame und möchte auf dem ersten Bildschirm Schaltflächen haben, die Sie drücken können, um (i) das Spiel zu starten, (ii) einen neuen Bildschirm mit Anweisungen zu laden und (iii) das Programm zu beenden.

Ich habe diesen Code online zum Erstellen von Schaltflächen gefunden, verstehe ihn aber nicht wirklich (ich kann nicht so gut objektorientiert programmieren). Wenn ich eine Erklärung darüber bekommen könnte, was es tut, wäre das großartig. Wenn ich es verwende und versuche, eine Datei unter Verwendung des Dateipfads auf meinem Computer zu öffnen, wird der Fehler sh: filepath: Permission denied angezeigt, den ich nicht lösen kann.

<code>#load_image is used in most pygame programs for loading images
def load_image(name, colorkey=None):
    fullname = os.path.join('data', name)
    try:
        image = pygame.image.load(fullname)
    except pygame.error, message:
        print 'Cannot load image:', fullname
        raise SystemExit, message
    image = image.convert()
    if colorkey is not None:
        if colorkey is -1:
            colorkey = image.get_at((0,0))
        image.set_colorkey(colorkey, RLEACCEL)
    return image, image.get_rect()
class Button(pygame.sprite.Sprite):
    """Class used to create a button, use setCords to set 
        position of topleft corner. Method pressed() returns
        a boolean and should be called inside the input loop."""
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image, self.rect = load_image('button.png', -1)

    def setCords(self,x,y):
        self.rect.topleft = x,y

    def pressed(self,mouse):
        if mouse[0] > self.rect.topleft[0]:
            if mouse[1] > self.rect.topleft[1]:
                if mouse[0] < self.rect.bottomright[0]:
                    if mouse[1] < self.rect.bottomright[1]:
                        return True
                    else: return False
                else: return False
            else: return False
        else: return False
def main():
    button = Button() #Button class is created
    button.setCords(200,200) #Button is displayed at 200,200
    while 1:
        for event in pygame.event.get():
            if event.type == MOUSEBUTTONDOWN:
                mouse = pygame.mouse.get_pos()
                if button.pressed(mouse):   #Button's pressed method is called
                    print ('button hit')
if __name__ == '__main__': main()
</code>

Vielen Dank an alle, die mir helfen können.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage