Advertisement
py_tourist

Untitled

Aug 21st, 2020
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.03 KB | None | 0 0
  1. from termcolor import cprint
  2. from random import randint, randrange
  3.  
  4.  
  5. ######################################################## Часть первая
  6. #
  7. # Создать модель жизни небольшой семьи.
  8. #
  9. # Каждый день участники жизни могут делать только одно действие.
  10. # Все вместе они должны прожить год и не умереть.
  11. #
  12. # Муж может:
  13. #   есть,
  14. #   играть в WoT,
  15. #   ходить на работу,
  16. # Жена может:
  17. #   есть,
  18. #   покупать продукты,
  19. #   покупать шубу,
  20. #   убираться в доме,
  21.  
  22. # Все они живут в одном доме, дом характеризуется:
  23. #   кол-во денег в тумбочке (в начале - 100)
  24. #   кол-во еды в холодильнике (в начале - 50)
  25. #   кол-во грязи (в начале - 0)
  26. #
  27. # У людей есть имя, степень сытости (в начале - 30) и степень счастья (в начале - 100).
  28. #
  29. # Любое действие, кроме "есть", приводит к уменьшению степени сытости на 10 пунктов
  30. # Кушают взрослые максимум по 30 единиц еды, степень сытости растет на 1 пункт за 1 пункт еды.
  31. # Степень сытости не должна падать ниже 0, иначе чел умрет от голода.
  32. #
  33. # Деньги в тумбочку добавляет муж, после работы - 150 единиц за раз.
  34. # Еда стоит 10 денег 10 единиц еды. Шуба стоит 350 единиц.
  35. #
  36. # Грязь добавляется каждый день по 5 пунктов, за одну уборку жена может убирать до 100 единиц грязи.
  37. # Если в доме грязи больше 90 - у людей падает степень счастья каждый день на 10 пунктов,
  38. # Степень счастья растет: у мужа от игры в WoT (на 20), у жены от покупки шубы (на 60, но шуба дорогая)
  39. # Степень счастья не должна падать ниже 10, иначе чел умрает от депресии.
  40. #
  41. # Подвести итоги жизни за год: сколько было заработано денег, сколько сьедено еды, сколько куплено шуб.
  42.  
  43.  
  44. class House:
  45.  
  46.     def __init__(self, money=100, food=50, mud=0):
  47.         self.money = money
  48.         self.food = food
  49.         self.mud = mud
  50.         self.total_money_earn = 0
  51.         self.total_food_ate = 0
  52.         self.total_fur_coat_bought = 0
  53.  
  54.     def __str__(self):
  55.         return f"Денег в доме — {self.money}, еды в доме - {self.food} загрязненность - {self.mud}"
  56.  
  57.  
  58. class Husband:
  59.  
  60.     def __init__(self, name, house, satiety=30, happines=100):
  61.         self.name = name
  62.         self.house = house
  63.         self.satiety = satiety
  64.         self.happiness = happines
  65.  
  66.  
  67.  
  68.     def __str__(self):
  69.         return f"{self.name} сыт на {self.satiety} пунктов и счастлив на {self.happiness} пунктов"
  70.  
  71.     def act(self):
  72.         if self.house.mud > 90:
  73.             self.happiness -= 10
  74.  
  75.         if self.satiety <= 10:
  76.             self.eat()
  77.         else:
  78.             act = randint(0,2)
  79.             if act == 0:
  80.                 self.eat()
  81.             elif act == 1:
  82.                 self.work()
  83.             else:
  84.                 self.gaming()
  85.  
  86.         self.house.mud += 2.5
  87.  
  88.         if self.satiety < 0:
  89.             raise print(f"{self.name} умер от голода: сытость {self.satiety}")
  90.  
  91.         if self.happiness < 10:
  92.             raise print(f"{self.name} умер от депрессии: уровень счастья {self.happiness}")
  93.  
  94.     def eat(self):
  95.         food = randint(1, 30)
  96.         self.satiety += food
  97.         self.house.food -= food
  98.         self.house.total_food_ate +=food
  99.  
  100.  
  101.     def work(self):
  102.         salary = 150
  103.         self.house.money += salary
  104.         self.satiety -= 10
  105.         self.house.total_money_earn += salary
  106.  
  107.  
  108.     def gaming(self):
  109.         self.happiness += 20
  110.         self.satiety -= 10
  111.  
  112.  
  113. class Wife:
  114.  
  115.     def __init__(self, name, house, satiety=30, happines=100):
  116.         self.name = name
  117.         self.house = house
  118.         self.satiety = satiety
  119.         self.happiness = happines
  120.  
  121.     def __str__(self):
  122.         return f"{self.name} сыта на {self.satiety} пунктов и счастлива на {self.happiness} пунктов"
  123.  
  124.     def act(self):
  125.         if self.house.mud > 90:
  126.             self.happiness -= 10
  127.  
  128.         if self.happiness < 10:
  129.             print(f"{self.name} умерла от депрессии: уровень счастья {self.happiness}")
  130.             raise Exception
  131.  
  132.         if self.satiety <= 10:
  133.             self.eat()
  134.  
  135.         else:
  136.             act = randint(0,3)
  137.  
  138.             if act == 0:
  139.                 self.eat()
  140.             elif act == 1:
  141.                 self.shopping()
  142.             elif act == 2:
  143.                 self.buy_fur_coat()
  144.             else:
  145.                 self.clean_house()
  146.  
  147.         self.house.mud += 2.5
  148.  
  149.         if self.satiety < 0:
  150.             raise print(f"{self.name} умерла от голода: сытость {self.satiety}")
  151.  
  152.  
  153.  
  154.     def eat(self):
  155.         food_for_eating = randint(1, 30)
  156.         if self.house.food - food_for_eating < 0:
  157.             self.act()
  158.         else:
  159.             self.satiety += food_for_eating
  160.             self.house.food -= food_for_eating
  161.  
  162.  
  163.     def shopping(self):
  164.         try:
  165.             food = randint(11, self.house.money) // 10 * 10
  166.             money = food
  167.             self.house.money -= money
  168.             self.house.food += food
  169.             self.satiety -= 10
  170.         except:
  171.             self.act()
  172.  
  173.     def buy_fur_coat(self):
  174.         if self.house.money - 350 <= 0:
  175.             self.act()
  176.         else:
  177.             self.happiness += 60
  178.             self.house.money -= 350
  179.             self.satiety -= 10
  180.             self.house.total_fur_coat_bought += 1
  181.  
  182.     def clean_house(self):
  183.         mud_for_cleaning = randint(1,100)
  184.         if self.house.mud - mud_for_cleaning < 0:
  185.             self.act()
  186.         else:
  187.             self.house.mud -= mud_for_cleaning
  188.             self.satiety -= 10
  189.  
  190.  
  191. home = House()
  192. serge = Husband(name='Сережа', house=home)
  193. masha = Wife(name='Настя', house=home)
  194.  
  195. for day in range(365):
  196.     cprint('================== День {} =================='.format(day), color='red')
  197.     serge.act()
  198.     masha.act()
  199.     cprint(serge, color='cyan')
  200.     cprint(masha, color='cyan')
  201.     cprint(home, color='cyan')
  202.  
  203. print(f"Заработано денег {home.total_money_earn}, съедено еды {home.total_food_ate}, куплено шуб {home.total_fur_coat_bought}")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement