- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 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/
我是编程新手,并且卡在涉及蛇方向改变的特定部分上。该游戏与旧诺基亚手机上的游戏相同。很经典。 目前,每次我按 W、A、S 或 D 键,蛇都会移动 1 平方/20 像素。问题是我希望这个 Action
如果您熟悉任何梦幻体育选秀,选秀顺序网格如下所示: EXAMPLE 1 (3-teams): Round Team 1 Team 2 Team 3 1 1 (1.1) 2 (
我从这里得到了蛇算法的代码(在MatLab中实现) http://www.mathworks.com/matlabcentral/fileexchange/28109-snakes-active-co
我遵循了这个 link 中的示例.然而,轮廓从初始点开始收缩。是否可以做展开的轮廓?我想要像显示的图像那样的东西。左边的图像是它的样子,右边的图像是我想要的样子——向外扩展而不是收缩。红色圆圈为起点,
我正在编写一款类似于贪吃蛇的游戏。目前,我正在努力编写 move() 和 Growth() 方法。这个游戏的运作方式是,蠕虫从 1 block 开始,每 move 一步就增加 1 block ,直到达
说明 我目前正在使用 Pygame 开发蛇游戏,但我遇到了一个问题,因为我的蛇目前仅由方 block 组成,但如果蛇包含蛇头、 body 、尾部的绘制 25x25 图片,我会发现它会更好对于弯曲的 b
我是一名优秀的程序员,十分优秀!