Comments 26
так и мышкой — левая кнопка откуда, правая — куда
А почему, не как принято и удобно, когда вы выбираете фигуру, то для неё известны все доступные перемещения, можно подсветить их и клик по одному из них — подтверждение хода.
Я несколько раз думал, что было бы хорошо, если бы был такой мощный движок, который позволял бы редактировать правила игры. То есть можно унаследовать свой класс от общего для фигур класса (или от нужной фигуры) и реализовать функцию как
vector<Move> generate_moves(int pos_x, int pos_y, vector<Piece> & pieces)
Я смотрел движки как Stockfish, и там это могло быть реализуемым, так как от каждой фигуры требуется только список ходов и ее "цена", но правила там вшиты намертво наподобии этих AHIIIIEWB0MFFF. Т.е. такой возможности нет нигде, даже в шахматы Фишера не поиграешь.
А так можно было бы собрать свои доски как угодно и поиграть в сказочные шахматы. Чтобы понять эпичность, можно посмотреть на список — Fairy chess piece.
Кстати, в моём движке нет такого итеративного углубления, он считает сразу на максимальную глубину и ограничений по времени не имеет.
Если не делать программу для свержения Магнуса Карлсена, то для любительского уровня должно выйти нормально по уровню, даже если на Java писать. К тому же книга Корнилова из 2005 года, когда компьютеры были "мощные" как современные телефоны. Прямо уж свет клином сошелся — трюки делать с битовыми операциями.
Конечно мало смысла делать на универсальном движке Шахматы. Для них есть масса специализированных движков. Но как только речь заходит о вариантах, универсальность выходит на первый план. Очень трудоёмко писать каждую реализацию на C++, как в ChessV. Гораздо быстрее набросать прототип на каком нибудь DSL (например ZRF), пощупать его, а если понравится, думать о том как сделать так, чтобы движок играл посильнее. Способы есть.
Другие правила игры — другие правила оценки позиции. Причем, если для шахмат уже к началу создания первых программ был накоплен колоссальный эмпирический опыт, то как оценивать позиции в любой нестандартной игре абсолютно неясно.
Причем тот же StockFish до сих пор развивается в том числе и в направлении улучшения оценки позиций на сотнях тысяч партий в распределенной системе тестирования. Поэтому даже на телефоне обыграет подавляющее большинство игроков-людей.
А как улучшать силу игры для экзотических разновидностей, если нет ни теоретической базы, ни огромных вычислительных мощностей под рукой для подбора настроек методом грубой силы? Так и будет программа играть во все, что угодно, но на уровне чуть выше своего создателя.
Где-то я уже видел фигуры со скриншота…
Под вайном в Линуксе вываливается после:
uci
id name Centurion 1.0 16.04.2015
id author Dmitriy Trunov (Da-nie)
uciok
isready
readyok
position fen rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq — 0 1
go movetime 3000
Рыбка и Стокфиш работают.
Ввод позиций из фен-строки у вас не поддерживается, я так понимаю.
Так его и никто не смог победить, ибо он читирил). Когда он срубал мою фигуру из нее вылуплялся ферзь. Этакие зомби-шахматы :)
Я выигрываю обычно, если начинаю думать, а не просто шлёпаю.
Но я тоже шахматами серьёзно занимался в детстве-юности.
Разработка шахматной программы