diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 000000000..2a1880d7b Binary files /dev/null and b/.DS_Store differ diff --git a/.gitignore b/.gitignore index b6e47617d..71127396f 100644 --- a/.gitignore +++ b/.gitignore @@ -109,7 +109,7 @@ venv/ ENV/ env.bak/ venv.bak/ - +.vscode # Spyder project settings .spyderproject .spyproject diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 42fb889fc..000000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2022 Andrew Gorlov - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. 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 1f468d66e..56627904a 100644 --- a/main.py +++ b/main.py @@ -1,32 +1,48 @@ from random import randint +# from graphic_arts.start_game_banner import run_screensaver -def attack(char_name, char_class): + +def attack(char_name: str, char_class: str) -> str: + """Описывает действия атаки.""" 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)}') -def defence(char_name, char_class): + return (f'{char_name} нанёс урон противнику равный' + f'{5 + randint(-3, -1)}') + return (f'{char_name} не нанёс урон') + + +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': 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}»') + return (f'{char_name} не блокировал урон') + + +def special(char_name: str, char_class: str) -> str: + """Описывает действия атаки.""" + if char_class == 'warrior': + return (f'{char_name}' + f'применил специальное умение' + 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): +def start_training(char_name: str, char_class: str) -> str: + """Описывает действия атаки.""" if char_class == 'warrior': print(f'{char_name}, ты Воитель — отличный боец ближнего боя.') if char_class == 'mage': @@ -34,9 +50,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 +65,38 @@ 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 = None + char_class: str = 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 -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