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

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

  1. My_Avatar
    Оффлайн

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

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

    Goranflo баннер

    Репутация:
    675
    Насколько помнится, в комплекте с Дельфи уже шел пример шахмат в исходниках...
     
  3. Chemer
    Оффлайн

    Chemer Максим

    Репутация:
    0
    "Пишу простые шахматы" - проще уж на православном чистом си писать. и короче будет и проще. :/
     
  4. phisey
    Оффлайн

    phisey Модератор

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

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

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

    ProstoTak Старожил

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

    WinPooh В.М. Команда форума

    Репутация:
    95
    В позиции надо оценивать соотношение материала и централизацию фигур. На первых порах этого достаточно - до уровня, скажем, 2200. Хотя некоторые умудряются и на 2500 с такой оценкой движки делать.
     
  8. My_Avatar
    Оффлайн

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

    Репутация:
    0
    ?
     
  9. просроченый_кмс
    Оффлайн

    просроченый_кмс Старожил

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

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

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

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

    WinPooh В.М. Команда форума

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

    просроченый_кмс Старожил

    Репутация:
    6

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

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

    Mustitz баннер

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

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

    WinPooh В.М. Команда форума

    Репутация:
    95
    Усложняя оценку, мы всегда уменьшаем количество позиций, к которым она будет применена. Быстродействие конечно.
     
  14. My_Avatar
    Оффлайн

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

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

    просроченый_кмс Старожил

    Репутация:
    6

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

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

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

    DrNix Николай

    Репутация:
    0
    Скорее из разряда курьезов :)

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

    http://js1k.com/demo/435

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

    ProstoTak Старожил

    Репутация:
    1
    Дык он же просто генерирует ходы и выбирает наугад. На проходе не умеет брать. Рокировки не умеет делать. "Настоящим шахматным алгоритмом" там и не пахнет. :|