From 6ff3574d1872d2692ad16f8b269695b83c1a81df Mon Sep 17 00:00:00 2001 From: Kolumbiets Date: Thu, 15 Dec 2022 20:49:49 +0300 Subject: [PATCH 1/4] Code according to PEP8 --- main.py | 49 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/main.py b/main.py index 1f468d66e..6d95aa934 100644 --- a/main.py +++ b/main.py @@ -3,11 +3,17 @@ def attack(char_name, char_class): if char_class == 'warrior': - return (f'{char_name} нанёс урон противнику равный {5 + randint(3, 5)}') + return (f'{char_name} нанёс урон противнику равный ' + f'{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)}') + return (f'{char_name} нанёс урон противнику равный ' + f'{5 + randint(-3, -1)}') + return (f'{char_name} нанёс урон противнику, равный 5') + + def defence(char_name, char_class): if char_class == 'warrior': return (f'{char_name} блокировал {10 + randint(5, 10)} урона') @@ -15,15 +21,18 @@ def defence(char_name, char_class): return (f'{char_name} блокировал {10 + randint(-2, 2)} урона') if char_class == 'healer': return (f'{char_name} блокировал {10 + randint(2, 5)} урона') + return (f'{char_name} блокировал 10 урона') + + def special(char_name, char_class): - if char_class == 'warrior': - return (f'{char_name} применил специальное умение «Выносливость {80 + 25}»') + if char_class == 'warrior': + return (f'{char_name} применил специальное умение «Выносливость ' + f'{80 + 25}»') if char_class == 'mage': return (f'{char_name} применил специальное умение «Атака {5 + 40}»') if char_class == 'healer': return (f'{char_name} применил специальное умение «Защита {10 + 30}»') - - + return (f'{char_name} не применил специальное умение') def start_training(char_name, char_class): @@ -34,7 +43,9 @@ 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 while cmd != 'skip': @@ -47,18 +58,26 @@ def start_training(char_name, char_class): print(special(char_name, char_class)) return 'Тренировка окончена.' + def choice_char_class(): approve_choice = None char_class = None 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 @@ -72,6 +91,6 @@ def main(): print('Воитель, Маг, Лекарь') char_class = choice_char_class() print(start_training(char_name, char_class)) - -main() \ No newline at end of file + +main() From 389d8617e0a4de04f5c58eaffaf735e1315dc019 Mon Sep 17 00:00:00 2001 From: Kolumbiets Date: Fri, 16 Dec 2022 20:43:30 +0300 Subject: [PATCH 2/4] Add annotations, code-style, flake8 and mypy --- .vscode/settings.json | 5 +++-- main.py | 22 +++++++++++----------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 33fe63f7c..b40952230 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,4 +1,5 @@ { - "python.linting.flake8Enabled": true, - "python.linting.enabled": true + "python.linting.flake8Enabled": false, + "python.linting.enabled": true, + "python.linting.mypyEnabled": true } \ No newline at end of file diff --git a/main.py b/main.py index 6d95aa934..e34b312e9 100644 --- a/main.py +++ b/main.py @@ -1,7 +1,7 @@ from random import randint -def attack(char_name, char_class): +def attack(char_name: str, char_class: str) -> str: if char_class == 'warrior': return (f'{char_name} нанёс урон противнику равный ' f'{5 + randint(3, 5)}') @@ -14,7 +14,7 @@ def attack(char_name, char_class): return (f'{char_name} нанёс урон противнику, равный 5') -def defence(char_name, char_class): +def defence(char_name: str, char_class: str) -> str: if char_class == 'warrior': return (f'{char_name} блокировал {10 + randint(5, 10)} урона') if char_class == 'mage': @@ -24,7 +24,7 @@ def defence(char_name, char_class): return (f'{char_name} блокировал 10 урона') -def special(char_name, char_class): +def special(char_name: str, char_class: str) -> str: if char_class == 'warrior': return (f'{char_name} применил специальное умение «Выносливость ' f'{80 + 25}»') @@ -35,7 +35,7 @@ def special(char_name, char_class): return (f'{char_name} не применил специальное умение') -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': @@ -47,7 +47,7 @@ def start_training(char_name, char_class): 'defence — чтобы блокировать атаку противника или ' 'special — чтобы использовать свою суперсилу.') print('Если не хочешь тренироваться, введи команду skip.') - cmd = None + cmd: str = None while cmd != 'skip': cmd = input('Введи команду: ') if cmd == 'attack': @@ -59,9 +59,9 @@ def start_training(char_name, char_class): return 'Тренировка окончена.' -def choice_char_class(): - approve_choice = None - char_class = None +def choice_char_class() -> str: + approve_choice: str = None + char_class: str = None while approve_choice != 'y': char_class = input('Введи название персонажа, за которого хочешь ' 'играть: Воитель — warrior, Маг — mage, Лекарь ' @@ -81,15 +81,15 @@ def choice_char_class(): return char_class -def main(): +def main() -> None: 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)) From bfdb6c5433aaa5173ef38b8ba39b7785bffa2171 Mon Sep 17 00:00:00 2001 From: Kolumbiets Date: Fri, 16 Dec 2022 22:29:25 +0300 Subject: [PATCH 3/4] Add start_game_banner module --- graphic_arts/start_game_banner.py | 46 +++++++++++++++++++++++++++++++ main.py | 6 +++- 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 graphic_arts/start_game_banner.py diff --git a/graphic_arts/start_game_banner.py b/graphic_arts/start_game_banner.py new file mode 100644 index 000000000..3cbdef0fd --- /dev/null +++ b/graphic_arts/start_game_banner.py @@ -0,0 +1,46 @@ +from asciimatics.renderers import FigletText, Fire +from asciimatics.renderers import SpeechBubble +from asciimatics.scene import Scene +from asciimatics.screen import Screen +from asciimatics.effects import Print +from asciimatics.exceptions import ResizeScreenError +from pyfiglet import Figlet +import sys + + +def animation(screen): + scenes = [] + + text = Figlet(font="banner", width=200).renderText("START GAME") + print(text) + effects = [ + Print(screen, + Fire(screen.height, 80, text, 0.4, 40, screen.colours), + 0, + speed=1, + transparent=False, + ), + Print(screen, + FigletText("Real Practic Game", "banner"), + screen.height - 15, + colour=Screen.COLOUR_WHITE, + bg=Screen.COLOUR_WHITE, + speed=1), + Print(screen, + SpeechBubble("Please press X - start game"), + screen.height-5, + speed=1, transparent=False) + + ] + scenes.append(Scene(effects, -1)) + + screen.play(scenes, stop_on_resize=True) + + +def run_screensaver(): + Screen.wrapper(animation) + + +if __name__ == "__main__": + run_screensaver() + sys.exit(0) diff --git a/main.py b/main.py index e34b312e9..a69a5aa86 100644 --- a/main.py +++ b/main.py @@ -1,4 +1,5 @@ from random import randint +from graphic_arts.start_game_banner import run_screensaver def attack(char_name: str, char_class: str) -> str: @@ -81,7 +82,8 @@ def choice_char_class() -> str: return char_class -def main() -> None: +if __name__ == '__main__': + run_screensaver() print('Приветствую тебя, искатель приключений!') print('Прежде чем начать игру...') char_name: str = input('...назови себя: ') @@ -94,3 +96,5 @@ def main() -> None: main() + + From 526ec1616174fd350761e678443c7804712a3471 Mon Sep 17 00:00:00 2001 From: Kolumbiets Date: Fri, 16 Dec 2022 23:10:38 +0300 Subject: [PATCH 4/4] Add start_game_banner --- main.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/main.py b/main.py index a69a5aa86..4fb92a493 100644 --- a/main.py +++ b/main.py @@ -96,5 +96,3 @@ def choice_char_class() -> str: main() - -