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.