Я использую swift для разработки игры в шахматы. Когда компьютер играет сам, дисплей не обновляется, когда ход завершается, пока он не выходит из цикла (в этом случае игра заканчивается).
Я попытался отправить его в фоновую очередь, чтобы сгенерировать перемещение, и отправить его обратно в основную очередь, чтобы выполнить перемещение и обновить отображение. Хотя это, кажется, помогает обновить отображение, но у меня нет возможности предсказать завершение каждой фоновой очереди. Это портит порядок ходов.
Есть ли лучший способ заставить компьютер играть самому и правильно обновлять дисплей после каждого хода?
while chessGame.checkmate != true {
DispatchQueue.global(qos: .background).async {
let bestMove = chessAI.findBestMove(depth : chessGame.searchDepth)
if bestMove != nil {
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now()) {
chessMove.makeMove(m : bestMove!)
self.boardView.setNeedsDisplay()
}
} else {
print("CheckMate!")
chessGame.checkmate = true
}
}
}