Таким образом, учитывая, что ваша структура данных snake представляет собой набор прямоугольников, а змея только «ест» из прямоугольника головы, определить процедуру столкновения довольно просто.
Библиотека PyGame rect имеет функции для проверки столкновений между прямоугольниками.
Таким образом, предполагая, что head_rect
- это rect
с координатами и размером головы вашей змеи, а food_rect
- этоэлемент для проверки:
if ( head_rect.colliderect( food_rect ) ):
# TODO - consume food
Или, если есть список food_rect
в food_list
:
def hitFood( head_rect, food_list ):
""" Given a head rectangle, and a list of food rectangles, return
the first item in the list that overlaps the list items.
Return None for a no-hit """
food_hit = None
collide_index = head_rect.collidelist( food_list )
if ( collide_index != -1 ):
# snake hit something
food_hit = food_list.pop( collide_index )
return food_hit
Это намного проще использовать библиотеки PyGameфункции перекрытия прямоугольника, чем создание своих собственных.