Спрайттар соқтығысуын анықтау
Анықтама
Спрайттың екі негізгі қасиеті: image — бейнеленген сурет, rect — спрайтты қамтитын тіктөртбұрышты аймақ. Класс құру арқылы бір типті бірнеше кейіпкерді (мыс. роботтарды) оңай көбейтуге болады.
class Robots(pygame.sprite.Sprite):
def __init__(self, image_file, location):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load(image_file)
self.rect = self.image.get_rect()
self.rect.left, self.rect.top = location Анықтама
pygame.sprite.spritecollide(sprite, group, dokill) — берілген спрайттың топтағы (group) басқа спрайттармен соқтығысқанын тексереді.
| № | Қадам |
| 1 | Спрайтты уақытша топтан (group) өшіру |
| 2 | Осы спрайттың топтағы басқалармен соқтығысуын тексеру |
| 3 | Спрайтты қайта топқа қосу |
Есеп: Экран шекарасына жеткен спрайтты кері бағытта серпу.
def move(self):
self.rect = self.rect.move(self.speed)
if self.rect.left < 0 or self.rect.right > width:
self.speed[0] = -self.speed[0] Жауабы: спрайт шекараға жеткенде x бағытындағы жылдамдық таңбасы кері ауысады, спрайт қарама-қарсы бағытта жылжи бастайды.
Деңгей: Қиын Роботтардың соқтығысуы
Берілді: pygame.sprite.Group() тобындағы 4 робот, әрқайсысы кездейсоқ бағытта қозғалады.
Табу керек: екі робот соқтығысқанда екеуінің де бағыты өзгеруі керек.
Шешуі:
spritecollide(robot, group, False) нәтиже қайтарса (соқтығысу тіркелсе), robot.speed[0] = -robot.speed[0] және speed[1] да теріске ауысады.
Жауабы: соқтығысқан екі робот та кері бағытта серпіледі.