Ещё один проект рогалика на Python:заметки, вопросы, идеи
Модераторы: Sanja, Максим Кич
Ещё один проект рогалика на Python:заметки, вопросы, идеи
Загорелся желанием сделать Roguelike на Python (попробовать язык в разработке, разобраться с компиляцией, применить ООП на практике etc.). Выкладывать свои ключевые идеи хочется лишь вместе с их конкретным воплощением в форме исполняемого файла/скрипта, поэтому пока лишь буду лишь задавать вопросы и делать небольшие заметки.
Заметки:
1. Т.к. карта будет не очень большой, а монстры и мир в целом не слишком умными, то не стоит заниматься избыточной оптимизацией, а лучше писать красивый и хорошо структурированный код с использованием ООП.
2. Хотелось бы сделать озвучку игры, но сразу появляется вопрос, откуда брать звуки/музыку. Если делать самому, будет слишком долго и сложно, а поэтому лучше будет найти то, что понравится, под свободной лицензией. Желаемый жанр — какой-нибудь Ambient.
3. Мог бы делать это как 7DRl, но ставить себе такие маленькие сроки не хочется.
Вопросы:
1. Посоветуйте хорошую книгу для понимания ООП. Идеально, если она будет учитывать специфику Python.
2. Ещё не откажусь от различных библиотек/модулей, которые могут пригодиться, а также списка относительно сложных возможностей синтаксиса Python, которые полезно знать. Сейчас создаётся впечатление, что я знаю весь Python, и это стоит нарушить.
Заметки:
1. Т.к. карта будет не очень большой, а монстры и мир в целом не слишком умными, то не стоит заниматься избыточной оптимизацией, а лучше писать красивый и хорошо структурированный код с использованием ООП.
2. Хотелось бы сделать озвучку игры, но сразу появляется вопрос, откуда брать звуки/музыку. Если делать самому, будет слишком долго и сложно, а поэтому лучше будет найти то, что понравится, под свободной лицензией. Желаемый жанр — какой-нибудь Ambient.
3. Мог бы делать это как 7DRl, но ставить себе такие маленькие сроки не хочется.
Вопросы:
1. Посоветуйте хорошую книгу для понимания ООП. Идеально, если она будет учитывать специфику Python.
2. Ещё не откажусь от различных библиотек/модулей, которые могут пригодиться, а также списка относительно сложных возможностей синтаксиса Python, которые полезно знать. Сейчас создаётся впечатление, что я знаю весь Python, и это стоит нарушить.
- Apromix
- Мастер
- Сообщения: 1236
- Зарегистрирован: 04 июл 2011, 10:44
- Откуда: Украина, Черновцы
- Контактная информация:
Re: Ещё один проект рогалика на Python:заметки, вопросы, иде
Замечательно! Сам раньше писал рогалик на Python'е. Для изучения языка самое то!Tookser писал(а): Загорелся желанием сделать Roguelike на Python (попробовать язык в разработке, разобраться с компиляцией, применить ООП на практике etc.). Выкладывать свои ключевые идеи хочется лишь вместе с их конкретным воплощением в форме исполняемого файла/скрипта, поэтому пока лишь буду лишь задавать вопросы и делать небольшие заметки.
- Jolly Roger
- Сообщения: 2973
- Зарегистрирован: 27 ноя 2009, 09:10
- Откуда: Minsk, Belarus
Re: Ещё один проект рогалика на Python:заметки, вопросы, иде
Добро пожаловать на форум!
7*24 часов потраченных на разработку. Это совсем другое дело!
Вполне достаточно, чтобы определиться с поставленой задачей. Например так начался Катаклизм.
Насколько я знаю, люди ставять себе срок не семь календарных дней с начала разработки, аМог бы делать это как 7DRl, но ставить себе такие маленькие сроки не хочется.
7*24 часов потраченных на разработку. Это совсем другое дело!
Вполне достаточно, чтобы определиться с поставленой задачей. Например так начался Катаклизм.
Писать диздок спустя несколько лет разработки и множества изменений концепции - исконная русская девелоперская традиция.
Re: Ещё один проект рогалика на Python:заметки, вопросы, иде
И как результат? Долго ли писал, и что получилось в итоге?Apromix писал(а): Замечательно! Сам раньше писал рогалик на Python'е. Для изучения языка самое то!
Спасибо!Jolly Roger писал(а):Добро пожаловать на форум!
Насколько я знаю, люди ставять себе срок не семь календарных дней с начала разработки, аМог бы делать это как 7DRl, но ставить себе такие маленькие сроки не хочется.
7*24 часов потраченных на разработку. Это совсем другое дело!
Вполне достаточно, чтобы определиться с поставленой задачей. Например так начался Катаклизм.
Вот как. Не знал, но всё равно — таких ограничений ставить пока не хочется. Буду только условно отсчитывать трудодни, уже прошло полтора.
Уже сделал простенькие генераторы карт и сам класс карт. Пока они совсем абстрактные, ни с чем другим не связаны. Объект "Карта" содержит список списков тайтлов и ещё немного служебной информации.
Карты по некоторым причинам будут небольшими, а главное — простыми, и это сужает возможности, но и заставляет подумать подольше. Думаю, как сделать маленький, но разветвлённый лабиринт. Уже есть "листья капусты" и "frogger", и одна добавочная функция, позволяющая делать с лабиринтом на стадии что-то простое.
С небольшим и немного грустным удивлением узнал, что идея моего рогалика неоригинальна, и такой уже есть. Пока не буду знакомиться с конкурентом, может быть, к НГ.
Ещё взволновал вопрос о быстродействии. Рогалики на питоне, насколько я помню, тормозили на моём старом ноутбуке, некоторые слабее, а некоторые показывали ~1 FPS. Думаю, проблема решаема, нужно только правильно выбрать средства визуализации, а сначала можно и через print выводить.
- Jolly Roger
- Сообщения: 2973
- Зарегистрирован: 27 ноя 2009, 09:10
- Откуда: Minsk, Belarus
Re: Ещё один проект рогалика на Python:заметки, вопросы, иде
Если ты сможешь закончить рогалик или довести его до чего то вполнеиграбельного, то будь уверен, такой рогалик будет очень оригинален.
Писать диздок спустя несколько лет разработки и множества изменений концепции - исконная русская девелоперская традиция.
Re: Ещё один проект рогалика на Python:заметки, вопросы, иде
Вопрос по Python: почему 2.7 при работе с переменной self позволяет изменять параметры self, вызывать методы, меняющие self… Но не позволяет использовать конструкцию self = ... ? Это какая-то неожиданная фича.
И второй вопрос: как лучше всего перебирать списки списков (для чтения или записи)? Иногда не хватает аналога цикла for для чего-то вроде
(Код выше, к сожалению, не возводит все элементы списка в квадрат.)
Да, это делается с помощью map или list comprehension, или for и enumerate, но нет ли более похожего на код выше способа?
И второй вопрос: как лучше всего перебирать списки списков (для чтения или записи)? Иногда не хватает аналога цикла for для чего-то вроде
Код: Выделить всё
for x in thislist:
x=x**2
Да, это делается с помощью map или list comprehension, или for и enumerate, но нет ли более похожего на код выше способа?
Re: Ещё один проект рогалика на Python:заметки, вопросы, иде
Рад видеть прибавление в клубе питонистов
Насчёт self всё просто. Код вида
де-факто преобразуется в
То есть вызов метода через экземпляр - это просто синтаксический сахар для вызова метода класса с передачей в него ссылки на конкретный экземпляр, с которым все изменения и будут производиться.
Из этого следует что self - это обычная переменная, ничем не отличающаяся от любой другой (она даже не обязательно должна называться именно так, это просто общепринятое соглашение), хранящая указатель на объект в памяти (если говорить в терминах С++). Её изменение никоим образом не изменит сам объект, при перезаписи она просто будет указывать на что-то другое. И, очевидно, это никак не повлияет на другие указатели, включая вот то "a", значение (именно значение, просто адрес в памяти) которого и было записано в self при вызове метода.
Касательно списков - ну, для ссылочных типов такой код работать будет, а вот для значимых придётся использовать один из предложенных тобой способов.
Upd:
Из книжек я настоятельно советую... Стандартный мануал! Нет, серьёзно, там описано всё, что нужно знать про питон, причем описано хорошим языком и с примерами, да и переводы на русский имеются во множестве (хотя лично для меня последнее и не критично).
Насчёт self всё просто. Код вида
Код: Выделить всё
a = AClass()
a.method(5)
Код: Выделить всё
a = AClass()
AClass.method(a, 5)
Из этого следует что self - это обычная переменная, ничем не отличающаяся от любой другой (она даже не обязательно должна называться именно так, это просто общепринятое соглашение), хранящая указатель на объект в памяти (если говорить в терминах С++). Её изменение никоим образом не изменит сам объект, при перезаписи она просто будет указывать на что-то другое. И, очевидно, это никак не повлияет на другие указатели, включая вот то "a", значение (именно значение, просто адрес в памяти) которого и было записано в self при вызове метода.
Касательно списков - ну, для ссылочных типов такой код работать будет, а вот для значимых придётся использовать один из предложенных тобой способов.
Upd:
Из книжек я настоятельно советую... Стандартный мануал! Нет, серьёзно, там описано всё, что нужно знать про питон, причем описано хорошим языком и с примерами, да и переводы на русский имеются во множестве (хотя лично для меня последнее и не критично).
Всё вышесказанное - ИМХО, если не указано обратное.
Re: Ещё один проект рогалика на Python:заметки, вопросы, иде
Феникс, спасибо за объяснение. Я вроде понимал это, но как-то затупил. Да, знаю про стандартный мануал, он на удивление хорош. А что тогда по ООП? Просто все эти паттерны интересные объекты (извиняюсь за каламбур), но хочется почитать что-то простое про них, а не GoF'а.
Да, ещё есть такой глупый способ — превращать все неизменяемые данные в элемент одноэлементного списка, но это криво.
Да, ещё есть такой глупый способ — превращать все неизменяемые данные в элемент одноэлементного списка, но это криво.
Re: Ещё один проект рогалика на Python:заметки, вопросы, иде
Полетел жёсткий диск. Нужно было делать бэкапы часто и сразу. Ничего, в самом худшем случае — напишу заново.
Re: Ещё один проект рогалика на Python:заметки, вопросы, иде
Про ООП ничего особого посоветовать не могу, сам с ним на уровне "сдал - забыл" знаком.
Скрытый текст: ПОКАЗАТЬ
Рекомендую завести дропбокс, спасет от таких ситуаций.Полетел жёсткий диск. Нужно было делать бэкапы часто и сразу. Ничего, в самом худшем случае — напишу заново.
Всё вышесказанное - ИМХО, если не указано обратное.
Re: Ещё один проект рогалика на Python:заметки, вопросы, иде
Для кода лучше bitbucket, ну или github - если опен сорс.Рекомендую завести дропбокс, спасет от таких ситуаций.
Re: Ещё один проект рогалика на Python:заметки, вопросы, иде
Пока ищу удобный редактор кода для iOS, желательно бесплатный и не требующий внешней клавиатуры.
- Fantom_019
- Сообщения: 132
- Зарегистрирован: 20 ноя 2008, 12:03
Re: Ещё один проект рогалика на Python:заметки, вопросы, иде
PyCharm Community edition весьма неплох =)
Re: Ещё один проект рогалика на Python:заметки, вопросы, иде
Уже нашёл, Code Everywhere. Правда, требует соединения с интернетом, но клавиатура хороша.
Пока думаю об одной, вроде бы простой вещи: как соединить две точки на карте максимально коротким коридором (растризация линии вроде называется). Пока не кодил, только написал заголовок.
Пока думаю об одной, вроде бы простой вещи: как соединить две точки на карте максимально коротким коридором (растризация линии вроде называется). Пока не кодил, только написал заголовок.
Re: Ещё один проект рогалика на Python:заметки, вопросы, иде
Посмотрел про алгоритмы дискретизации отрезка и подумал: если я собираюсь делать маленькое поле, то почему бы не делать все стенки между тайтлами, а не в тайтлах? Почему-то я не видел этого в рогаликах, даже в более графических. Смысла в этом, правда немного, хотя можно увеселить разрушаемость стен, но это не та фича, которая сейчас нужна. Видимо, не стоит.
Читаю про алгоритмы сглаживания и ищу такой, которой позволит проводить линию (коридор), проходимый игроком только с помощью движения вверх-вниз-вправо-влево. Можно взять какой-нибудь стандартный, получить линию, и пройти полученную линию пройти от одного конца до другого, дополняя отрезок в диагональных стыках.
Читаю про алгоритмы сглаживания и ищу такой, которой позволит проводить линию (коридор), проходимый игроком только с помощью движения вверх-вниз-вправо-влево. Можно взять какой-нибудь стандартный, получить линию, и пройти полученную линию пройти от одного конца до другого, дополняя отрезок в диагональных стыках.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 37 гостей