Comments 9
А чем не устроило описание наподобие регулярных выражений?
Просто сложные ходы можно попытаться описать отдельно. Например:
player-turn player-king-unmoved east empty-unattacked empty-unattacked (?: (1:player-pawn-unmoved)) \1 west any any
для короля: anyDir (empty|enemy-capture)-unnattacked
def Leap = empty|(enemy-capture?)
def Ride = empty* Leap
ферзь: anyDir Ride
Слон: digDir Ride
Ладья: crossDir Ride
Конь: (forward any forwardDiag Leap) | (backward any backwardDiag Leap)|…
Пешка: forward empty lastline-promote | forwardDiag enemy-capture | secondline forward empty empty trigger-fastmove |
(?: west (1:enemy-fastmove)) northwest any (?:\1-capture) | (?: east (1:enemy-fastmove)) northeast any (?:\1-capture)
Просто сложные ходы можно попытаться описать отдельно. Например:
player-turn player-king-unmoved east empty-unattacked empty-unattacked (?: (1:player-pawn-unmoved)) \1 west any any
для короля: anyDir (empty|enemy-capture)-unnattacked
def Leap = empty|(enemy-capture?)
def Ride = empty* Leap
ферзь: anyDir Ride
Слон: digDir Ride
Ладья: crossDir Ride
Конь: (forward any forwardDiag Leap) | (backward any backwardDiag Leap)|…
Пешка: forward empty lastline-promote | forwardDiag enemy-capture | secondline forward empty empty trigger-fastmove |
(?: west (1:enemy-fastmove)) northwest any (?:\1-capture) | (?: east (1:enemy-fastmove)) northeast any (?:\1-capture)
+1
Слишком сложно получается (я уже всю голову на эту тему сломал). Пока речь идёт просто о причудливых шахматных перемещениях, типа Chu Shogi, всё более-менее нормально (хотя там тоже чудес хватает). Шашки и, например, Фанорона уже заставляют напрячься. Когда дело доходит до манкал и "Болотуду", начинаешь рвать на себе волосы. Ну а как выразить «регэкспами» правила Го или, например "Ордо" или "Ритмомахию", я просто не представляю. Отсюда родилась идея обогащения ходов. Описать всё что описывается просто DSL-ем (да хоть и регэкспами), создав заготовку с простейшим перемещением фигур, а всю сложную логику вынести в JavaScript-расширения (благо писать их легче чем ZoG-расширения на C++).
0
Отказываться от чего-то, во то вложено много времени и сил, и вправду очень тяжело. Но, похоже, был сделан правильный выбор в пользу разработки своих компонентов — разжав пальцы, сбросили и оковы (судя по списку запланированных опций — много оков).
Успехов в дальнейшей эволюции! И мне кажется, что создателям Jocly про это тоже можно было узнать.
Успехов в дальнейшей эволюции! И мне кажется, что создателям Jocly про это тоже можно было узнать.
0
Sign up to leave a comment.
Dagaz: эволюция вместо революции