Tôi đang tạo trò chơi trong pygame và trên màn hình đầu tiên tôi muốn có các nút mà bạn có thể nhấn để (i) bắt đầu trò chơi, (ii) tải màn hình mới với hướng dẫn và (iii) thoát khỏi chương trình .Làm cách nào để tạo các nút trong python/pygame?
Tôi đã tìm thấy mã này trực tuyến để thực hiện nút, nhưng tôi không thực sự hiểu nó (tôi không giỏi về lập trình hướng đối tượng). Nếu tôi có thể nhận được một số lời giải thích như những gì nó đang làm đó sẽ là tuyệt vời. Ngoài ra, khi tôi sử dụng nó và cố gắng để mở một tập tin trên máy tính của tôi bằng cách sử dụng đường dẫn tập tin, tôi nhận được lỗi sh: filepath: Quyền bị từ chối, mà tôi không biết làm thế nào để giải quyết.
#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()
Cảm ơn mọi người có thể giúp tôi.
Được rồi, tôi sẽ thử điều đó, cảm ơn sự giúp đỡ. – user1334014