|
0 / 0 / 0
Регистрация: 04.05.2020
Сообщений: 11
|
||||||
Как сэкономить время на разработку!? Python07.05.2020, 07:11. Показов 1031. Ответов 10
Метки python 3.x (Все метки)
Здравствуйте как сэкономить время, может кто нибудь знает какие нибудь лайфхаки по разработке?
Вот например: Василий считает ООП великолепным подходом к программированию различных систем. Сегодня он хочет, чтобы вы начали разрабатывать основу для pyRPG (Python role-playing game). Представьте себе мир, в котором у игрока (Player) есть три основных характеристики: сила (strength), ловкость (agility) и интеллект (intelligence). По умолчанию у каждого героя игры все характеристики равны нулю. Для увеличения (или уменьшения) характеристики в игре используются зелья (Potion), которые накладывают определённый эффект на игрока и действуют определённое количество ходов. Перед вами стоит задача создать два класса Player и Potion, описывающие данную механику. Класс Potion описывает эффект от зелья. Конструктор класса Potion должен иметь вид: Potion(duration, strength, agility, intelligence). Параметр duration описывает длительность эффекта в «шагах» и является позиционным. Параметры strength, agility, intelligence описывают силу, ловкость и интеллект, получаемые от зелья, и являются необязательными. Класс Potion должен иметь методы: duration() — возвращает длительность эффекта зелья; strength() — возвращает силу, получаемую от зелья; agility() — возвращает ловкость, получаемую от зелья; intelligence() — возвращает интеллект, получаемую от зелья; copy() — возвращает копию объекта. Над объектами класса Potion должна быть возможность производить следующие операции: potion1 == potion2 — возвращает True, если все параметры зелий равны, иначе False; next(potion) — снижает продолжительность эффекта на 1 и возвращает None, если продолжительность снизилась до 0, иначе возвращает принимаемый объект; potion1 + potion2 — странным образом смешивает два зелья: параметры зелий складываются, а продолжительность эффекта нового зелья равна минимальной из переданных; potion1 - potion2 — странным образом смешивает два зелья: параметры зелий вычитаются, а продолжительность эффекта нового зелья равна максимальной из переданных; potion * number — странным образом модифицирует зелье: параметры зелья умножаются на number, а продолжительность эффекта нового зелья остаётся такой же; str(potion) — возвращает строку, описывающую зелье в формате Potion(duration=D, strength=S, agility=A, intelligence=Intel). Класс Player описывает состояние пользователя. У конструктора класса Player не должно быть позиционных параметров. Класс Player должен иметь методы: strength() — возвращает суммарную силу героя; agility() — возвращает суммарную ловкость героя; intelligence() — возвращает суммарный интеллект героя; append(potion) — накладывает эффект (копию зелья potion) на героя. Над объектом класса Player должна быть возможность производить следующие операции: player += potion — накладывает эффект (копию зелья potion) на героя; next(player) — имитирует ход, снижает длительность всех наложенных на героя зелий на 1; str(player) — возвращает строковое представление героя в виде: Player { strength: S agility: A intelligence: Intel }
Эту программу я делал 3 часа, но на его разработку давалось менее 1 часа. Она полностью рабочая, но ГДЕ И КАК Я МОГ СЭКОНОМИТЬ ВРЕМЯ НА РАЗРАБОТКУ? Надеюсь на ваши советы.
0
|
||||||
| 07.05.2020, 07:11 | |
|
Ответы с готовыми решениями:
10
Как сэкономить время?
Как сэкономить время и ресурсы при выполнении кода VBA |
|
Модератор
|
|
| 07.05.2020, 07:58 | |
|
NikiforovDV, странный вопрос, тут трата времени идет из за вашей сообразительности. Быстрее понимаешь, быстрее делаешь, подобные задачи занимают меньше времени с опытом. В этом коде куча ошибок, таких как: название методов совпадает с названием атрибутов, функции возвращают не существующие атрибуты, копипаст.
1
|
|
|
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,302
|
||||||||
| 07.05.2020, 08:17 | ||||||||
|
Кстати метод copy реализован неверно, он возвращает не копию, а сам объект
1
|
||||||||
|
Модератор
|
||||||
| 07.05.2020, 08:29 | ||||||
|
NikiforovDV, 25 мин, при этом одна рука занята кофе и вафельками:
0
|
||||||
|
0 / 0 / 0
Регистрация: 04.05.2020
Сообщений: 11
|
|
| 07.05.2020, 08:55 [ТС] | |
|
Вопрос!
Является ли критической ошибкой совпадения имен методов и атрибутов в коде? Вроде как бы работает. Они не должны совпадать из-за какого-то негласного правила? p.s. Спасибо что указали про ошибку метода копирования, я уже исправил его после вашего замечания.
0
|
|
|
Модератор
|
||||||
| 07.05.2020, 08:59 | ||||||
|
NikiforovDV,
0
|
||||||
|
Автоматизируй это!
|
||||||||
| 07.05.2020, 09:08 | ||||||||
|
предлагаю провести вот такой эксперимент
1
|
||||||||
|
Автоматизируй это!
|
||||||
| 07.05.2020, 10:47 | ||||||
|
DmFat, нет, если взять твой пример то после 13 строки у тебя больше нет метода аджилити) ты его перезаписал интом. Ну нельзя называть атрибуты и методы одинаково, потому что метод это тоже атрибут, просто он вызываемый (коллабл).
Плюс возможное (при определенных ситуациях) но не самое верное решение сделать аджилити атрибутом самого класса, а не объектов. Изменив его мы получим изменение во всех объектах, а это не всегда ожидаемо.
0
|
||||||
|
Автоматизируй это!
|
||
| 07.05.2020, 11:02 | ||
|
не верная абстракция для Питья (если я верно понял), оно может дать какие то характеристики но само не обладает ими, то есть у Зелья не может быть силы или ловкости. Оно не должно быть наследником характеристик Игрок получается -набор зелий? раз его можно итерировать некстом по зельям? Это скорее можно сказать про пояс героя, на котором зелья висят, но сам то герой точно не набор зелий.
0
|
||
| 07.05.2020, 11:02 | |
|
Помогаю со студенческими работами здесь
11
Сколько требуется время на разработку? C# или как сэкономить Как сэкономить память? Как сэкономить топливо - бензин? i7 4770-4770k Как сэкономить? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|