我正在使用python和pygame进行蛇类游戏,但是在检查蛇类是否穿过食物时遇到了问题。这里有人可以帮我吗?
我尝试将食物的位置设置为10的倍数,因为我的蛇的宽度和高度也是10,并且窗口(宽度和高度)也是10的倍数。
food_x = random.randrange(0, displayWidth-foodWidth, 10)
food_y = random.randrange(0, displayHeight-foodHeight, 10)
我希望这样做可以使食物定位,从而不会发生碰撞,而蛇和食物会直接重叠,这将使编码更容易。但是,也有碰撞。
答案 0 :(得分:3)
因此,鉴于您的蛇数据结构是一组矩形,并且蛇仅从头部矩形“吃掉”,确定碰撞例程非常简单。
PyGame rect library在矩形之间具有checking collisions的功能。
因此,假设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的库矩形重叠功能比创建自己的库容易得多。