Jak tworzyć przyciski w python / pygame?

Tworzę grę w pygame i na pierwszym ekranie chcę, aby były przyciski, które można nacisnąć, aby (i) uruchomić grę, (ii) załadować nowy ekran z instrukcjami i (iii) wyjść z programu.

Znalazłem ten kod online do tworzenia przycisków, ale tak naprawdę nie rozumiem tego (nie jestem dobry w programowaniu zorientowanym obiektowo). Gdybym mógł uzyskać wyjaśnienie, co robi, byłoby świetnie. Ponadto, gdy go używam i próbuję otworzyć plik na moim komputerze przy użyciu ścieżki do pliku, otrzymuję błąd sh: filepath: Odmowa uprawnień, której nie wiem jak rozwiązać.

<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>

Dziękuję każdemu, kto może mi pomóc.

questionAnswers(4)

yourAnswerToTheQuestion