Примерно год назад я смог запустить программу, которая использовала pygame. Мои программы запускаются, но не распознают некоторые ключевые команды. Например, когда я набираю 'A' или 'S', состояние игры должно измениться, но это не так. Точнее говоря, второй внешний блок if в цикле for не запускается, когда он должен.
Во-первых, я убедился, что pygame был установлен как модуль на pycharm. Я также перешел в режим отладки для вставленного фрагмента кода, и я все еще пытаюсь определить проблему и почему она пропускает второй внешний блок if в цикле for.
if __name__ == '__main__':
start_game()
update_game()
while True:
pygame.time.wait(GAME_SPEED)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit(0)
if event.type == pygame.KEYDOWN and not a1_game.GAME_IS_OVER:
# If the current player is using a manual playstyle, the
# pick a move when a key is pressed
if (not a1_game.BATTLE_QUEUE.is_over() and
a1_game.BATTLE_QUEUE.peek().playstyle.is_manual):
k = 'X'
if event.key == pygame.K_a:
k = 'A'
elif event.key == pygame.K_s:
k = 'S'
a1_game.LAST_KEY_PRESSED = k
a1_game.perform_attack()
# If the current player isn't using a manual playstyle, pick a move
if (not a1_game.GAME_IS_OVER and
not a1_game.BATTLE_QUEUE.is_over() and
not a1_game.BATTLE_QUEUE.peek().playstyle.is_manual and
RANDOM_TIMER == 10):
a1_game.perform_attack()
# Redraw the game
update_game()
# Only let the random strategy make a decision every 10 ticks of time
RANDOM_TIMER -= 1
if RANDOM_TIMER == 0:
RANDOM_TIMER = 10
pygame.quit()
sys.exit(0)