Sto facendo un gioco in pygame e sul primo schermo voglio che ci siano dei pulsanti che puoi premere per (i) avviare il gioco, (ii) caricare una nuova schermata con le istruzioni e (iii) uscire dal programma .Come creare pulsanti in python/pygame?
Ho trovato questo codice online per la creazione di pulsanti, ma non lo capisco davvero (non sono così bravo nella programmazione orientata agli oggetti). Se potessi avere qualche spiegazione su quello che sta facendo sarebbe grandioso. Inoltre, quando lo uso e provo ad aprire un file sul mio computer usando il percorso del file, ottengo l'errore sh: filepath: Autorizzazione negata, che non so come risolvere.
#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()
Grazie a tutti coloro che possono aiutarmi.
OK, ci provo, grazie per l'aiuto. – user1334014