Форум сайта python.su
Дело в том что я не знаток теории вероятности, хотя и есть некоторые знания, по этому написать более продвинутую логику для компьютера не могу. А точнее просто не интересно на данный момент тратить на это время. Сейчас меня больше мучает поиск пути, чтобы красиво соединить два элемента на принципиальной электрической схеме.
В остальном, код работоспособный, и на ГУИ его перевести как два пальца… При этом рефакторить ничего не надо. Я итак вложил избыточную архитектуру.
Кроме того соответствует всем требованиям кроме “Предусмотреть запись всех шагов игры в лог файл”, но и это добавляется без рефакторинга. Пару строк добавить.
Отредактировано (Апрель 28, 2010 12:09:40)
Офлайн
GriffonНет, не только лог. В приведённом варианте игрок-компьютер вырабатывает стратегию не учитывая успехи соперника. При чем же теория вероятностей? Всё же просто. По ТЗ робот должен рассуждать как-то так: Если сопернику остался один ход до выигрыша, то я буду рисковать и бросать кость до выигрыша. Или: если я отстаю, то буду рисковать, если обгоняю, то не буду.
Кроме того соответствует всем требованиям кроме “Предусмотреть запись всех шагов игры в лог файл”, но и это добавляется без рефакторинга. Пару строк добавить.
lorienВ общем, самый большой просчёт в том, что инициатор (то есть я) сам код не пишет. Это побуждает остальных рассуждать так: “зачем я буду писать код, если никто, даже инициатор, не пишет”. С другой стороны, нечестно будет, если один из программистов будет автором ТЗ. То есть надо было искать дополнительного автора ТЗ. Ну и ещё некоторые коррективы в организации и идеологии нужны. Нужно более явно обозначить цели проекта, типа: научиться писать читаемый и гибкий код, научиться делать рефакторинг, изучить методики TDD и парного программирования как в XP и т.д.
Не вижу ничего удивительно. Нашёлся один энтузиаст, набросал код после обеда. Выяснилось, что код надо рефакторить, да и вообще было бы неплохо запроектировать систему для начала. А это что? Это работа, это исправление ошибок. Ну вот энтузиазм и пропал
Отредактировано (Апрель 28, 2010 16:47:07)
Офлайн
Отрефакторить можно что угодно. Мможно даже имена поменять всем методам и переменным. А можно переписать с нуля.
Я, как инженер, выполняю поставленную задачу. И отвечаю на следующие вопросы.
Можно ли сделать лучше? - Да.
Нужно ли что-то менять в данном случае? - Нет.
Пределов совершенству нет, но надо знать когда остановиться.
В приведённом варианте игрок-компьютер вырабатывает стратегию не учитывая успехи соперникаУчитывает. Если противник впереди то компьютер рискует. Если компьютер впереди - осторожничает. Причём степень риска и осторожности, для каждого компьютера из трёх, своя.
Отредактировано (Апрель 28, 2010 16:36:59)
Офлайн
GriffonДа. Я неправильно прочитал код. Или он был поправлен после моего прочтения.
Учитывает. Если противник впереди то компьютер рискует. Если компьютер впереди - осторожничает. Причём степень риска и осторожности, для каждого компьютера из трёх, своя.
GriffonДа.
А вторая цитата мне не принадлежит.
GriffonНу, тут планировался не урок. Я хотел не учить, а учиться. Тут планировался тренажёр для освоения неких методов программирования. Работать он должен был примерно по следующему алгоритму:
upd. Целью является совершенствование знаний, как отметил автор. Были найдены и указаны места где можно улучшить что-либо. Урок окончен. Знания получены. Или вам требуется больше?
Офлайн
Все должны и писать, и думать. :)
Пишущий программу не должен быть козлом отпущения. Хочешь внести изменение - вноси. И выкладывай код с изменениями! А то задача сводится к тому чтобы найти в чьём-то коде место для оптимизации. А затем подождать пока кто-нибудь внесёт это в свою реализацию.
p.s. кстати большую часть замечаний (lorein, itertools в том числе) я вносил почти сразу после прочтения (если был на работе в это время).
Офлайн
хотелось бы внести свое предложение:
учебные проекты конечно хорошо, но одна мысль что код, на который потрачено несколько часов\дней\недель, об критикуют, заставят переписать 10 раз и благополучно ЗАБУДУТ, отбивает всякое желание этим заниматься.
так вот предлагаю писать такой код, что бы он был востребован, и было интересно этим заниматься.
мморги и тп заглохнут еще на начале, а вот писать плагины для EventScripts - дешево и сердито :) порой бывает скрипт на 3 строчки :)
собственно что для этого нужно: CS:source Dedicated server с установленным EventScripts
клиент игры CS:S (чтобы проверять скрипт)
оф форум http://forums.eventscripts.com/viewforum.php?f=115
документация на ES для питона http://python.eventscripts.com/pages/Main_Page
————-
можт кто нибудь заинтересуется ? русских проф питонистов для ES нет :( одни буржуйские :rolleyes:
————-
и ваше имя останется в веках :)
Отредактировано (Май 1, 2010 11:01:14)
Офлайн
Не понял. Можно кратко и на рабоче-крестьянском? Ботов для Контр-Страйка писать что-ли?
Если так, то меня оно не очень привлекает пока. Была у меня мысль другая - сделать форк UliPad-а, чтобы он был не глючил в Linux, поддерживал проекты, и вообще, ориентирован был только на Python. Тогда бы ещё добавил кое-какие удобства.
Но это тоже работа для одиночки. Да и не готов я к такому пока.
Офлайн
Kogromботы давно написаны :)
Не понял. Можно кратко и на рабоче-крестьянском? Ботов для Контр-Страйка писать что-ли?
# -*- coding:Utf-8 -*-
import es, playerlib
def player_activate(ev): # событие когда игрок полностю подключился
userid = ev["userid"] # получаем id этого игрока
ip = playerlib.getPlayer(userid).address.split(':')[0] #получаем его ip
name = es.getplayername(userid) # и имя
es.msg('\4Игрок %s подключился с %s'%(name,ip)) # выводим в обший чат (\4 зеленинькими букафкоми :))
Офлайн