Итак, сейчас я работаю над игрой в шахматы. Я закончил все базовые действия c, и теперь я пытаюсь добавить функциональность импорта PGN и просмотра ходов, когда они воспроизводятся медленно.
Вот часть, ответственная за это :
def main2():
PGN = """
1.e4 e6 2.d4 d5 3.Nc3 Nf6 4.e5 Nfd7 5.Nce2 c5 6.c3 Nc6 7.f4 cxd4 8.cxd4 Qb6
9.Nf3 Be7 10.Ng3 Bb4+ 11.Kf2 f6 12.Be3 fxe5 13.fxe5 O-O 14.Ne2 Be7 15.b3 Nd8
16.Kg3 Nf7 17.Qd3 Nh8 18.h4 Rf5 19.Kf2 Qd8 20.g4 Rf7 21.Kg2 Nf8 22.Ng3 Nhg6
23.g5 Nf4+ 24.Bxf4 Rxf4 25.Ne2 Ng6 26.Kg3 Rf5 27.Bh3 Rf8 28.Rhf1 Nh8 29.Kh2 Bd7
30.Rg1 Rc8 31.h5 g6 32.Rg2 Rf7 33.Nh4 Kg7 34.h6+ Kg8 35.Rag1 Qf8 36.Qe3 Rc2
37.Ng3 Rff2 38.Rf1 Rxg2+ 39.Nxg2 Nf7 0-1
"""
game_gen = logic.state_from_PGN(PGN, wrapper_dict=LETTER_TO_PIECE)
game = game_gen.__next__()
screen, background, clock, pieces, buttons, moving_piece, game = initialize(game)
for game in game_gen:
update_screen(screen, background, pieces, buttons, moving_piece)
pygame.display.update()
clock.tick(10)
return game
Итак, эта функция импортирует файл PGN и продолжает обновлять игру, пока не достигнет конечного состояния и не вернет его. Затем функция main () вступает во владение и позволяет пользователю вводить данные в игру, если игра еще не закончилась матом.
Проблема возникает, когда я настраиваю fps в clock.tick(10)
. С 10 к / с он работает нормально, но по мере уменьшения фпс. окно pygame перестает отвечать раньше и раньше. Затем он выходит из состояния "не отвечает", когда PGN полностью завершен (и после того, как он вернул окончательное состояние игры)