Guest User

hero generator

a guest
Nov 18th, 2015
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.42 KB | None | 0 0
  1. # Генератор персонажа v2
  2. # Доступно 30 очков, которые можно распределить среди Силы, Здоровья, Ловкости и Мудрости
  3. # Последнее редактирование 1:10 (UTC+6) 19.11.2015
  4. # Сам знаешь что нужно исправить в функции edit_skills
  5. # Да и вообще косяков не мало, лучше заного всё написать
  6.  
  7. # Импортируем полку
  8. import shelve
  9.  
  10. print("\t\tДобро пожаловать в генератор персонажа v2 !")
  11.  
  12. # КОНСТАНТА пунктов меню
  13. NUM_MENU = ("0", "1", "2", "3", "8", "9")
  14. NUM_MENU_E = ("0", "1", "2", "3", "4")
  15.  
  16. # Сохранение параметров
  17. def save():
  18.     global strenght, hp, agility, intellect, l_skills
  19.    
  20.     s = shelve.open("save")
  21.     s["Сила"] = strenght
  22.     s["Здоровье"] = hp
  23.     s["Ловкость"] = agility
  24.     s["Мудрость"] = intellect
  25.     s["Очки"] = l_skills
  26.     s.sync()
  27.     s.close()
  28.     input("Параметры сохранены!")
  29.  
  30. # Загрузка параметров
  31. def load():
  32.     global strenght, hp, agility, intellect, l_skills
  33.    
  34.     l = shelve.open("save")
  35.     strenght = l["Сила"]
  36.     hp = l["Здоровье"]
  37.     agility = l["Ловкость"]
  38.     intellect = l["Мудрость"]
  39.     l_skills = l["Очки"]
  40.     l.close()
  41.     input("Параметры загружены!")
  42.  
  43. # Отображение параметров
  44. def display_skills(skills):
  45.     print("\n Сила:     ", strenght)
  46.     print(" Здоровье: ", hp)
  47.     print(" Ловкость: ", agility)
  48.     print(" Мудрость: ", intellect)
  49.     print("\nДоступно очков умений: ", l_skills)
  50.  
  51. # Отображение меню
  52. def display_menu():
  53.     print(
  54. """
  55.    0 - Закончить
  56.    1 - Распределить очки умений
  57.    2 - Редактировать очки умений
  58.    3 - Сбросить очки умений
  59.  
  60.    8 - Загрузить параметры
  61.    9 - Сохранить параметры
  62. """
  63.         )
  64.     global choice
  65.    
  66.     choice = input("Ваш выбор: ")
  67.     while choice not in NUM_MENU:
  68.         choice = input("Ваш выбор: ")
  69.  
  70. # Меню редактирования
  71. def display_menu_edit():
  72.     print("\nКакой навык желаете редактировать?")
  73.     print("\n 1 - Сила:     ", strenght)
  74.     print(" 2 - Здоровье: ", hp)
  75.     print(" 3 - Ловкость: ", agility)
  76.     print(" 4 - Мудрость: ", intellect)
  77.     print("\n 0 - Назад\n")
  78.  
  79.     global choice
  80.    
  81.     choice = input("Ваш выбор: ")
  82.     edit_skills(choice)
  83.     while choice not in NUM_MENU_E:
  84.         choice = input("Ваш выбор: ")
  85.         edit_skills(choice)
  86.     if choice == "0":
  87.         display_skills(skills)
  88.         display_menu()
  89.  
  90. # Функционирование меню
  91. def menu(choice):
  92.     if choice == "1":
  93.         use_skills()
  94.     elif choice == "2":
  95.         display_menu_edit()
  96.     elif choice == "3":
  97.         reset()
  98.     elif choice == "8":
  99.         load()
  100.     elif choice == "9":
  101.         save()
  102.  
  103.  
  104. # Функция распределения очков умений
  105. def use_skills():
  106.     global strenght, hp, agility, intellect, l_skills
  107.  
  108.     print("\nСила: ", end="")
  109.     strenght += point_up(strenght)
  110.     print("Здоровье: ", end="")
  111.     hp += point_up(hp)
  112.     print("Ловкость: ", end="")
  113.     agility += point_up(agility)
  114.     print("Интеллект: ", end="")
  115.     intellect += point_up(intellect)
  116.  
  117. # Редактировать очки умения
  118. def edit_skills(choice):
  119.     global strenght, hp, agility, intellect, l_skills
  120.  
  121.     if choice == "1":
  122.         act = input("Прибавить или отнять? (+\-)\n")
  123.         if "-" in act:
  124.             print(strenght, "- ", end="")
  125.             strenght = point_down(strenght)
  126.             display_menu_edit()
  127.         elif "+" in act:
  128.             print(strenght, "+ ", end="")
  129.             strenght = point_up(strenght)
  130.             display_menu_edit()
  131.         else:
  132.             print("\nНекорректный ввод!")
  133.             display_menu_edit()
  134.  
  135.     elif choice == "2":
  136.         act = input("+\- ?\n")
  137.         if "-" in act:
  138.             print(hp, "- ", end="")
  139.             hp = point_down(hp)
  140.             display_menu_edit()
  141.         elif "+" in act:
  142.             print(hp, "+ ", end="")
  143.             hp = point_up(hp)
  144.             display_menu_edit()
  145.         else:
  146.             print("\nНекорректный ввод!")
  147.             display_menu_edit()
  148.  
  149.     elif choice == "3":
  150.         act = input("+\- ?\n")
  151.         if "-" in act:
  152.             print(agility, "- ", end="")
  153.             agility = point_down(agility)
  154.             display_menu_edit()
  155.         elif "+" in act:
  156.             print(agility, "+ ", end="")
  157.             agility = point_up(agility)
  158.             display_menu_edit()
  159.         else:
  160.             print("\nНекорректный ввод!")
  161.             display_menu_edit()
  162.  
  163.     elif choice == "4":
  164.         act = input("+\- ?\n")
  165.         if "-" in act:
  166.             print(intellect, "- ", end="")
  167.             intellect = point_down(intellect)
  168.             display_menu_edit()
  169.         elif "+" in act:
  170.             print(intellect, "+ ", end="")
  171.             intellect = point_up(intellect)
  172.             display_menu_edit()
  173.         else:
  174.             print("\nНекорректный ввод!")
  175.             display_menu_edit()
  176.    
  177.  
  178. # Повысить навык
  179. def point_up(skill):
  180.     global l_skills
  181.    
  182.     skill = int(input())
  183.     if skill < 0:
  184.         print("Некорректный ввод!")
  185.         main()
  186.     elif skill < l_skills + 1:
  187.         l_skills -= skill
  188.         print("\nДоступно очков", l_skills)
  189.         return skill
  190.     else:
  191.         print("У вас нет стольки очков умений!")
  192.         main()
  193.  
  194. # Понизить навык
  195. def point_down(skill):
  196.     global l_skills
  197.  
  198.     skill_down = int(input())
  199.     if skill < 0:
  200.         print("Некорректный ввод!")
  201.         main()
  202.     elif skill_down < skill + 1:
  203.         l_skills += skill_down
  204.         skill -= skill_down
  205.         print("\nДоступно очков", l_skills)
  206.         return skill
  207.     else:
  208.         print("Вы не можете этого сделать!")
  209.         main()
  210.  
  211. # Сброс навыков
  212. def reset():
  213.     global strenght, hp, agility, intellect, l_skills
  214.  
  215.     answer = input("\nВы уверены? (y/n)").lower()
  216.     if answer == "y" or answer == "yes":
  217.         strenght = 0
  218.         hp = 0
  219.         agility = 0
  220.         intellect = 0
  221.         l_skills = 30
  222.     elif answer == "n" or answer == "no":
  223.         main()
  224.     else:
  225.         reset()
  226.  
  227. # Основная часть программы
  228. def main():
  229.     while choice != "0":
  230.         display_skills(skills)
  231.         display_menu()
  232.         menu(choice)
  233.  
  234. choice = None
  235.  
  236. skills = {"Сила": 0,
  237.           "Здоровье": 0,
  238.           "Ловкость": 0,
  239.           "Мудрость": 0}
  240.  
  241. l_skills = 30
  242.  
  243. strenght = skills["Сила"]
  244. hp = skills["Здоровье"]
  245. agility = skills["Ловкость"]
  246. intellect = skills["Мудрость"]
  247.  
  248. main()
  249.  
  250. input("\n\nНапишите Enter чтобы выйти")
  251.  
  252. # КОНЕЦ
Advertisement
Add Comment
Please, Sign In to add comment