如何检查蛇游戏中的蛇是否已经越过食物?

时间:2019-03-26 05:06:33

标签: python pygame collision-detection collision

我正在使用python和pygame进行蛇类游戏,但是在检查蛇类是否穿过食物时遇到了问题。这里有人可以帮我吗?

我尝试将食物的位置设置为10的倍数,因为我的蛇的宽度和高度也是10,并且窗口(宽度和高度)也是10的倍数。

food_x = random.randrange(0, displayWidth-foodWidth, 10)
food_y = random.randrange(0, displayHeight-foodHeight, 10)

我希望这样做可以使食物定位,从而不会发生碰撞,而蛇和食物会直接重叠,这将使编码更容易。但是,也有碰撞。

1 个答案:

答案 0 :(得分:3)

因此,鉴于您的蛇数据结构是一组矩形,并且蛇仅从头部矩形“吃掉”,确定碰撞例程非常简单。

PyGame rect library在矩形之间具有checking collisions的功能。

因此,假设head_rectrect,具有您的蛇头的坐标和大小,并且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的库矩形重叠功能比创建自己的库容易得多。