Страницы

Поиск по вопросам

пятница, 9 ноября 2018 г.

Способ хранения координат фишек

Пишу бота, который будет играть в простейшую игру. В начале каждого хода из файла считывается игровое поле, которое представляет собой матрицу 8х8. В игре 4 игрока, их фишки, соответственно, обозначены цифрами 1, 2, 3, 4 и расставлены на игровом поле. Нужно найти все фишки каждого игрока и каким-то образом хранить местоположение (координаты) каждой фишки. Как можно это сделать? Пробовал запоминать координаты в обычный массив и в vector, но это не совсем удобно.


Ответ

Есть два варианта хранения - хранение состояния игры (доски), а на ней фишек (например, массив
int board[8][8];
в котором пустые поля обозначены нулями, а непустые - номером стоящей там фишки.
Но исходя из "Необходимо, чтобы можно было максимально просто получить доступ к координатам выбранной фишки", вам нужен второй вариант - а именно, массив фишек с их координатами (x,y), которые можно реализовать как стандартный pair, а можно с помощью своей структуры типа
struct Point { int x,y; };
Но, как я понимаю, вам нужно и то, и другое - чтобы, зная фишку, сразу получить возможные ходы - например, пустая ли какая-то клетка?
Я бы просто делал класс типа Game, который бы хранил и доску, и четыре фишки, и при каждом ходе обновлял как координаты фишки, так и состояние доски. Интерфейс такого класса содержал бы функции для - возврата координат фишки номер N - возврата номера фишки на поле (x,y) (0, если пусто) - перемещения фишки N на новое поле.
Как бы вы ни старались, сделать этот класс медленным - с 64 полями - у вас не получится. Какое нужно внутреннее представление - смотрите сами, что вам привычнее.

Комментариев нет:

Отправить комментарий