2012-06-17 7 views
0

Добрый день,Пытается создать группу кнопок спрайты

Мне нравится 15 изображений Мне нужно быть кнопками. У меня есть кнопки, работающие с коробкой() (Box - выглядит следующим образом)

class Box(pygame.sprite.Sprite): 
    def __init__(self): 
     pygame.sprite.Sprite.__init__(self) 
     self.image = pygame.Surface((35, 30)) 
     self.image = self.image.convert() 
     self.image.fill((255, 0, 0)) 
     self.rect = self.image.get_rect() 
     self.rect.centerx = 25 
     self.rect.centery = 505 
     self.dx = 10 
     self.dy = 10 

Я пытаюсь сделать кнопки работы с спрайтов. Поэтому я попытался скопировать стиль класса коробки и сделать то же самое для моих икон .. код выглядит следующим образом ...

class Icons(pygame.sprite.Sprite): 
    def __init__(self): 
     pygame.sprite.Sprite.__init__(self) 
     self.image = pygame.image.load("images/airbrushIC.gif").convert() 
     self.rect = self.image.get_rect() 
     self.rect.x = 25 
     self.rect.y = 550 

код в главном()

rect = image.get_rect() 
rect.x = 25 
rect.y = 550 
ic1 = Icons((screen.get_rect().x, screen.get_rect().y)) 
screen.blit(ic1.image, ic1.rect) 
pygame.display.update() 

Этот код создает позиционную (принимает 1 аргумент, но 2 есть), или изображение не ссылается на ошибку (внутри класса Icon).

Я не уверен, что это правильный путь для этого. Я точно знаю, что мне нужно загрузить все изображения (как спрайты) ... сохранить их в массиве ... и затем попросите мою мышь проверить, выбрал ли он один из элементов массива, используя цикл for.

Спасибо.

+0

Если вы хотите задать другой вопрос, задайте другой вопрос. Не редактируйте и не ожидайте ответа людей, это не так, как работает SO. Я отредактирую ваш дополнительный вопрос. –

ответ

2

Вы пытаетесь передать аргумент в Icons(), но ваш метод __init__() не принимает никаких аргументов. Если вы хотите, чтобы передать те на Sprite() конструктор, то вы, вероятно, хотели что-то вроде:

class Icons(pygame.sprite.Sprite): 
    def __init__(self, *args): 
     pygame.sprite.Sprite.__init__(self, *args) 
     ... 

Это принимает любое количество дополнительных аргументов (*args) с помощью оператора звезды, а затем передает их в конструктор спрайтов.

+0

Могу ли я спросить, почему Box не нуждается в этих аргументах? Он делает то же самое правильно. Единственное реальное различие заключается в том, что одно изображение - это draw.rect. – user1449653

+1

Поскольку вы не передавали аргументы конструктору 'Box', когда вы создали« Коробку ». Вы передали аргументы конструктору 'Sprite', когда вы создали' Sprite'. –

Смежные вопросы