Python простая игра с pygame - лимиты - PullRequest
1 голос
/ 10 июля 2020

Я сделал простую игру с python, используя библиотеку Pygame, но когда я закончил, я просто заметил, что что-то забыл. LIMITS

Я довольно новичок в python, и я пробовал с

if player_pos[1] <= 600:
  pygame.K_DOWN = None

* player_pos [1] - это позиция игрока y * 600 - это предел отображения

Но затем клавиша «вниз» просто перестала работать, поэтому я просто стер эти строки.

Ответы [ 2 ]

5 голосов
/ 10 июля 2020

Вы не можете (или хотя бы не должны пытаться) превратить ввод в None. Просто используйте логический тест, чтобы решить, хотите ли вы двигаться дальше ...

if key_pressed == 'K_RIGHT':  (or whatever syntax you use to catch keypress..)
    if player_pos[1] < limit:
        # update the player position
    else:
        pass
1 голос
/ 11 июля 2020

@ JeffH уже предложил способ исправить ваш код. Я просто хотел убедиться, что вы понимаете, почему то, что вы делаете, вызывает проблемы, и указать на соглашение о константах. Непонимание и использование этого соглашения об именах затруднит понимание другого кода и усложнит другим попытки прочитать ваш код.

pygame.K_DOWN задуман как определенная константа, это не ввод или управляющая переменная. Вы ни в коем случае не должны его изменять.

Python не имеет истинных констант, которые не позволяют их изменить, поэтому это обрабатывается по соглашению. Переменные, которые по соглашению должны быть константами, используют все имена в верхнем регистре, например K_DOWN, и вы просто не должны их изменять. Как вы обнаружили, что-то может сломаться или вести себя странно, если вы это сделаете.

В вашем случае «кнопка вниз перестала работать», потому что константа, используемая для ее проверки, больше не содержит правильного значения. Pygame предоставит вам код клавиши для клавиши со стрелкой вниз (число 274, когда я распечатаю его в своей системе), но вы присвоили None константе, с которой вы должны сравнивать это значение, чтобы определить, является ли это стрелкой вниз ключ, так что сравнение теперь не удастся.

Вот почему это перестало работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...