Комментарии 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
Раскрыть бы чуть подробнее сюжет и геймплей, описать механики уровней/этапов, вписав в историю аномалии/демона/полтергейста/проклятия поместья. В общей части.
Раскрыть движок в плане функционала, анимация в котором реализуется через или массив спрайтов (удобство чего и послужило выбором типа движка), или ещё как. Обработка столкновений (коллизий) — туда же. Звуковое сопровождение игры — в функционале движка или самому довешивать коллбэки на события. То же с меню. С алгоритмически/общим описанием и внятными кусками кода. И прочие детали реализации.
А публикация в текущем варианте — это набросок черновика, который как-то вышел из песочницы. Автору прочитать Марио Цехнера, например.
Мне понравился дизайн главного героя! Костюмчик с галстуком смотрится свежо)
Мы просто перебираем картинки в списке, и вызываем их одну за другой с
помощью переменной 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/
Хах, главный герой просто шикарен)
Прекрасная работа. Брависсимо!
Полноценный 2D-платформер на Python в 2023? Мой опыт