Pygame: get_at последовательно возвращает 'None' - PullRequest
1 голос
/ 20 мая 2019

Я пытаюсь определить, столкнулся ли игрок в Pygame (красный прямоугольник) с красным прямоугольником, обнаружив цвет пикселя под прямоугольником игрока; тем не менее, когда я использую метод get_at () в Pygame, он последовательно возвращает «None», даже если у игрока цвет.

Вот функция определения цвета:

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

И здесь я вызываю функцию (p1.x - координата x игрока 1, а p1.y - координата y игрока 1, также мой фон черный, потому что я не заполняю фон любым цвет по всей программе):

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

Последнее приведенное выше утверждение печати продолжает возвращать «Нет», даже когда игрок явно находится над красной рамкой.

Ответы [ 2 ]

1 голос
/ 20 мая 2019

Ваша функция get_color не возвращает значение. Правильно написано, ваша get_color функция должна быть:

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

Просто примечание, вам не нужна функция get_color. Вы можете просто использовать get_at там, где это необходимо.

1 голос
/ 20 мая 2019

Вы должны использовать 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
...