|
Чайный домик Персональный раздел пользователя ВОВА |
|
Опции темы |
05.03.2017, 20:33 | #1 |
Сетевой эльф
Регистрация: 27.09.2007
Сообщений: 37,310
|
Любительский кодинг - го-тренажер из подручных материалов
всегда хотелось сделать.
Т.к. уже существующие тренажеры не во всех отношениях удобны - то одно то другое хочется немного, самую каплю, но по другому. такой иговин, но не иговин. где-то больше, где-то меньше..... исходники у интерфейсных программ были, но большие, и я думал, что никогда не смогу с этим ничего поделать. но вот, о чудо, наткнулся на интерфейсную программку, которая укладывается всего в 300 строк примерно, это крохи. работала она под старым и страшным как невесть что скриптовым языком тикль - он зело как неудобен, однако некто именно на нем написал самый маленький интерфейсный модуль. Скрипт был рассчитан на tcl/tk 8.6, а мне очень сильно хотелось, чтобы он работал под старыми версиями. поэтому скрипт пришлось перекрячивать, чем я и развлекся. ПС на гитхабе https://raw.githubusercontent.com/zz...aster/goban.py
__________________
Магическое зеркало: видеть себя в других, видеть других в себе... Предпочитаю вежливость. Последний раз редактировалось BOBA; 09.03.2017 в 19:06. |
05.03.2017, 20:43 | #2 |
Сетевой эльф
Регистрация: 27.09.2007
Сообщений: 37,310
|
Что хочется, от функционала
1) четыре режима. Первый - комп играет сам с собой, а юзер на это смотрит. 2) юзер иногда делает ходы вместо одного из игроков, имеет возможность получать подсказки и откатывать ходы назад 3) юзер может откатывать ходы, но не может спрашивать помощи зала 4) юзер играет самостоятельно. на днях сделаю кнопку ==попросить помощи== - так можно будет отслеживать типовые линии игры. ============== Ну и возможно перепишу на питон. Питон как-то по.... почеловечнее спроектирован, чем наркоманский тикль. Но, надо будет поизучать тамошние механизмы асинхронного ввода - вывода.
__________________
Магическое зеркало: видеть себя в других, видеть других в себе... Предпочитаю вежливость. |
05.03.2017, 21:42 | #3 |
Шволочь. И провокатор.
Регистрация: 12.02.2006
Сообщений: 31,208
|
гх
готовься к заметному увеличению кода
__________________
... Survivors will be shot again. |
05.03.2017, 21:54 | #4 |
Сетевой эльф
Регистрация: 27.09.2007
Сообщений: 37,310
|
Да, отрастет. Насколько сил хва, на следующей неделе все же попробую запитонить.
Не ну то что трехсот страничный скрипт уже в принципе живет, и его можно дорабатывать, комментировать - это приятно. Потому что все остальное было огромным, по сравнению с этим , а так то руби::го конечно есть, никто не спорит, только разобрать его тоже развлечение непростое, чтобы найти мои же триста строк....
__________________
Магическое зеркало: видеть себя в других, видеть других в себе... Предпочитаю вежливость. |
05.03.2017, 22:09 | #5 |
Шволочь. И провокатор.
Регистрация: 12.02.2006
Сообщений: 31,208
|
рубя с голангами тож многословные. а с асинхронщиной в сторону функциональщины смотри. эликсир там из новомодных, к примеру. ну или лиспятину всякую схемострашную.
__________________
... Survivors will be shot again. |
05.03.2017, 22:17 | #6 |
Сетевой эльф
Регистрация: 27.09.2007
Сообщений: 37,310
|
не, я тогда на питон. Мне не надо совсем кратко, я люблю понятно.
Потом путаться откуда какое замыкание чего замкнуло - не мой дзен.
__________________
Магическое зеркало: видеть себя в других, видеть других в себе... Предпочитаю вежливость. |
05.03.2017, 22:23 | #7 |
Шволочь. И провокатор.
Регистрация: 12.02.2006
Сообщений: 31,208
|
пф
рубя. целлулоид. эквивалент эрлангятины. вполне мягкий реалтайм получился.
__________________
... Survivors will be shot again. |
06.03.2017, 19:35 | #8 |
Сетевой эльф
Регистрация: 27.09.2007
Сообщений: 37,310
|
начало питонирования
__________________
Магическое зеркало: видеть себя в других, видеть других в себе... Предпочитаю вежливость. |
07.03.2017, 11:41 | #9 |
Сетевой эльф
Регистрация: 27.09.2007
Сообщений: 37,310
|
Минимальный пакет взаимодействия с энжином гну-го на питоне можно уложить в 100-200 строчек ( тестировал на python 2.7 )
- под leela придется немного доработать - оно в реакцию на команду genmove дает дополнительный вывод - версии продолжения партий. Которые надо поначалу выпиливать, а потом имеет смысл вылавливать и делать механизм для их прокрутки - они очень познавательны. ПС - к питону можно относится просто и легко, как к бейсику. В нем есть глубина, тайны и загадки, но можно просто брать то что на поверхности, и сразу использовать. Это здорово. На руби наверное так же, или даже еще лучше.
__________________
Магическое зеркало: видеть себя в других, видеть других в себе... Предпочитаю вежливость. Последний раз редактировалось BOBA; 07.03.2017 в 11:44. |
07.03.2017, 18:19 | #10 |
Сетевой эльф
Регистрация: 27.09.2007
Сообщений: 37,310
|
Играть с гнуго уже можно, если его исполнимый файл лежит в папке со скриптом, ну или доступен в путях.
по человечески конечно надо делать модуль настроек, где прописываются играющие консольные утилиты. и формочку управления настройками. Но лень. Теперь можно думать о коде, который будет поддерживать кривые обучения, от простого к сложному. Обязательно надо дописывать сохранялку в SGF, (что не записано того и не было), ну да в принципе не должно стать проблемой, по крайней мере основной ветки партии - стек ходов есть уже, правда нет пока настройки гандикапа, но это несложно и нетрудоемко.
__________________
Магическое зеркало: видеть себя в других, видеть других в себе... Предпочитаю вежливость. |
09.03.2017, 12:40 | #11 |
Сетевой эльф
Регистрация: 27.09.2007
Сообщений: 37,310
|
Чего мне не хватало в тех играющих (интерфейсных) программах, что я использовал раньше - это удобного режима подсказки хода.
Пока я в своем обучении ставлю неамбизиозную задачку - научиться играть ненамного слабее слабых ботов, пока - очень намного слабее. Даже играя с форой. Теперь я смогу смотреть, как бы на моем месте пошел бот. Ну и соответственно - внимать или не внимать совету. Можно дальше будет ввести метрику - процент ходов сделанных без подсказки, и назвать ее - "самостоятельность игры". (если кто вдруг захочет использовать скриптик для обучения лучшей игре всех времен и народов, но не понимает как это сделать - что поставить из программ, и как заставить работать - подскажу. К постам прикладываю полную версию скрипта, но скоро перестану - полная версия будет в git-e) . Выглядит неказисто, но работает, понемногу. Дальше работа пойдет над сохранением-восстановлением партий, и надо приделать установку форовых камней.
__________________
Магическое зеркало: видеть себя в других, видеть других в себе... Предпочитаю вежливость. Последний раз редактировалось BOBA; 09.03.2017 в 15:59. |
09.03.2017, 21:55 | #12 |
Шволочь. И провокатор.
Регистрация: 12.02.2006
Сообщений: 31,208
|
git давай
так наблюдать интересней и тэги не забывай с ченжлогом
__________________
... Survivors will be shot again. |
09.03.2017, 22:30 | #13 |
Сетевой эльф
Регистрация: 27.09.2007
Сообщений: 37,310
|
На гит выложил сегодня. В первом посте ссылка.
И гандикап приделал уже.
__________________
Магическое зеркало: видеть себя в других, видеть других в себе... Предпочитаю вежливость. Последний раз редактировалось BOBA; 09.03.2017 в 22:44. |
12.03.2017, 16:31 | #14 |
Сетевой эльф
Регистрация: 27.09.2007
Сообщений: 37,310
|
Ну вот. Сделал настройку частоты подсказки, просто текстовое поле.
Если там y (в смысле yes) - подсказка каждый ход, yn- через ход, yyn - один ход из трех - самостоятельный, два - с подсказкой. Хоть как ритм настраивается.... можно убирать кнопку ==help== - она кажется совсем не нужна. Раньше она давала команду движку сходить по очереди за белых и черных. ===================================== о, и сохранялку SGF по первому разу нарисовал тоже. неплохо.
__________________
Магическое зеркало: видеть себя в других, видеть других в себе... Предпочитаю вежливость. Последний раз редактировалось BOBA; 12.03.2017 в 19:06. |
13.03.2017, 14:11 | #15 |
Сетевой эльф
Регистрация: 27.09.2007
Сообщений: 37,310
|
__________________
Магическое зеркало: видеть себя в других, видеть других в себе... Предпочитаю вежливость. Последний раз редактировалось BOBA; 15.03.2017 в 12:05. |
15.03.2017, 11:55 | #16 |
Сетевой эльф
Регистрация: 27.09.2007
Сообщений: 37,310
|
http://eidogo.com/#url:https://raw.g...17_03_14_1.sgf
первая игранная на своем движке партия на большой доске.... просил подсказок у движка, много - 3 подсказки - ход свой
__________________
Магическое зеркало: видеть себя в других, видеть других в себе... Предпочитаю вежливость. |
21.03.2017, 19:42 | #17 |
Сетевой эльф
Регистрация: 27.09.2007
Сообщений: 37,310
|
↓↓ Рассматривал логику игры леелы
Код подрос ~800 строк, этой ценой удалось подключить довольно сильный движок - леелу. Она не поддерживала команду "список камней на доске", поэтому написал свой расчет позиции, для расчета надо проверять дыхательные пространства групп и соответственно сами группы выделять. В техническом плане упорно не выходит соскочить с функции os.popen2 на subprocess.Popen - на втором почему-то нормально работает гну-го, а леела - нет, но - popen2 устарел, и в третьем питоне этого нет. казалось бы, какая разница чем запустить движок ((( но она есть. В каналах, тонкая, неуловимая, но есть.
__________________
Магическое зеркало: видеть себя в других, видеть других в себе... Предпочитаю вежливость. |
22.03.2017, 18:07 | #18 |
Сетевой эльф
Регистрация: 27.09.2007
Сообщений: 37,310
|
заметки к переходу на правильный модуль.
http://eyalarubas.com/python-subproc-nonblock.html В принципе, чтение потока енжина в отдельном потоке (потоках?) сделать надо. оно принесет пользу в плане отзывчивости интерфейса..... и не только.
__________________
Магическое зеркало: видеть себя в других, видеть других в себе... Предпочитаю вежливость. |
23.03.2017, 11:55 | #19 |
Сетевой эльф
Регистрация: 27.09.2007
Сообщений: 37,310
|
........ разобрался с потоками. не в них дело было ........ то есть в них, но не вполне понятно где, понятно как с этим жить - посимвольно разбирать ввод выкидывая \r. Вот переписал ранее скопипащенное, теперь вывод обеих движков читается корректно.
доволен, преодолел микропроблему. теперь можно замигрировать на py-3
__________________
Магическое зеркало: видеть себя в других, видеть других в себе... Предпочитаю вежливость. |
23.03.2017, 18:30 | #20 |
Сетевой эльф
Регистрация: 27.09.2007
Сообщений: 37,310
|
↓↓ примерно равная игра
- если беру фору 5 камней и 30% подсказок..... (((( то есть, слабо пока играю, сильно проигрываю на форе 5. на форе 6 тоже нестабильно.
__________________
Магическое зеркало: видеть себя в других, видеть других в себе... Предпочитаю вежливость. |
10.04.2017, 18:28 | #21 |
Сетевой эльф
Регистрация: 27.09.2007
Сообщений: 37,310
|
1000 строк кода.
=========================== что там есть - возможность играть с двумя движками - один противник, один - советчик. Из советчиков пока лучший - leela. таким образом, начинающий игрок может поставить себе задачу - научиться более - менее выигрывать у гну-го без форы и двигаться к ее решению, используя в качестве сильного советчика leela и постепенно уменьшая количество подсказок. Это уже будет уровень игры, конечно не как у Квита - но проигрыш уже будет непозорным, а осмысленным (т.е. 15 кю на КГС вероятно, а то и получше). интерфейс усложнился, и его уже надо бы описать - если кому надо, так и сделаю, а мне пока интереснее пользоваться продуктом. В принципе, именно идей радикального улучшения функциональности нет, предстоит большая шлифовка тренажера. Может сделаю бинарник для винды. Большой - но все же - все-в-одном, через py2exe. а может и нет - мне самому незачем, других юзеров пока нет. если только для дочки к лету.
__________________
Магическое зеркало: видеть себя в других, видеть других в себе... Предпочитаю вежливость. |