Я сейчас внедряю что-то очень похожее на шашки.Итак, у меня есть настольная игра, в которой есть как белые, так и черные фигуры.Там, где нет ни белых, ни черных фигур, у вас их не будет.
В настоящее время я использую метод GetValidMoves()
, который возвращает все текущие ходы, которые можно сделать с текущей доской.
Мне интересно, что может быть лучшим способом представить доску.Наивным подходом было бы иметь матрицу с 0, 1 и 2 (без фигуры, белой фигуры и черной фигуры).
Другая идея состояла бы в том, чтобы вместо матричного представления доски иметь 2 списка (или любая другая структура данных): одна для черных фигур, другая для белых.
Я реализую эту игру для тестирования некоторых алгоритмов ИИ, поэтому моя главная проблема - скорость.Я в основном поставлю двух игроков ИИ, играющих друг с другом, для каждого хода у каждого игрока должен быть список всех его действительных ходов, и затем он будет выбирать, какой ход делать, это всегда происходит до конца игры (какой-то игрок выигрывает илиtie).
PS: я не спрашиваю об алгоритме ИИ, я просто хочу знать, какова будет лучшая структура данных для управления платой, чтобы упростить
- Поиск всех действительных ходов для текущего игрока
- Выполнение хода
- Убедитесь, что игра не окончена (она заканчивается, когда один игрок потерял все свои фигуры или один игрок достигдругая сторона доски).