В предыдущем выпуске я рассказал о методе переноса игрового состояния в память, который называется "От объектов". В этом методе каждый объект представлен неким индивидуальным набором данных и хранится как отдельная сущность.
Второй метод – "От пространства".
Давайте снова посмотрим на шахматную доску. Мы ранее сохраняли в памяти объекты, то есть шахматные фигуры, но не сохраняли доску. Она нам по сути не нужна, потому что у каждой фигуры есть свои координаты, и этого достаточно, чтобы знать её местоположение.
Однако что будет, если мы сохраним в памяти не объекты, а пространство, в котором они находятся, то есть доску?
Чтобы понять это получше, представьте, что клетки доски это не просто нарисованные квадраты, а реальные куски пространства, которые могут быть пустыми или содержать что-то внутри себя.
Давайте для начала сохраним в памяти пустую доску:
0, 0, 0, 0, 0, 0, 0, 0
Вот последовательность из 8 байт, которые равны нулю. Это первый ряд клеток доски, а всего рядов 8, поэтому продолжим:
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Это 64 байта, которые соответствуют 64-м клеткам доски. В памяти они расположены одной длинной цепочкой, но нам ничто не мешает записать их для себя вот так:
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
Прелесть этого метода в том, что просто записав числа в память, мы уже создали подобие физического пространства, которое даже внешне похоже на доску.
Теперь вспомним о том, что мы нарисовали пустые клетки доски. А если есть пустые, значит могут быть и непустые. А что может быть в непустой клетке? Шахматная фигура! А как ее закодировать? А это мы уже знаем. Мы уже кодировали фигуры и числами, и символами, поэтому предлагаю оставить символы. Чтобы расставить фигуры на доске, надо просто в пустые клетки вписать коды фигур.
Посмотрите – мы фактически создали визуальный образ шахматной доски в памяти.
Проверим критерии, которые мы задали при проектировании:
- Какая фигура в клетке? Это нам известно, потому что в клетке хранится код фигуры.
- Какого цвета фигура? Это тоже известно из кода фигуры.
- Где она находится? Очевидно, она находится прямо в клетке, которую мы проверяем, а у клетки есть адрес, значит пространственное положение фигуры известно.
- Как она взаимодействует с другими фигурами? Все другие фигуры также находятся в клетках с известными координатами, так что все взаимодействия можно легко вычислить.
Следовательно, данное представление полностью подходит, чтобы реализовать всю техническую часть игры в шахматы.
Нам остается только взять данные, полученные двумя методами, сравнить их плюсы и минусы, и обсудить, как с ними работать дальше.
Читайте дальше: Какой метод лучше?