Я занимаюсь разработкой шахматоподобной игры, но я считаю, что этот вопрос можно распространить на все игры, в которых есть битвы.
Поэтому мой вопрос заключается в том, как правильно обозначить объект как friend
объект или enemy
объект в боевой игре?
Взять, к примеру, шахматы. Если игрок W играет белыми фигурами, то противник W , игрок B , играет черными фигурами.
Для W , все белые фигуры friend
объекты, а черные фигуры enemy
объекты, в то время как игрок B имеет черный friends
и белый enemies
. Поэтому здесь моя проблема с маркировкой может быть просто решена с помощью цветов. Когда вы пытаетесь рассчитать возможные ходы фигуры и решить, можете ли вы взять фигуру, вы можете в основном проверить, имеют ли они разные цвета.
Однако что, если два игрока имеют одинаковое представление? Например, игра может окрасить все friends
в черный цвет, а все enemies
- в белый, и игроки начнут свои игры со своими фигурами внизу. В этом смысле слова действительно можно рассматривать как атрибуты игрока. Таким образом, черный и белый цвета основаны на том, есть ли у части идентификатор владельца, который совпадает с вашим.
Здесь возникает проблема:
Хотя я могу выбрать цветсравнивая идентификаторы, что если я захочу узнать, входит ли фигура friend
в enemy region
?
Определение enemy region
может быть верхней частью доски. Поскольку доска не является частью игрока (в то время как фигуры могут быть), невозможно использовать предыдущее решение для идентификатора.
Поэтому одно из возможных решений, которое я могу придумать, - сделать доску атрибутом . игрока . Однако, есть два игрока, это удваивает хранилище данных, потому что у нас фактически только одна доска с объективной точки зрения. И любые ходы и дальнейшие изменения фигуры требуют операций на двух досках, что также отнимает много времени.
Чтобы не удвоить доску, я пытаюсь использовать другую стратегию, котораяиспользовать альбомную ориентацию . Я имею в виду, что данные не принимают стороны как игроки. Игроки видят игровое поле с снизу до сверху , что похоже на портретное представление , в то время как данные можно просматривать с слева направо / справа налево как то, что наблюдает справедливый судья. Таким образом, данные становятся объективными здесь. Но проблема в том, как субъективно представить объективные данные игрокам? И все еще непросто узнать, попадает ли кусок во вражеский регион.
Поэтому мой вопрос: как мне правильно спроектировать структуру данных, чтобы она не удваивалась, не утраивалась и не копировалась несколько раз? данных, и в то же время, это также легко узнать ярлыки публичной области? В моем вопросе публичная зона - шахматная доска, где все фигуры должны сражаться на этой единственной доске. Я называю это public , потому что оба игрока могут перемещать свои фигуры повсюду на игровом поле, и третьи лица также могут видеть, что происходит на игровом поле. Но ярлыки кусочков - это просто субъективные атрибуты, личные личные мысли.
Я не уверен, смогу ли я правильно объяснить / сформулировать свой вопрос хорошо, поэтому я не искаланалогичный вопрос. Извините за мою лень. Если был задан дублирующий вопрос, направьте меня к нему.
--- Обновление ---
Я думаю, что более ясный вопрос, скажем, у меня есть 3 *3 доски. Если мне нужно переместить свою фигуру из (1, 2) в (2, 3), то, с точки зрения моего оппонента, движение не происходит в том же месте. Это наоборот. Это от (3, 2) до (2, 1). Каков наилучший способ сохранить этот ход? Нужно ли брать одну сторону (субъективную), чтобы сохранить ее, или есть нейтральный / объективный способ сделать это?
Недостаток субъективного подхода для меня заключается в том, что мне нужно пересчитать ходы, чтобы другой игрок соответствовал его / ее мнению. Использование нейтрального пути может быть спасением.