gpt4 book ai didi

python - 如何检查蛇游戏中的蛇是否穿过食物?

转载 作者:太空宇宙 更新时间:2023-11-04 00:02:08 27 4
gpt4 key购买 nike

我正在使用 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_list 中有一个 food_rect 的列表:

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 的库矩形重叠函数比自己制作要容易得多

关于python - 如何检查蛇游戏中的蛇是否穿过食物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55350190/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com