Pygame:get_at 持续返回 'None'

Pygame: get_at consistently returning 'None'

我试图通过检测玩家矩形下方像素的颜色来检测 Pygame(红色矩形)中的玩家是否与红色框发生碰撞;但是,当我在 Pygame 中使用 get_at() 方法时,它始终 returns 'None' 即使播放器处于颜色状态。

检测颜色的函数如下:

def get_color(x, y):
   screen.get_at((x, y))

这里是我调用函数的地方(p1.x是玩家1的x坐标,p1.y是玩家1的y坐标,另外,我的背景是黑色的,因为我没有在整个程序中不要用任何颜色填充背景):

if get_color(p1.x, p1.y) != black:
    print(get_color(p1.x, p1.y))

上面的最后一个打印语句不断返回 "None",即使玩家明显位于红色框的顶部。

您必须在函数中使用 return 来 return 来自 get_at()

的值
def get_color(x, y):
   return screen.get_at((x, y))

如果您不使用 return,则 Python 默认使用 return None,因此它的工作方式类似于

def get_color(x, y):
   screen.get_at((x, y))
   return None

您的 get_color 函数没有返回值。如果写得正确,您的 get_color 函数应该是:

def get_color(x, y):
    return screen.get_at((x, y))

附带说明一下,您实际上并不需要 get_color 函数。您可以只在需要的地方使用 get_at