def choice(self): try: number = int(input(Fore.LIGHTGREEN_EX + '\n введите чисо: ' + Style.RESET_ALL)) if number in self.menu_numbers: if number == 1: return 1 elif number == 2: return 2 elif number == 3: return 3 elif number == 4: return 4 elif number == 7: cls() start = StartMenu().menu() start.draw() print(Fore.LIGHTRED_EX + '\n вы вернулись в главное меню' + Style.RESET_ALL) ChoiceMenu(self.menu_numbers, self.repeat).choice() elif number == 8: cls() game_exit() else: cls() HeadMenu() self.repeat.draw() print(Fore.LIGHTRED_EX + '\n вы выбрали несуществующий пунк меню') ChoiceMenu(self.menu_numbers, self.repeat).choice() except ValueError: cls() HeadMenu() self.repeat.draw() print(Fore.LIGHTRED_EX + '\n вы ввели не подходящее значение') ChoiceMenu(self.menu_numbers, self.repeat).choice()
def new_enemy(): try: print(Fore.LIGHTYELLOW_EX + 'Вам необходимо ввести информация по вашему противнику,\n' 'мы ни как не будем вас ограничивать, можете проявить\n' 'фантазию, но помните от того какие данные вы введете\n' 'будет зависить то с кем вам предстаит сражаться.\n' 'Помните, что показатель здровья, силы, брони, возраста\n' 'выносливости и манны являются числовыми значениями.\n' 'В имени не должно быть цифр.\n', Fore.GREEN) name = str(input('имя персонажа: ')).capitalize() if name.isalpha() is False: raise ValueError with open('save.txt', 'r') as save: characters = json.loads(save.read()) with open('enemy.txt', 'r') as save: enemy_characters = json.loads(save.read()) if name in characters or name in enemy_characters: raise TypeError else: enemy = [] enemy += [str(input('пол: '))] enemy += [str(input('расса: '))] enemy += [str(input('класс: '))] enemy += [str(int(input('возраст: ')))] enemy += [str(input('оружие: '))] enemy += [str(int(input('здровье: ')))] enemy += [str(int(input('броня: ')))] enemy += [str(int(input('сила: ')))] enemy += [str(int(input('выносливасть: ')))] enemy += [str(int(input('манна: ')))] enemy += [str(input('ульта: '))] print() enemy_characters[name] = enemy with open('enemy.txt', 'w') as save_game: save_game.write(json.dumps(enemy_characters)) return True except ValueError: cls() print(Fore.LIGHTRED_EX + 'Вы допустили ошибку при вводе данных, прочтите \n' 'внимательно условие!\n') return False except TypeError: cls() print(Fore.LIGHTRED_EX + 'Увы, но персонаж с таким именем уже есть, попробуйте \n' 'снова!!!\n') return False
def check_choice(self): """метод проверки правельного выбора пуктов меню""" while True: try: print(Fore.GREEN + '\n выш выбор: ', end='') player_choice = int(input()) if self.x <= player_choice <= self.y: cls() return player_choice else: raise ValueError except ValueError: cls() self.draw_repeat.draw() print( Style.BRIGHT + Fore.LIGHTCYAN_EX + f'\n введите цифру от {self.x} до {self.y}', Style.RESET_ALL)
def check_name(self): while True: try: print(Fore.GREEN + Back.BLACK + '\n ваше имя: ', end='') character_name = str(input()) if 1 < len(character_name) < 21 and character_name.isalpha(): cls() return character_name.capitalize() else: raise ValueError except ValueError: cls() self.draw_repeat.draw() print( Style.BRIGHT + Fore.LIGHTCYAN_EX + '\n имя персонажа может состоять только из букв \n' ' длина имени от 2 до 20 символов \n' ' цифр в имене быть не должно', Style.RESET_ALL )
def run_game(): run = True while run: draw = Draw( canvas(random.choice([pictures(0), pictures(1)]), pictures(2))) draw.window_size() draw.draw() menu_choice = Menu(1, 3, draw).check_choice() # первый выбор, основное меню if menu_choice == 1: name_choice, hero, char_name = None, True, None while hero: draw = Draw(canvas(pictures(4), pictures(5)), 5) # картинка ввода имени персонажа draw.draw() char_name = Game(draw).check_name() # ввод имени picture_name = Game(picture=pictures(7), text={ 'canvas4c': char_name }).print_text() draw = Draw(canvas(picture_name, pictures(6)), 9) # картинка отображающая ваше имя draw.draw() name_choice = Menu( 1, 3, draw).check_choice() # выбор подтверждения вашего имени if name_choice == 1: # выбор подтверждения вашего имени, вы согласны с именем picture_name_approved = Game(picture=pictures(8), text={ 'canvas4c': char_name }).print_text() draw = Draw(canvas(picture_name_approved), 5) # картинка, что такое имя уже есть Game().enemy_save() name = Game(draw_repeat=draw, name=char_name).save_new_game( ) # проверяет наличие имени в save if name is False: # такое имя уже есть в save draw = Draw( canvas(pictures(4), pictures(5), pictures(10)), 5) # рисует выбор нового имени draw.draw() approved_name_choice = Menu(1, 2, draw).check_choice( ) # либо новое имя либо вернуться в меню if approved_name_choice == 1: # если новое имя то цикл занова pass elif approved_name_choice == 2: # возврат в главное меню hero = False name_choice = 3 elif name is True: # если имени в save нет, будет создан персонаж hero = False elif name_choice == 2: # выбор подтверждения вашего имени, вы не согласны с именем, цикл hero занова pass elif name_choice == 3: # выбор подтверждения вашего имени, возврат в главное меню hero = False if name_choice != 3: # продолжаем создавать персонажа, выбираем пол char_choice = [] Draw(canvas(pictures(4), pictures(5), pictures(13)), 5).draw() draw = Draw(canvas(pictures(4), pictures(5), pictures(14)), 5) # картинка выбора пола draw.draw() sex_choice = Menu( 1, 2, draw).check_choice() # выбор пола вашего персонажа char_choice += [sex_choice] Draw(canvas(pictures(4), pictures(5), pictures(15)), 5).draw() draw = Draw(canvas(pictures(9)), 10) # картинка выбора рассы draw.draw() race_choice = Menu( 1, 4, draw).check_choice() # выбор рассы вашего персонажа char_choice += [race_choice] if race_choice == 2: Draw(canvas(pictures(4), pictures(5), pictures(16)), 5).draw() draw = Draw(canvas(pictures(4), pictures(5), pictures(17)), 5) # картинка выбора класса эльфа draw.draw() class_choice = Menu( 1, 3, draw).check_choice() # выбор класса вашего персонажа char_choice += [class_choice] elif race_choice == 3: Draw(canvas(pictures(4), pictures(5), pictures(16)), 5).draw() draw = Draw(canvas(pictures(4), pictures(5), pictures(18)), 5) # картинка выбора класса орка draw.draw() # рисуем картинку выбора класса class_choice = Menu( 1, 3, draw).check_choice() # выбор класса вашего персонажа char_choice += [class_choice] elif race_choice == 4: Draw(canvas(pictures(4), pictures(5), pictures(16)), 5).draw() draw = Draw(canvas(pictures(4), pictures(5), pictures(19)), 5) # картинка выбора класса гнома draw.draw() class_choice = Menu( 1, 2, draw).check_choice() # выбор класса вашего персонажа char_choice += [class_choice] else: Draw(canvas(pictures(4), pictures(5), pictures(16)), 5).draw() draw = Draw(canvas(pictures(4), pictures(5), pictures(20)), 5) # картинка выбора класса человека draw.draw() class_choice = Menu( 1, 4, draw).check_choice() # выбор класса вашего персонажа char_choice += [class_choice] draw = Draw(canvas(pictures(4), pictures(5), pictures(21)), 5) # картинка возраста персонажа draw.draw() age_choice = Menu( 20, 100, draw).check_choice() # выбор возраста вашего персонажа char_choice += [age_choice] draw = Draw(canvas(pictures(4), pictures(5), pictures(22)), 7) draw.draw() Draw(canvas(pictures(4), pictures(5), pictures(25)), 5).draw() params_choice = Menu( 1, 3, draw).check_choice() # выбор параметров персонажа Game(name=char_name, params=char_params(char_choice)).save_new_game() if params_choice == 1: pass elif params_choice == 2: params = params_char(pictures(12), char_params( char_choice)) # заменяем словарь параметров picture_params1 = Game(picture=pictures(11), text={ 'canvas4c': char_name }).print_text() picture_params2 = Game(picture=pictures(12), text=params).print_text() draw = Draw(canvas(picture_params1, picture_params2), 17) draw.draw() draw = Draw( canvas(pictures(22), pictures(5), pictures(23)), 7) draw.draw() statistic_choice = Menu(1, 2, draw).check_choice() if statistic_choice == 1: enemy = True while enemy: enemy_choice = new_enemy() if enemy_choice is True: cls() draw = Draw( canvas(pictures(22), pictures(5), pictures(24)), 7) draw.draw() new_enemy_choice = Menu(1, 2, draw).check_choice() if new_enemy_choice == 1: pass elif new_enemy_choice == 2: enemy = False elif enemy_choice is False: pass if params_choice != 3: print('продолжение') time.sleep(2) elif menu_choice == 2: print('продолжение пока не готово') time.sleep(2.5) elif menu_choice == 3: run = game_exit()