kipishio

Untitled

Nov 30th, 2021
654
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import random
  2.  
  3.  
  4. class Human:
  5.  
  6.     def hunger_check(self):
  7.         if self.satiety < 0:
  8.             return False
  9.         else:
  10.             return True
  11.  
  12.     def __init__(self, name, house, satiety=50):
  13.         self.name = name
  14.         self.satiety = satiety
  15.         self.house = house
  16.  
  17.     def eat(self):
  18.         if self.house.icebox > 0:
  19.             self.satiety += 1
  20.             self.house.icebox -= 1
  21.             print('{} поел, в холодильнике: {}, сытость: {}'.format(self.name, self.house.icebox, self.satiety))
  22.             return self.hunger_check()
  23.  
  24.         # elif self.house.icebox <= 0 and self.satiety >= 0:
  25.         elif self.house.icebox <= 0 <= self.satiety:
  26.             self.satiety -= 1
  27.             print('Есть игроку {} нечего минус сытость: {}'.format(self.name, self.satiety))
  28.             return self.hunger_check()
  29.  
  30.     def work(self):
  31.         if self.satiety >= 0:
  32.             self.satiety -= 1
  33.             self.house.money += 1
  34.             print('Игрок {} поработал, денег прибавилось и стало:{}, сытость {}'.format(self.name, self.house.money,
  35.                                                                                         self.satiety))
  36.             return self.hunger_check()
  37.  
  38.     def play(self):
  39.         if self.satiety >= 0:
  40.             self.satiety -= 1
  41.             print('{} поиграл, сытость упала до: {}'.format(self.name, self.satiety))
  42.         return self.hunger_check()
  43.  
  44.     def go_store_food(self):
  45.         if self.house.money > 0:
  46.             self.house.icebox += 1
  47.             self.house.money -= 1
  48.             print('Игрок {} сходил в магазин, потратил деньги {} пополнил запас еды {}'.format(self.name,
  49.                                                                                                self.house.money,
  50.                                                                                                self.house.icebox))
  51.             return True
  52.         elif self.house.money <= 0:
  53.             print('Игрок {} не смог купить еды, т.к. денег {}'.format(self.name, self.house.money))
  54.  
  55.  
  56. class House:
  57.     def __init__(self, icebox=50, money=0):
  58.         self.icebox = icebox
  59.         self.money = money
  60.  
  61.     def print_info(self):
  62.         print('В доме, в холодильнике еды: {}, денег в тумбочке: {}'.format(self.icebox, self.money))
  63.  
  64.  
  65. def roll_the_dice():
  66.     cube = random.randint(1, 6)
  67.     # print('Кубик выпало: {}'.format(cube))
  68.     return cube
  69.  
  70.  
  71. def action_execute(cube, player):
  72.     if cube == 5:
  73.         if player.satiety < 20:
  74.             satiety = player.eat()
  75.             return satiety
  76.         else:
  77.             print('И так сыт, еда не требуется')
  78.             return True
  79.  
  80.     elif cube == 3:
  81.         if player.house.icebox < 10:
  82.             go_store_food = player.go_store_food()
  83.             return go_store_food
  84.         elif player.house.icebox >= 10:
  85.             print('Игроку {} не нужно идти в магазин, т.к. в холодильнике {} еды'.format(player.name,
  86.                                                                                          player.house.icebox))
  87.             return True
  88.     elif cube == 4:
  89.         if player.house.money < 50:
  90.             work = player.work()
  91.             return work
  92.         elif player.house.money >= 50:
  93.             print('Денег Хватает')
  94.             return True
  95.  
  96.     elif cube == 1:
  97.         work = player.work()
  98.         return work
  99.  
  100.     elif cube == 2:
  101.         satiety = player.eat()
  102.         return satiety
  103.  
  104.     elif cube == 6:
  105.         satiety = player.play()
  106.         return satiety
  107.  
  108.  
  109. def game(*players):
  110.     cube_actions = {1: 'Работать', 2: 'Поесть', 3: 'Сходить в магазин', 4: 'Работать', 5: 'Поесть', 6: 'Играть'}
  111.     players_list = list(players)
  112.     list_of_the_dead = []
  113.  
  114.     for i_day in range(365):
  115.         if len(players_list) != 1:
  116.             for i_plaer in players_list:
  117.                 cube = roll_the_dice()
  118.                 print('|{:-^14}|{:-^12}|{:-^12}|{:-^12}|{:-^12}|{:-^19}|{:-^70}|'.format('Игрок кидает', 'Сытость',
  119.                                                                                          'Холодильник', 'Деньги',
  120.                                                                                          'Кубик', 'Значение',
  121.                                                                                          'Комментарий'))
  122.  
  123.                 print('|{:^14}|{:^12}|{:^12}|{:^12}|{:^12}|{:^19}|'.format(
  124.                     i_plaer.name,
  125.                     i_plaer.satiety,
  126.                     i_plaer.house.icebox,
  127.                     i_plaer.house.money,
  128.                     cube, cube_actions[cube]), end='')
  129.  
  130.                 state = action_execute(cube, i_plaer)
  131.  
  132.                 print('|{:^14}|{:^12}|{:^12}|{:^12}|{:^12}|{:^19}|'.format(
  133.                     i_plaer.name,
  134.                     i_plaer.satiety,
  135.                     i_plaer.house.icebox,
  136.                     i_plaer.house.money,
  137.                     '', ''))
  138.  
  139.                 if not state:
  140.                     print('{:-^150}'.format('Игрок с именем "{}" мертв!!!'.format(i_plaer.name)))
  141.                     print('{}\n{}\n{}\n{}\n{}'.format('*' * 150, '*' * 150, '*' * 150, '*' * 150, '*' * 150))
  142.  
  143.                     list_of_the_dead.append(i_plaer)
  144.                     players_list.remove(i_plaer)
  145.                 print()
  146.         else:
  147.             print('Игра окончена, победил {}!!!'.format(players_list[0].name))
  148.             losers_list = [i_dead.name for i_dead in list_of_the_dead]
  149.             print('Проигравшие {}'.format(losers_list[::-1]))
  150.             break
  151.  
  152.  
  153. hou = House()
  154. name_1 = Human('Иван', hou)
  155. name_2 = Human('Николай', hou)
  156. name_3 = Human('Валера', hou)
  157. name_4 = Human('Павел', hou)
  158. name_5 = Human('Константин', hou)
  159. name_6 = Human('Андрей', hou)
  160.  
  161. game(name_1, name_2, name_3, name_4, name_5, name_6)
  162.  
RAW Paste Data