как определить, был ли спрайт нажат в Pygame - PullRequest
6 голосов
/ 15 июня 2011

Я новичок в Pygame, сейчас я работаю со спрайтами.Мой вопрос: как я могу определить, был ли нажат спрайт?Я хочу сделать что-то, когда спрайт был нажат точно как кнопка.

thx:)

[Отредактировано]

thx Стивен.Кроме того, есть ли способ узнать, кто является спрайтом, который был нажат?Вот пример кода

boxes = pygame.sprite.Group()
for color, location in [([255, 0, 0], [0, 0]),
                        ([0, 255, 0], [60, 60]),
                        ([0, 0, 255], [120, 120])]:
    boxes.add(UpDownBox(color, location)

например, я щелкаю спрайт в местоположении [0,0], программа должна напечатать его цвет или его местоположение.еще раз спасибо :)

Ответы [ 2 ]

6 голосов
/ 15 июня 2011

Прошло много времени с тех пор, как я что-то делал в Pygame, но основная идея IIRC заключается в том, что у вашего спрайта должен быть атрибут rect , который описывает его положение на экране. Когда вы получаете событие щелчка мыши, вы получаете позицию , вызывая pygame.mouse.get_pos(). Затем вы можете проверить наличие столкновения между rect с центром в позиции мыши и прямоугольником вашего спрайта, вызвав pygame.sprite.collide_rect() для обоих rect объектов.

Хороший пример можно найти здесь .

1 голос
/ 22 сентября 2011

Упрощенно: Rect.collidepoint (x, y)

основной цикл

#in event handling:
if event.type == MOUSEMOTION: x,y = event.pos

for box in boxes:
    if box.rect.collidepoint(x,y): print 'yay!'

В обоих Rect * 1009 есть еще несколько функций столкновения* и Спрайт .См .:

...