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.