Пишу бота, который будет играть в простейшую игру. В начале каждого хода из файла считывается игровое поле, которое представляет собой матрицу 8х8. В игре 4 игрока, их фишки, соответственно, обозначены цифрами 1, 2, 3, 4 и расставлены на игровом поле. Нужно найти все фишки каждого игрока и каким-то образом хранить местоположение (координаты) каждой фишки. Как можно это сделать? Пробовал запоминать координаты в обычный массив и в vector
, но это не совсем удобно.
Есть два варианта хранения - хранение состояния игры (доски), а на ней фишек (например, массив
int board[8][8];
в котором пустые поля обозначены нулями, а непустые - номером стоящей там фишки.
Но исходя из "Необходимо, чтобы можно было максимально просто получить доступ к координатам выбранной фишки", вам нужен второй вариант - а именно, массив фишек с их координатами (x,y), которые можно реализовать как стандартный pair<int,int>
, а можно с помощью своей структуры типа
struct Point {
int x,y;
};
Но, как я понимаю, вам нужно и то, и другое - чтобы, зная фишку, сразу получить возможные ходы - например, пустая ли какая-то клетка?
Я бы просто делал класс типа Game
, который бы хранил и доску, и четыре фишки, и при каждом ходе обновлял как координаты фишки, так и состояние доски. Интерфейс такого класса содержал бы функции для
- возврата координат фишки номер N
- возврата номера фишки на поле (x,y) (0, если пусто)
- перемещения фишки N
на новое поле.
Как бы вы ни старались, сделать этот класс медленным - с 64 полями - у вас не получится. Какое нужно внутреннее представление - смотрите сами, что вам привычнее.
Пробовал запоминать координаты в обычный массив и в vector, но это не совсем удобно.
А что неудобно? Если делать массив, то нужно конвертер в наглядную форму сделать. И будет всё очень даже удобно.
Но я бы взял пример из шахмат. Где одна ось буквами обозначается, другая цифрами. Координаты записываются как A6, E3... и т.д. Это и очень быстрый вариант, и очень наглядный.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Добрый день! Имеется текст, который содержит код на с++Код состоит из описании нескольких классов(может быть наследование и полиморфизм) и основной...
В проекте исходные файлы в UTF8 кодировке, поменять нельзя, мне нужна именно эта кодировкаПри попытке вывести в консоль русские буквы, получаю...
Дан файл с результатами игры с информацией об имени и времени игры примерно такой:
У меня есть задание на метавычисление констант с помощью boost::mpl: