А>Здравствуйте всем! Заранее извините, если форумом ошибся. А>Мне нужен алгоритм, по которому можно было бы написать программу игры в шахматы на Delphi. Единственное чтоя знаю из области написания подобной программы — это как сделать доску и фигуры (это у меня есть). Мне нужно.. ну например:
А>1. Как заставить коня ходить буквой "Г"? А>2. Как пешку заставить ходить по вертикали а брать по диагонали?
А>И т.д. Вопросы в том же духе. В общем, наверное нужно сваять некий искуственный интеллект по которому это всё дело работало бы. Но как? Если кто знает, напишите сюда в форум, или мне на e-mail: web-support@mail.ru А>Заранее спасибо!
Вы конечно извините, но если возникают вопросы "Как заставить коня ходить буквой "Г"", то о написании какого шахматного AI может вообще вестичь речь?
А>Здравствуйте всем! Заранее извините, если форумом ошибся. А>Мне нужен алгоритм, по которому можно было бы написать программу игры в шахматы на Delphi. Единственное чтоя знаю из области написания подобной программы — это как сделать доску и фигуры (это у меня есть). Мне нужно.. ну например:
А>1. Как заставить коня ходить буквой "Г"? А>2. Как пешку заставить ходить по вертикали а брать по диагонали?
А>И т.д. Вопросы в том же духе. В общем, наверное нужно сваять некий искуственный интеллект по которому это всё дело работало бы. Но как? Если кто знает, напишите сюда в форум, или мне на e-mail: web-support@mail.ru А>Заранее спасибо!
Гарри, ты?
[ Posted via RSDN@Home 1.1.4 beta 4 (303) listening to Сказка — Голубой щенок (1) ]
It's kind of fun to do the impossible (Walt Disney)
Игра в шахматы.
От:
Аноним
Дата:
28.03.05 18:13
Оценка:
Здравствуйте всем! Заранее извините, если форумом ошибся.
Мне нужен алгоритм, по которому можно было бы написать программу игры в шахматы на Delphi. Единственное чтоя знаю из области написания подобной программы — это как сделать доску и фигуры (это у меня есть). Мне нужно.. ну например:
1. Как заставить коня ходить буквой "Г"?
2. Как пешку заставить ходить по вертикали а брать по диагонали?
И т.д. Вопросы в том же духе. В общем, наверное нужно сваять некий искуственный интеллект по которому это всё дело работало бы. Но как? Если кто знает, напишите сюда в форум, или мне на e-mail: web-support@mail.ru
Заранее спасибо!
А>Здравствуйте всем! Заранее извините, если форумом ошибся. А>Мне нужен алгоритм, по которому можно было бы написать программу игры в шахматы на Delphi. Единственное чтоя знаю из области написания подобной программы — это как сделать доску и фигуры (это у меня есть). Мне нужно.. ну например:
А>1. Как заставить коня ходить буквой "Г"? А>2. Как пешку заставить ходить по вертикали а брать по диагонали?
А>И т.д. Вопросы в том же духе. В общем, наверное нужно сваять некий искуственный интеллект по которому это всё дело работало бы. Но как? Если кто знает, напишите сюда в форум, или мне на e-mail: web-support@mail.ru А>Заранее спасибо!
В Examples Turbo Pascal'я 7.0 есть пример программы, играющей в шахматы. Называется, CHESS. Думаю тебе это поможет.
_DA>Вы конечно извините, но если возникают вопросы "Как заставить коня ходить буквой "Г"", то о написании какого шахматного AI может вообще вестичь речь?
А разве ход конём не является областью шахматного AI? Или это что-то значительно более сложное? Я извиняюсь, конечно, может, глупые вопросы,но я никогда такие вещи не разрабатывал. И потом ещё: здесь мне посоветовали посмотреть примеры Borland Pascal (там установлены исходники CHESS по умолчанию). Но весь ужас в том, что они не компилируются (хотите верьте хотите нет). Может есть у кого прямая ссылка на исходники шахмат?
Здравствуйте, DelphiMaster, Вы писали:
DM>И потом ещё: здесь мне посоветовали посмотреть примеры Borland Pascal (там установлены исходники CHESS по умолчанию). Но весь ужас в том, что они не компилируются (хотите верьте хотите нет).
Здравствуйте, DelphiMaster, Вы писали:
DM>А разве ход конём не является областью шахматного AI? Или это что-то значительно более сложное? Я извиняюсь, конечно, может, глупые вопросы,но я никогда такие вещи не разрабатывал. И потом ещё: здесь мне посоветовали посмотреть примеры Borland Pascal (там установлены исходники CHESS по умолчанию). Но весь ужас в том, что они не компилируются (хотите верьте хотите нет). Может есть у кого прямая ссылка на исходники шахмат?
Нет, не является.
Схема такая — есть AI — он ищет подходящий ход перебором, двигаясь по дереву возможных позиций. Из него вызывается функция генерации перемещения — ход конем — ее забота. Если мы подставим туда другую функцию, получем шашки, например. Дальше, есть оценочная функция — она уже решает, хороший это ход или нет
Здравствуйте, Аноним, Вы писали:
А>Мне нужен алгоритм, по которому можно было бы написать программу игры в шахматы на Delphi.
Господа, возникло смутное ощущение, что нас разводят.
А ведь 1-е апреля ещё не наступило.
А> Единственное чтоя знаю из области написания подобной программы — это как сделать доску и фигуры (это у меня есть).
Купил, наверно осталось только сваять некий искуственный интеллект и приделать моторчики к фигуркам.
Что-то я какой-то злой сегодня
Такая тема и такое ее продолжение... Мне кажеться, что Вы несколько не готовы к такой задаче, либо это тема лабораторной работы...
Во-первых, хочу порекомендовать интерфейс WinBoard, чтобы можно было сконцентрироваться на логике, а не на интерфейсе. Или совместимую с этим протоколом Арену
Заданые вопросы относятся к технике программирования и совсем мало к шахматному программированию... Ответы на вопросы зависят напрямую от того, как ты собираешься представлять позицию. Чисто интуитивно, я начинал с массива из 64-х байт, но однажды прочитал, что разработчик программы (вроде Греко) в новой версии переделал пердставление позиции с массива на список фигур... Вот отредактированый фрагмент из недавней попытки написать шахматныю программу (доска представляет в виде массива):
@ Строим таблицы для коня. Данный код инициализирует два массива: |KnightTable|,
которая последовательно клетки, куда может пойти конь последовательно с полей
0, 1, 2 (a1, b1, c1, ...), Разделенных символом -1. Массив |KnightCatalog| показывает,
с какого индекса в массиве |KnightTable| перечислен список полей, куда может пойти конь.
@d PutKnightMove(#) == begin KnightTable[C] := #; C := C + 1; end
@<Таблица для коня@> =
C := 0;
Cell := 0;
for Y := 0 to 7 do
for X := 0 to 7 do
begin
KnightCatalog[Cell] := C;
if (X >= 2) and (Y >= 1) then PutKnightMove(Cell-10);
if (X >= 1) and (Y >= 2) then PutKnightMove(Cell-17);
if (X <= 6) and (Y >= 2) then PutKnightMove(Cell-15);
if (X <= 5) and (Y >= 1) then PutKnightMove(Cell-6);
if (X <= 5) and (Y <= 6) then PutKnightMove(Cell+10);
if (X <= 6) and (Y <= 5) then PutKnightMove(Cell+17);
if (X >= 1) and (Y <= 5) then PutKnightMove(Cell+15);
if (X >= 2) and (Y <= 6) then PutKnightMove(Cell+6);
PutKnightMove(-1);
Cell := Cell + 1;
end;
@ Чтобы определеть список полей, куда может пойти конь в поля I, нам надо
будет последовательно просматривать поля |KnightTable[KnightCatalog[18]],
KnightTable[KnightCatalog[18]+1], ...|, до тех пор, пока мы не получим в результате -1.
@<Ход белым конем@> =
J := KnightCatalog[I];
while KnightTable[J] <> -1 do
begin
if Board[KnightTable[J]] <= 0 then { Если поле занято черной фигурой или свободно }
AddMove(I, KnightTable[J]);
J := J + 1;
end;
Вообще... По шахматному программированию действует рассылка на yahoo. Могу порекомендовать такие ссылки:
Здравствуйте, Voblin, Вы писали:
А>>Мне нужен алгоритм, по которому можно было бы написать программу игры в шахматы на Delphi. V>Господа, возникло смутное ощущение, что нас разводят.
V>А ведь 1-е апреля ещё не наступило.
Разводят, потому что на Delphi? Скажем, мне нравится такой движок, как Delfi, рейтинг 2550-2400, чемпион Италии 2004 года...
TECHNICAL DETAILS
Delfi is quite an uncommon chess program, it uses some human-like strategical/tactical schemes to play the game, many of these ideas were conceived during my games against computers in the last 15 years. Delfi has a lot of endgame knowledge, it can play very well the most important 4-pieces endgames and the KRP-KR, thanks to an internal database.
Delfi is written in Object Pascal, in pure object oriented style.
Здравствуйте, DelphiMaster, Вы писали:
DM>Здравствуйте, _DAle_, Вы писали:
_DA>>Вы конечно извините, но если возникают вопросы "Как заставить коня ходить буквой "Г"", то о написании какого шахматного AI может вообще вестичь речь?
DM>А разве ход конём не является областью шахматного AI? Или это что-то значительно более сложное? Я извиняюсь, конечно, может, глупые вопросы,но я никогда такие вещи не разрабатывал. И потом ещё: здесь мне посоветовали посмотреть примеры Borland Pascal (там установлены исходники CHESS по умолчанию). Но весь ужас в том, что они не компилируются (хотите верьте хотите нет).
Не может быть. Сейчас у меня нет под рукой Pascal'я, но я точно помню, что еще в школе (видимо, это не так трудно было) я его скомпилил и попробовал поиграть, интерфейс конечно ужасный (текстовый), но дело не в интерфейсе.
Есть такая софтина, Borland Pascal 7.0.
Так вот, в полном дистрибе в сэмплах есть исходник (на паскале) очень даже прилично (для сэмпла) играющий в шахматы.
Chez, ICQ#161095094
Posted via:RSDN@Home;version:1.1.3;muzikstamp:Sopor Aeternus — Im Garten Des Nichts