Как стать автором
Обновить

Комментарии 19

Это ж Dangerous Dave в гриме! )))

А шотган где?

у мня вопрос, я когда пишу на C# то для меня самое тяжелое это разбор ошибок и их исправление, учитывая что в питоне с этим всё еще хуже - как вы занимаетесь отладкой таких проектов? я даже скрипт на 30 строк порой пишу 3 часа как раз занимаясь отладкой.

я бы не сказал, что отладка в Python уж слишком сложна. Для интерпритируемых языков легче делать отладку, чем для компилируемых. Когда запускаешь проект с ошибкой у тебя сразу в консоль выводится, в какой строке ошибка и с чем она связано (например, AttrubuteError, когда в класс что-то не передал). Плюс у Python есть прекрасная IDE Pycharm и можно дебаггером отследить в какой именно момент произошла ошибка. Поэтому проблем особых с этим не было

в консоль выводится, в какой строке ошибка и с чем она связано

у меня в основном с этим и проблема, строку пишет, а что конкретно не понравилось - не пишет.

В Питоне добавляются ошибки типов (хотя как там с null-safty в С#?), а так тоже самое.

Используйте собственные исключения с контекстом, вместо встроенных в С#.
Делайте в них информативыне сообщения об ошибках.

Если в мапе нет ключа, толко вы как автор приложения знаете, что это значит и что нужно делать.


Используйте собственные исключения с контекстом

это вы про этап выполнения? с этим проблем нет, проблема на этапе компиляции или оформления, то пробел забыл, то запятую, в C# это проще.

Мой выбор для Питона это IDE, аннотации типов и куча линтеров в прекоммите. Хорошо помогают ловить опечатки и прочие синтаксические ошибки.

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

Чем более плоский код вы пишите, тем сложнее с ним ошибиться.

Если у вас большие структуры, возможно это вообще не код, а данные.
Если взять пример автора, вот эту часть можно в отдельный тектовый файл убрать. Взять какой-нибудь популярный фомат, с возможностью провреки на базовый синтаксис и схему (yaml, json, toml?).

https://github.com/IvanZaycev0717/the_mystery_of_the_mansion/blob/main/stages/main.py#L357

спасибо за пояснения, я слишком редко общаюсь с питоном и думаю просто застрял в 2005 году.

Раскрыть бы чуть подробнее сюжет и геймплей, описать механики уровней/этапов, вписав в историю аномалии/демона/полтергейста/проклятия поместья. В общей части.
Раскрыть движок в плане функционала, анимация в котором реализуется через или массив спрайтов (удобство чего и послужило выбором типа движка), или ещё как. Обработка столкновений (коллизий) — туда же. Звуковое сопровождение игры — в функционале движка или самому довешивать коллбэки на события. То же с меню. С алгоритмически/общим описанием и внятными кусками кода. И прочие детали реализации.
А публикация в текущем варианте — это набросок черновика, который как-то вышел из песочницы. Автору прочитать Марио Цехнера, например.

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

Мне понравился дизайн главного героя! Костюмчик с галстуком смотрится свежо)

все ожидал что будет элегантный удар\бросок тростью, но как видно - у автора не было на это времени :)

Мы просто перебираем картинки в списке, и вызываем их одну за другой с
помощью переменной self.frame_index. Тернарый оператор применяется,
чтобы из бежать ошибки IndexError: list index out of range.


Чтобы избежать можно просто откидывать целые курги.

self.frame_index = self.frame_index % len(self.animation_frames)

Разница в том, что этот код может проскочить первую анимацию.


но вот один я никак нарушить не могу - буковка “S” - Single
Resposibility Principle. Суть его в том, что каждый класс должен
выполнять строго обозначенную функцию и быть ограниченным своей задачей.


А как же https://github.com/IvanZaycev0717/the_mystery_of_the_mansion/blob/main/stages/level.py ?

Инструмент для переводов.

Размечаете то, что должно быть переведено в коде
Запускаете тулзу которая парсит все включения и создаёт/обновляет текстовый файл
Делаете переводы
Компилируете его в бинарный
Используете в приложении этот файл.

https://phrase.com/blog/posts/translate-python-gnu-gettext/

Хах, главный герой просто шикарен)

Прекрасная работа. Брависсимо!

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории