ICOGON: натянем шахматы на глобус

в 18:16, , рубрики: three.js, геометрия, игра на javascript, шахматы

Привет всем!

доска и мяч

доска и мяч

Представленные объекты чем-то похожи, не правда ли? При этом существенно отличаются, как общей формой, так и формой составляющих их клеток. Возникает непреодолимое желание найти способ… нет, не превращения одного объекта в другой, а скорее преобразования «мяча» в «игровое поле», «доску». Следующие шаги: изменение как характера, так и количества фигур, и как следствие — изменение правил, при том что, и фигуры, и правила должны, с одной стороны, минимально отличаться от шахматных, а с другой, быть максимально адаптированы к новой доске.

додекаэдр

додекаэдр

Многогранник формы футбольного мяча, или фуллерена, геометрически получается из додекаэдра как-бы «добавлением» белых клеток между чёрными.

В идее задачи неявно содержится принцип максимального «равноправия» клеток. Абсолютной идентичности среди них достичь не получится, так как правильных многогранников всего пять, да и граней у них маловато, поэтому придётся пользоваться производным одного из них. В дополнение, представляется интуитивно верным использовать не квадраты, а именно шестиугольники, как правильные многоугольники, способные, с одной стороны, образовать паркет (в математическом смысле), а с другой, обеспечить минимальную анизотропию. Склейка конструкции производится посредством пятиугольников, так как одними шестиугольниками сферу замостить нельзя.

икосаэдр

икосаэдр

Додекаэдр в определённом смысле обратен икосаэдру. Если они вписаны в одну и ту же сферу, то их можно расположить так, что вершины икосаэдра будут строго над центрами граней додекаэдра.

один из многогранников Гольдберга
один из многогранников Гольдберга

Итак, расставшись с додекаэдром, берём икосаэдр, отмечаем центры уже его граней, проецируем на описанную сферу. Если теперь соединить кратчайшим образом полученные точки, то получим более мелкую сетку. Далее ещё раз находим центры полученных граней, снова проецируем их на описанную сферу. Все полученные таким образом точки становятся центрами клеток доски, как на одном из многогранников Гольдберга, и они, очевидно, делятся на три группы:

  1. «Вершинные» правильные пятиугольники

  2. «Граневые» правильные шестиугольники  

  3. «Рёберные» шестиугольники (вообще говоря, неправильные)

    Кстати, на шахматной доске тоже три группы клеток: угловые, краевые и все остальные.

Одной итерации деления недостаточно — мало клеток, ведь в классических шахматах — 64, а здесь вдвое меньше. После второй итерации имеем 92 клетки = 12 красных + 20 синих + 60 зелёных. Больше клеток — больше фигур, но их расстановку и распределение ролей вполне можно сохранить максимально приближенным к плоскому древнему мудрому исходнику. Здесь произвол автора ограничен количеством клеток, их формой и расположением.

собственно ICOGON

собственно ICOGON
  1. Король в начале стоит строго в центре своих фигур, на «полюсе», ходит на одну клетку в любом направлении

  2. Ферзь, в начале стоит рядом, перед Королём, ходит в любом направлении по «геодезической прямой», закономерно упираясь возможными траекториями в красные «вершинные» клетки.

  3. Ладьи, в начале, вместе с ферзём стоят вокруг Короля, ходят по прямым, на которых могут быть клетки любого цвета, и траектории на больших расстояниях изгибаются по «параллелям» доски, то есть у ладьи может быть одновременно более одной траектории, которая пересекается с другой.

  4. Слоны, в начале стоят на втором радиусе, ходят только по красным и синим клеткам, как по «диагоналям». Разделения на «разнопольных», как в шахматах, нет.

  5. Кони, в начале стоят на втором радиусе, в некотором смысле, возмещают отсутствие разделения между слонами, так как ходят только по зелёным клеткам, и их траектории со слонами не пересекаются.

  6. Пешки, в начале стоят на третьем радиусе, ходят на одну клетку вперёд, по ходу движения, а едят вправо ли влево, кроме случая, когда попадают на красную клетку, тогда могут, и ходить, и съесть в любом направлении, и кроме их (!) первого хода, когда могут и ходить, и есть влево-вперёд и вправо-вперёд.

Важная особенность — многие фигуры, не только пешки, ограничены в направлениях. Ферзи, слоны и ладьи, имеют некоторый «угол обстрела», а короли и кони ограничений в направлениях не имеют.

Рокировку король, стоящий на красном поле, может сделать с любой фигурой, кроме пешки и коня, стоящей на ближайшем красном поле, то есть просто поменяться с фигурой местами, и только один раз с каждой (ферзём, слоном, ладьёй).

Если в шахматах, рокировка — это своего рода способ заранее убрать короля подальше от гущи схватки, вытащив ладью, то здесь, скорее последний шанс короля на бегство от мата.

Положения «шах», «пат» и «мат» идентичны с уважаемым исходником и введено состояние «абсолютной» ничьей, когда на доске остаются только два короля. В дальнейшем это состояние будет расширено.

Кроме того, программа способна (пока на глубину лишь в полхода) рассчитать свой следующий ход по эвристическому принципу. Фигурам присвоены «веса» + подсчитывается их «мобильность», то есть количество доступных полей, на основе чего рассчитывается значение целевой функции (ЦФ) для любой позиции. Чем лучше значение ЦФ после хода, тем предпочтительней ход. В дальнейшем ЦФ будет рассчитываться на более существенную глубину.

По целесообразности введения механизма «превращения пешки в ферзя» пока решения нет.

Старт — клик на таблицу внизу, и запустится таймер.

Зарегавшись, можно играть с другим пользователем или с ботом Multer, который ходит по описанной выше схеме.

Там же, но в ни к чему не обязывающем демо-режиме:

P.S. Название происходит от ИКОсаэдра, и внезапно идентично одному филиппинскому острову, на котором я ни разу не был, и узнал о его существовании только после того, как придумал название.

P.P.S. ¯_(ツ)_/¯ , если яркие цвета вырвали Вам глаз.

Автор: Solist1979

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js