Напишите программу “Генератор персонажей” для ролевой игры. Пользователю должно быть предоставлено 30 пунктов, которые можно распределить между четырьмя характеристиками: Сила, Здоровье, Мудрость и Ловкость. Надо сделать так, чтобы пользователь мог не только брать эти пункты из общего “пула”, но и возвращать их туда из характеристик, которым он решит присвоить другие значения.
Условие для решение - можно использовать только списки или словари.
Что получилось у меня:
import random MENU = ( """ 0 - Выход 1 - Посмотреть текущие характеристики 2 - Изменить Power 3 - Изменить Health 4 - Изменить Agility 5 - Изменить Wisdom """ ) MENU_ABILITY = ( """ 0 - Выход в предыдущее меню 1 - Добавить очки 2 - Удалить очки """ ) points = 30 add_points = 0 del_points = 0 abilities = {"Power": 0, "Health": 0, "Agility": 0, "Wisdom": 0} choice = None while choice != "0": choice2 = None print(MENU) choice = input("Ваш выбор: ") print() # выход if choice == "0": print ("До свидания") #просмотр текущих характеристик elif choice == "1": print("Количество свободных очков:", points, "\nТекущие характеристики:", abilities) #изменить ветку Power elif choice == "2": while choice2 != "0": print("\nУ вас есть", points, "свободных очков и", abilities["Power"], "очков в ветке Power.") print (MENU_ABILITY) choice2 = input("Ваш выбор: ") print() if choice2 == "0": print ("Возврат к предыдущему меню") elif choice2 == "1" and points > 0: add_points = int(input("Сколько очков хотите добавить в ветку Power?\n")) if add_points > points: print ("\nВы хотите добавить больше очков, чем есть у вас на самом деле.") elif add_points <= points: points -= add_points abilities["Power"] += add_points elif choice2 == "2" and abilities["Power"] > 0: del_points = int(input("Сколько очков хотите убрать из ветки Power?\n")) if del_points > abilities["Power"]: print ("\nВы хотите убрать больше очков, чем есть в ветке Power.") elif del_points <= abilities["Power"]: points += del_points abilities["Power"] -= del_points elif (choice2 == "1" and points == 0): print("~~Нет свободных очков~~") elif (choice2 == "2" and abilities["Power"] == 0): print("~~В ветке Power нет очков~~") else: print("~~Неправильный ввод~~") #изменить ветку Health elif choice == "3": while choice2 != "0": print("\nУ вас есть", points, "свободных очков и", abilities["Health"], "очков в ветке Health.") print (MENU_ABILITY) choice2 = input("Ваш выбор: ") print() if choice2 == "0": print ("Возврат к предыдущему меню") elif choice2 == "1" and points > 0: add_points = int(input("Сколько очков хотите добавить в ветку Health?\n")) if add_points > points: print ("\nВы хотите добавить больше очков, чем есть у вас на самом деле.") elif add_points <= points: points -= add_points abilities["Health"] += add_points elif choice2 == "2" and abilities["Health"] > 0: del_points = int(input("Сколько очков хотите убрать из ветки Health?\n")) if del_points > abilities["Health"]: print ("\nВы хотите убрать больше очков, чем есть в ветке Health.") elif del_points <= abilities["Health"]: points += del_points abilities["Health"] -= del_points elif (choice2 == "1" and points == 0): print("~~Нет свободных очков~~") elif (choice2 == "2" and abilities["Health"] == 0): print ("~~В ветке Health нет очков~~") else: print("~~Неправильный ввод~~") #изменить ветку Agility elif choice == "4": while choice2 != "0": print("\nУ вас есть", points, "свободных очков и", abilities["Agility"], "очков в ветке Agility.") print (MENU_ABILITY) choice2 = input("Ваш выбор: ") print() if choice2 == "0": print ("Возврат к предыдущему меню") elif choice2 == "1" and points > 0: add_points = int(input("Сколько очков хотите добавить в ветку Agility?\n")) if add_points > points: print ("\nВы хотите добавить больше очков, чем есть у вас на самом деле.") elif add_points <= points: points -= add_points abilities["Agility"] += add_points elif choice2 == "2" and abilities["Agility"] > 0: del_points = int(input("Сколько очков хотите убрать из ветки Agility?\n")) if del_points > abilities["Agility"]: print ("\nВы хотите убрать больше очков, чем есть в ветке Agility.") elif del_points <= abilities["Agility"]: points += del_points abilities["Agility"] -= del_points elif (choice2 == "1" and points == 0): print("~~Нет свободных очков~~") elif (choice2 == "2" and abilities["Agility"] == 0): print ("~~В ветке Agility нет очков~~") else: print("~~Неправильный ввод~~") #изменить ветку Wisdom elif choice == "5": while choice2 != "0": print("\nУ вас есть", points, "свободных очков и", abilities["Wisdom"], "очков в ветке Wisdom.") print (MENU_ABILITY) choice2 = input("Ваш выбор: ") print() if choice2 == "0": print ("Возврат к предыдущему меню") elif choice2 == "1" and points > 0: add_points = int(input("Сколько очков хотите добавить в ветку Wisdom?\n")) if add_points > points: print ("\nВы хотите добавить больше очков, чем есть у вас на самом деле.") elif add_points <= points: points -= add_points abilities["Wisdom"] += add_points elif choice2 == "2" and abilities["Wisdom"] > 0: del_points = int(input("Сколько очков хотите убрать из ветки Wisdom?\n")) if del_points > abilities["Wisdom"]: print ("\nВы хотите убрать больше очков, чем есть в ветке Wisdom.") elif del_points <= abilities["Wisdom"]: points += del_points abilities["Wisdom"] -= del_points elif (choice2 == "1" and points == 0): print("~~Нет свободных очков~~") elif (choice2 == "2" and abilities["Wisdom"] == 0): print ("~~В ветке Wisdom нет очков~~") else: print("~~Неправильный ввод~~")