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