Пишу простые шахматы

Тема в разделе "Машинное отделение", создана пользователем My_Avatar, 5 июн 2010.

  1. TopicStarter Overlay

    My_Avatar Зарегистрирован

    Рег.:
    05.06.2010
    Сообщения:
    4
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    Помогите пожалуйста с оценочной функцией и если можно покажите коды простых программ(на Delphi)...
    и ещё вопрос: как не описывать каждую клетку в отдельности, т.к. он пишет что Sender(TObject) не совместим с TStaticText
  2. Goranflo Заслуженный

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    30.09.2006
    Сообщения:
    28.038
    Симпатии:
    30.289
    Репутация:
    675
    Оффлайн
    Насколько помнится, в комплекте с Дельфи уже шел пример шахмат в исходниках...
  3. Chemer Максим

    • Участник
    Рег.:
    14.09.2006
    Сообщения:
    1.674
    Симпатии:
    13
    Репутация:
    0
    Адрес:
    Запорожье
    Оффлайн
    "Пишу простые шахматы" - проще уж на православном чистом си писать. и короче будет и проще. :/
  4. phisey Модератор

    • Команда форума
    Рег.:
    04.05.2007
    Сообщения:
    2.344
    Симпатии:
    7
    Репутация:
    0
    Оффлайн
    Лучше на си, потому что в интернете выложены коды сильных движков, написанные именно на си. Они содержат в себе оценочную функцию. Но заметьте шахматные программы состоят обычно из двух частей, оболочки-интерфейса (где визуально двигаешь фигуры) и движка (где работают алгоритмы поиска лучшего хода за компьютер).
  5. TopicStarter Overlay

    My_Avatar Зарегистрирован

    Рег.:
    05.06.2010
    Сообщения:
    4
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    Хорошо, а что примерно надо оценивать(в позиции)
  6. ProstoTak Старожил

    • Ветеран
    • Старожил
    Рег.:
    12.02.2006
    Сообщения:
    5.479
    Симпатии:
    123
    Репутация:
    1
    Оффлайн
    В Гугле поищите Машина играет в шахматы это книжка такая. Там есть описание всей подноготной на человеческом языке
  7. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.492
    Симпатии:
    3.122
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    В позиции надо оценивать соотношение материала и централизацию фигур. На первых порах этого достаточно - до уровня, скажем, 2200. Хотя некоторые умудряются и на 2500 с такой оценкой движки делать.
  8. TopicStarter Overlay

    My_Avatar Зарегистрирован

    Рег.:
    05.06.2010
    Сообщения:
    4
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    ?
  9. просроченый_кмс Старожил

    • Участник
    • Старожил
    Рег.:
    15.02.2010
    Сообщения:
    1.112
    Симпатии:
    167
    Репутация:
    6
    Оффлайн
    Я думаю первое что после материальной оценки надо сделать, и не такое сложное, это активность фигур, в центре фигуры активнее, но лучше всё сделать в общем виде, фигура может быть в центре но не иметь нормальных ходов.

    Можно например оценивать конечную позицию по количеству ходов которые могут совершить свои фигуры минус ходы фигур соперника.

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

    И пара программист + шахматист тут может многое придумать, как авторы рыбки например, я дальше материальной оценки не стал делать, играл немного со своей прогой без взятия на проходе, рокеровки, превращений пешек, но зато альфа бета отсечение было :)
  10. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.492
    Симпатии:
    3.122
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    К сожалению, в шахматном программировании усложнить не всегда равно усилить.
  11. просроченый_кмс Старожил

    • Участник
    • Старожил
    Рег.:
    15.02.2010
    Сообщения:
    1.112
    Симпатии:
    167
    Репутация:
    6
    Оффлайн

    Но усилить это всегда усложнить.

    Я привёл простой пример позиционной оценки, её можно усложнить если считать все ходы фигур на 2 хода, если учитывать те поля где коня например могут съесть пешкой, и т.п.
  12. Mustitz Заслуженный

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    30.09.2006
    Сообщения:
    3.546
    Симпатии:
    1.265
    Репутация:
    36
    Адрес:
    Киев
    Оффлайн
    Абсолютно нет. Можно учитывать все ходы фигур на два хода, но более сложная оценка будет требовать больше времени на вычисления, поэтому в результате сила движка может упасть.

    В реале может оказаться, что замена сложной оценки на более примитивную и менее точную приведет к усилению игры по той же причине.
  13. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.492
    Симпатии:
    3.122
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Усложняя оценку, мы всегда уменьшаем количество позиций, к которым она будет применена. Быстродействие конечно.
  14. TopicStarter Overlay

    My_Avatar Зарегистрирован

    Рег.:
    05.06.2010
    Сообщения:
    4
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    И как?)
    Я имею ввиду как играет...
    Просто альфа-бета, без хеш-таблиц и углублений?
  15. просроченый_кмс Старожил

    • Участник
    • Старожил
    Рег.:
    15.02.2010
    Сообщения:
    1.112
    Симпатии:
    167
    Репутация:
    6
    Оффлайн

    Да я же чаник) и писал на паскале с нуля по своей имхе.
    Ну без превращений что бы переиграть надо постараться, перебирает все варианты, не считая отсечений думает всего на 6-8 полуходов, надо заранее выставлять.

    И ввод там был цифрами например кж8-ф6 надо было ввести 4 цифры 7 8 6 6, фигня короче. крестики нолики 20*20 были более фундаментальными.

    У меня там была суперсложная оценка позиции, из суммы оценок всех возможных линий по вертикали диагонали и горизонтали длиной 5, их несколько тысяч, например если на этой линии стоит и X и O то грош ей цена.
  16. DrNix Николай

    • Участник
    Рег.:
    28.11.2006
    Сообщения:
    22
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Москва
    Оффлайн
    Скорее из разряда курьезов :)

    Javascript в работе использует уже чуть ли не каждый веб-разработчик. Но пока только мексиканцу Оскару Толедо удалось упихнуть в один килобайт кода на Javascript самый настоящий шахматный алгоритм.

    http://js1k.com/demo/435

    По ссылке можно сразиться с компьютером прямо в окошке браузера, а также ознакомиться с весьма заковыристым кодом скрипта. :)
  17. ProstoTak Старожил

    • Ветеран
    • Старожил
    Рег.:
    12.02.2006
    Сообщения:
    5.479
    Симпатии:
    123
    Репутация:
    1
    Оффлайн
    Дык он же просто генерирует ходы и выбирает наугад. На проходе не умеет брать. Рокировки не умеет делать. "Настоящим шахматным алгоритмом" там и не пахнет. :|

Поделиться этой страницей