Как трудно это должно реализовать шахматный механизм? [закрытый]

Другие уже отправили превосходные ответы, я просто хотел добавить, что с большинством языков, платформ и вариантов использования Вы будете иметь дело с POST очень, намного чаще, чем ПОМЕЩЕННЫЙ. К точке, где ПОМЕЩЕНО, УДАЛИТЕ, и т.д. в основном вопросы о мелочах.

45
задан Frank 18 July 2009 в 22:15
поделиться

11 ответов

Последний год я потратил на создание собственного шахматного движка на C #. Это было не так уж и сложно. Во время моей работы я делал ошибки, я обнаружил, что информация в Интернете была просто нечетко представлена, и большая часть ее была просто скопирована с других сайтов.

Чтобы облегчить жизнь кому-то другому, проходящему через этот процесс, я документировал развитие моего шахматного движка и разместил большую часть исходного кода в своем блоге:

http://www.chessbin.com

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

  1. Весь код, необходимый для представления шахматной доски и шахматных фигур
  2. Код, связанный с проверкой движения шахматной фигуры
  3. Графический интерфейс пользователя, который отображает шахматную позицию и позволяет перемещать фигуры по доске

Мой сайт в основном предназначен для таких же людей, как вы; люди, которые хотят начать создавать свой собственный шахматный движок.

54
ответ дан 26 November 2019 в 21:00
поделиться

Crafty - один из лучших шахматных движков с полностью открытым исходным кодом. Однако я бы не рекомендовал вам использовать его для студенческого проекта, он написан на C, очень сложен и очень труден для понимания, потому что он сильно оптимизирован.

В образовательных целях я бы рекомендовал взглянуть на сайт Адама Берентса , где он описывает процесс, через который он прошел, когда реализовал шахматный движок на C #. Исходный код, конечно, тоже доступен. На мой взгляд, это отличный момент для начала.

8
ответ дан 26 November 2019 в 21:00
поделиться

Я не могу ответить на ваш вопрос, но могу ответить на ваш последний комментарий

«Было бы интересно иметь над шахматными движками работают разные команды а потом пусть играют против каждого другое ... "

Это уже сделано на шахматном сервере FICS . Я предлагаю вам войти в систему (требуется telnet) и также проверить документацию, вы, вероятно, сможете связаться с люди, способные дать вам конкретные подсказки о своих шахматных ботах

7
ответ дан 26 November 2019 в 21:00
поделиться

We did a mancala AI followed by a chess AI in Algorithms and Data Structures (sophomore CS).

However, the professor provided big chunks of the chess engine, and we had to do things like improve the decision function, implement checkmate, and other things.

0
ответ дан 26 November 2019 в 21:00
поделиться

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

Это, конечно, далеко не идеально: настоящие игроки могут пожертвовать некоторыми юнитами для достижения долгосрочных целей. Этот алгоритм этого не сделает.

0
ответ дан 26 November 2019 в 21:00
поделиться

Разумный шахматный движок на современных ПК, безусловно, выполним, особенно если вы достаточно взрослые, чтобы помнить, что было много шахматных программ, которые использовали всего несколько килобайт памяти на 1 и 2 МГц 8- бит-машины, которые могли неплохо играть. В настоящее время вы можете создать шахматный движок на интерпретируемом языке и победить лучшего программиста 6502 или Z80, кодирующего свои самые быстрые и быстрые вещи.

Мне пришлось поработать с Дэном Спракленом, который написал оригинал Sargon ] в 1978 году со своей женой Кэтлин. Брат Кэтлин сделал перенос на Apple II, и я работал с ним и его сыном. (В то время, когда я работал с этими ребятами, бизнес, ориентированный на прибыль потребителей, был завершен. Я помню одного парня, который выпускал игры Atari ST и Amiga Chess, и к тому времени для них было действительно мало рынка.)

" это потрясающее введение в шахматное программирование, которое любители сделали в 1983 году. Его все еще приятно читать. Охватывает хорошие вещи: альфа-бета, минимакс и т. Д.

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

alt text

6
ответ дан 26 November 2019 в 21:00
поделиться

Сделать хороший проект сложно, но, вероятно, примерно на том уровне, который нужен для дипломного проекта (когда я сдавал экзамен по информатике, мой друг написал шахматный движок для своего финала. года).

И да, есть проекты с открытым исходным кодом, ведущим претендентом является GNU Chess , который очень уважаем.

4
ответ дан 26 November 2019 в 21:00
поделиться

Все зависит от поставленной вами цели об ИИ игры! если это игра вдвоем ... легко! Но ИИ довольно сложен ... Хорошо, хорошо известный открытый исходный код - это GNU Chess!

Некоторые алгоритмы: http://www.vclcomponents.com/s/0__/source_code_genetic_algorithm_chess
Вот вики по шахматному программированию !

0
ответ дан 26 November 2019 в 21:00
поделиться

На моем старшем курсе по искусственному интеллекту мы потратили полсеместра на создание различных шахматных движков и их тестирование с помощью XBoard или WinBoard. Затем в конце семестра у нас был турнир, где шахматные движки учеников соревновались друг с другом в XBoard. В целом это сработало очень хорошо.

Если я правильно помню, интерфейс с XBoard довольно прост. Вот несколько ссылок.

http://www.gnu.org/software/xboard/

интерфейс для XBoard

http://www.tim-mann.org/xboard/engine-intf.html

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

0
ответ дан 26 November 2019 в 21:00
поделиться

Да, это определенно входит в рамки студенческого проекта. Вот несколько ссылок из моего архива, чтобы вы начали:

33
ответ дан 26 November 2019 в 21:00
поделиться

Каждый год в моем университете курс "Введение в ИИ" (3-й курс) требует от студентов создания шахматной программы с нуля вместе с бумагой, и в лекции мы рассмотрели главу о состязательном поиске, чтобы у студентов было достаточно знаний для этого. Для нас проект может быть выполнен как самостоятельно, так и совместно с другим (очевидно, что мы ожидаем лучшей программы, если она будет выполнена с партнером, например, с более глубоким слоем и т.д.). Так как курс "Компьютерная графика" также является курсом 3-го курса, студентам разрешается совмещать финальный проект этого курса с финальным проектом курса "ИИ".

Так как я учился на 3-м курсе и занимаюсь на обоих курсах (которые сейчас заканчиваются первым семестром), я объединился с другом, который также учится на обоих курсах, и мы работаем над программой с момента окончания экзаменов (это было примерно 21 декабря), и она должна быть сдана 11 января.

Это полностью выполнимо в течение месяца (особенно в качестве дипломного проекта). Мы делаем программу для 3d шахмат, поэтому она требует больше работы, чем просто шахматный движок, конечно же. Самыми сложными частями будут принятие решения о представлении доски, реализация всех правил (en passant, castling, promotion и т.д.), создание эвристической функции и дерева игры (что обычно делается с альфа-бета обрезкой).

Вот сайт, который мы используем для документирования прогресса, а затем размещаем код и бумагу, как только мы закончим (сейчас он немного пуст). http://sites.google.com/site/chessatbrock/

2
ответ дан 26 November 2019 в 21:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: