Как я могу эффективно хранить ключ в Pygame?Python

Программы на Python
Ответить
Anonymous
 Как я могу эффективно хранить ключ в Pygame?

Сообщение Anonymous »

Я нашел два связанных вопроса:
  • Удержание клавиши Pygame вызывает бесконечный цикл
  • pygame — кнопка удержания нажата
Но я хочу быть конкретнее. Как мне это сделать?

Код: Выделить всё

while not done:
for e in event.get():
if e.type == KEYDOWN:
keys = key.get_pressed()
if e.type == QUIT or keys[K_ESCAPE]:
done = True
if keys[K_DOWN]:
print "DOWN"
Когда я нажимаю стрелку вниз, он печатает, но печатает только один раз. Если я хочу напечатать его еще раз, мне нужно нажать его еще раз.
Если вместо этого я использую ключевое слово while,

Код: Выделить всё

while keys[K_DOWN]:
print "DOWN"
По какой-то неясной причине у меня получается бесконечный цикл.
Эта логическая альтернатива также бесполезна:

Код: Выделить всё

if ((e.type == KEYDOWN) and keys[K_DOWN]):
print "DOWN"
И есть еще один, который каким-то образом очищает события, и вы можете использовать while:

Код: Выделить всё

while not done:
for e in event.get():
if e.type == KEYDOWN:
keys = key.get_pressed()
if e.type == QUIT or keys[K_ESCAPE]:
done = True
while keys[K_DOWN]:
print "DOWN"
event.get()
keys = key.get_pressed()
Но вы нажимаете клавишу «Вниз» менее одной секунды, и она печатается тысячи раз. (Переместить игрока было бы невозможно, и настройка часов для этого, похоже, не лучший способ справиться с этим (и я пытался, но потерпел неудачу).)
Нажимать и выполнять блок тысячи раз бесполезно. Что я хочу, так это нажать клавишу и продолжать действие, пока я не отпускаю ее, в пределах определенной тактовой частоты игры.

Подробнее здесь: https://stackoverflow.com/questions/220 ... -in-pygame
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»