Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Code according to PEP8 #8

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -127,3 +127,8 @@ dmypy.json

# Pyre type checker
.pyre/

# temp
temp.py
design.py
graphic_arts/start_game_banner.py
94 changes: 63 additions & 31 deletions main.py
Original file line number Diff line number Diff line change
@@ -1,40 +1,65 @@
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:
'''Calculate and return the attack damage message
based on character class.
'''
if char_class == 'warrior':
return (f'{char_name} нанёс урон противнику равный {5 + randint(3, 5)}')
if char_class == 'mage':
return (f'{char_name} нанёс урон противнику равный {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, 5)}')
elif char_class == 'mage':
return (f'{char_name} нанёс урон противнику равный '
f'{5 + randint(5, 10)}')
elif char_class == 'healer':
return (f'{char_name} нанёс урон противнику равный'
f'{5 + randint(-3, -1)}')
else:
return 'Ошибка атаки'


def defence(char_name: str, char_class: str) -> str:
'''Calculate and return the defence damage message
based on character class.
'''
if char_class == 'warrior':
return (f'{char_name} блокировал {10 + randint(5, 10)} урона')
if char_class == 'mage':
elif char_class == 'mage':
return (f'{char_name} блокировал {10 + randint(-2, 2)} урона')
if char_class == 'healer':
elif 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}»')
if char_class == 'mage':
return (f'{char_name} применил специальное умение «Атака {5 + 40}»')
if char_class == 'healer':
return (f'{char_name} применил специальное умение «Защита {10 + 30}»')
else:
return 'Ошибка защиты'


def special(char_name: str, char_class: str) -> str:
'''Calculate and return the special ability message
based on character class.
'''
if char_class == 'warrior':
return (f'{char_name} применил специальное умение «Выносливость {
80 + 25}»')
elif char_class == 'mage':
return (f'{char_name} применил специальное умение «Атака {5 + 40}»')
elif char_class == 'healer':
return (f'{char_name} применил специальное умение «Защита {10 + 30}»')
else:
return 'Ошибка спешала'


def start_training(char_name, char_class):
def start_training(char_name: str, char_class: str) -> str:
'''Allows player start training attack, defense and special'''
if char_class == 'warrior':
print(f'{char_name}, ты Воитель — отличный боец ближнего боя.')
if char_class == 'mage':
elif char_class == 'mage':
print(f'{char_name}, ты Маг — превосходный укротитель стихий.')
if char_class == 'healer':
elif char_class == 'healer':
print(f'{char_name}, ты Лекарь — чародей, способный исцелять раны.')
print('Потренируйся управлять своими навыками.')
print('Введи одну из команд: attack — чтобы атаковать противника, defence — чтобы блокировать атаку противника или special — чтобы использовать свою суперсилу.')
print('Введи одну из команд: attack — чтобы атаковать противника, '
'defence — чтобы блокировать атаку противника или '
'special — чтобы использовать свою суперсилу.')
print('Если не хочешь тренироваться, введи команду skip.')
cmd = ''
while cmd != 'skip':
Expand All @@ -47,22 +72,32 @@ def start_training(char_name, char_class):
print(special(char_name, char_class))
return 'Тренировка окончена.'

def choice_char_class():

def choice_char_class() -> str:
'''Allows player to choose a name and a character class '''
approve_choice = None
char_class = None
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('...назови себя: ')
Expand All @@ -72,6 +107,3 @@ def main():
print('Воитель, Маг, Лекарь')
char_class = choice_char_class()
print(start_training(char_name, char_class))


main()
5 changes: 3 additions & 2 deletions test_module.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@

def test_program():
for filename in files_list:
assert filename in dir_files, f'Файл `{filename}` не найден в корне репозитория'

assert filename in dir_files, (
f'Файл `{filename}` не найден в корне репозитория'
)