diff --git a/.vscode/settings.json b/.vscode/settings.json index 33fe63f7c..ecf9b4cee 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,4 +1,5 @@ { "python.linting.flake8Enabled": true, - "python.linting.enabled": true + "python.linting.enabled": true, + "python.linting.mypyEnabled": false } \ No newline at end of file diff --git a/calc_and_win b/calc_and_win new file mode 160000 index 000000000..612ec2436 --- /dev/null +++ b/calc_and_win @@ -0,0 +1 @@ +Subproject commit 612ec24361689126edf5f79548244f266700acaf diff --git a/graphic_arts b/graphic_arts new file mode 160000 index 000000000..53c35aaef --- /dev/null +++ b/graphic_arts @@ -0,0 +1 @@ +Subproject commit 53c35aaeff79bd1ed1c6dddea7838c510ca20b1c diff --git a/main.py b/main.py index 1f468d66e..8d0797099 100644 --- a/main.py +++ b/main.py @@ -1,32 +1,46 @@ +"""Бла бла бла.""" from random import randint -def attack(char_name, char_class): +from graphic_arts.start_game_banner import run_screensaver + + +def attack(char_name: str, char_class: str) -> str: + """I love Danyuha.""" if char_class == 'warrior': - return (f'{char_name} нанёс урон противнику равный {5 + randint(3, 5)}') + return (f'{char_name} нанёс урон' + 'противнику равный {5 + randint(3, 5)}') if char_class == 'mage': - return (f'{char_name} нанёс урон противнику равный {5 + randint(5, 10)}') + return (f'{char_name} нанёс урон противнику' + f'равный {5 + randint(5, 10)}') if char_class == 'healer': - return (f'{char_name} нанёс урон противнику равный {5 + randint(-3, -1)}') -def defence(char_name, char_class): + return (f'{char_name} нанёс урон' + 'противнику равный {5 + randint(-3, -1)}') + + +def defence(char_name: str, char_class: str) -> str: + """I am daun.""" if char_class == 'warrior': return (f'{char_name} блокировал {10 + randint(5, 10)} урона') if char_class == 'mage': return (f'{char_name} блокировал {10 + randint(-2, 2)} урона') if char_class == 'healer': return (f'{char_name} блокировал {10 + randint(2, 5)} урона') -def special(char_name, char_class): - if char_class == 'warrior': - return (f'{char_name} применил специальное умение «Выносливость {80 + 25}»') + + +def special(char_name: str, char_class: str) -> str: + """U are daun too.""" + if char_class == 'warrior': + return (f'{char_name} применил специальное' + 'умение «Выносливость {80 + 25}»') if char_class == 'mage': return (f'{char_name} применил специальное умение «Атака {5 + 40}»') if char_class == 'healer': return (f'{char_name} применил специальное умение «Защита {10 + 30}»') - - -def start_training(char_name, char_class): +def start_training(char_name: str, char_class: str) -> str: + """Я всё сломала.""" if char_class == 'warrior': print(f'{char_name}, ты Воитель — отличный боец ближнего боя.') if char_class == 'mage': @@ -34,9 +48,11 @@ def start_training(char_name, char_class): if char_class == 'healer': print(f'{char_name}, ты Лекарь — чародей, способный исцелять раны.') print('Потренируйся управлять своими навыками.') - print('Введи одну из команд: attack — чтобы атаковать противника, defence — чтобы блокировать атаку противника или special — чтобы использовать свою суперсилу.') + print('Введи одну из команд: attack — чтобы атаковать противника,' + 'defence — чтобы блокировать атаку противника или special' + '— чтобы использовать свою суперсилу.') print('Если не хочешь тренироваться, введи команду skip.') - cmd = None + cmd: str = None while cmd != 'skip': cmd = input('Введи команду: ') if cmd == 'attack': @@ -47,31 +63,41 @@ def start_training(char_name, char_class): print(special(char_name, char_class)) return 'Тренировка окончена.' -def choice_char_class(): - approve_choice = None - char_class = None + +def choice_char_class() -> str: + """Не беси.""" + approve_choice: str = '' + char_class: str = '' while approve_choice != 'y': - char_class = input('Введи название персонажа, за которого хочешь играть: Воитель — warrior, Маг — mage, Лекарь — healer: ') + char_class = input('Введи название персонажа, за которого хочешь' + 'играть: Воитель — warrior, Маг — mage,' + 'Лекарь — healer: ') if char_class == 'warrior': - print('Воитель — дерзкий воин ближнего боя. Сильный, выносливый и отважный.') + print('Воитель — дерзкий воин ближнего боя. Сильный, ' + 'выносливый и отважный.') if char_class == 'mage': - print('Маг — находчивый воин дальнего боя. Обладает высоким интеллектом.') + print('Маг — находчивый воин дальнего боя. Обладает высоким' + 'интеллектом.') if char_class == 'healer': - print('Лекарь — могущественный заклинатель. Черпает силы из природы, веры и духов.') - approve_choice = input('Нажми (Y), чтобы подтвердить выбор, или любую другую кнопку, чтобы выбрать другого персонажа ').lower() + print('Лекарь — могущественный заклинатель. Черпает силы из ' + 'природы, веры и духов.') + approve_choice = input('Нажми (Y), чтобы подтвердить выбор, или' + 'любую другую кнопку, чтобы выбрать ' + 'другого персонажа ').lower() return char_class -def main(): +if __name__ == '__main__': + run_screensaver() print('Приветствую тебя, искатель приключений!') print('Прежде чем начать игру...') - char_name = input('...назови себя: ') + char_name: str = input('...назови себя: ') print(f'Здравствуй, {char_name}! ' 'Сейчас твоя выносливость — 80, атака — 5 и защита — 10.') print('Ты можешь выбрать один из трёх путей силы:') print('Воитель, Маг, Лекарь') - char_class = choice_char_class() + char_class: str = choice_char_class() print(start_training(char_name, char_class)) -main() \ No newline at end of file +# character_creation_module/main.py \ No newline at end of file diff --git a/module1.py b/module1.py new file mode 100644 index 000000000..eac9ce85e --- /dev/null +++ b/module1.py @@ -0,0 +1,12 @@ +def special_calculation(a, b): + return a + b - 2 + + +if __name__ == '__main__': + print('Модуль запущен') + print('Проверим работу функции') +# Запускается функция с разными значениями переменных a и b. +# Значения сравниваются с ожидаемым ответом. + print(5 == special_calculation(2, 5)) + print(5 == special_calculation(2, 2)) +print(4 == special_calculation(3, 3)) \ No newline at end of file diff --git a/module2.py b/module2.py new file mode 100644 index 000000000..3f32f1156 --- /dev/null +++ b/module2.py @@ -0,0 +1,7 @@ +# Из модуля module1.py импортируем функцию special_calculation. +from module1 import special_calculation + +print("Основной модуль") +# Производим расчёты. +coef = special_calculation(2, 5) +print(coef) \ No newline at end of file diff --git a/temp.py b/temp.py new file mode 100644 index 000000000..d57054d26 --- /dev/null +++ b/temp.py @@ -0,0 +1,35 @@ +# Тестовые данные. +TEST_DATA = [ + (44, 'success', True), + (16, 'failure', True), + (4, 'success', False), + (21, 'failure', False), +] + +BONUS = 1.1 +ANTIBONUS = 0.8 + +def add_rep(current_rep, rep_points, buf_effect): + current_rep += rep_points + if buf_effect: + return current_rep * BONUS + return current_rep + +def remove_rep(current_rep, rep_points, debuf_effect): + current_rep -= rep_points + if debuf_effect: + return current_rep * ANTIBONUS + return current_rep + +def main(duel_res): + current_rep = 0.0 + for rep, result, effect in duel_res: + if result == 'success': + current_rep = add_rep(current_rep, rep, effect) + if result == 'failure': + current_rep = remove_rep(current_rep, rep, effect) + return f'После {len(duel_res)} поединков, репутация персонажа — {current_rep:.3f} очков.' + + +# Тестовый вызов функции main. +print(main(TEST_DATA)) \ No newline at end of file