Чуть левее наклон — все равно не спасти!
Но спокойно, ему остается пройти
Всего две четверти пути!
Владимир Высоцкий "Натянутый канат"
Когда фронт работ выглядит совершенно необозримым, его волей-неволей, приходится делить на мелкие куски. Кусочек, для первой итерации, я выбрал совсем небольшой:
Очень простые шашки
(board
(name chess-board-10x10)
(dim "a-j")
(dim "10-1")
(dir (name nw) -1 -1)
(dir (name ne) 1 -1)
(dir (name se) 1 1)
(dir (name sw) -1 1)
)
(piece
(name Man)
(pre
(check is-friend?)
(take)
(log position)
(let captured 0)
)
(post
(check (<= max-captured captured))
(set! max-captured captured)
(log " - " position)
(drop)
)
(move
(check (any nw ne))
(check is-empty?)
)
(move
(while true
(let dir (any nw ne sw se))
(check dir)
(check is-enemy?)
(capture)
(inc! captured)
(check dir)
(check is-empty?)
(end-move)
)
)
)
(game
(name "Simple Checkers")
(board chess-board-10x10)
(players
(White (Man a1 c1 e1 g1 i1 b2 d2 f2 h2 j2 a3 c3 e3 g3 i3))
(Black (Man b8 d8 f8 h8 j8 a7 c7 e7 g7 i7 b6 d6 f6 h6 j6))
)
)
Даже без дамок! Фигуры двигаются вперёд и могут «бить» противника, по привычным нам правилам "Шашек" (перепрыгивая через фигуру). Дойдя до последней линии доски, они ни во что не превращаются, но могут брать фигуры противника, поскольку взятия «назад» разрешены. В этом отношении, разрабатываемая игра похожа на «Осетинские шашки», описанные в одной из предыдущих статей. Взятие обязательно и, из всех возможных ходов, игрок должен выбрать ход, берущий максимальное количество фигур. Игра завершается, когда один из игроков не может выполнить очередной ход (заперт или потерял все фигуры).
Разумеется, речь идёт не о том, чтобы «закодить очередные шашки» (это можно было бы сделать и с меньшими усилиями). Я хочу разработать «метаигровую» систему, позволяющую описывать достаточно сложные логические игры, используя простой DSL и, в идеале, не обладая продвинутыми навыками программирования (то есть, ровно то, что делает Zillions of Games, но в полностью открытом и кроссплатформенном проекте).
Читать дальше →
via Хабрахабр / Интересные / Тематические публикации http://ift.tt/1Me99ug
Комментариев нет:
Отправить комментарий