Advertisement
nq1s788

tool

Mar 1st, 2024 (edited)
840
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.34 KB | None | 0 0
  1. from random import choices
  2.  
  3.  
  4. class Tool:
  5.     rarity = 'Обычная'
  6.     durability = 100
  7.     ratio = 2
  8.     hardness = [('Обычная', 2), ('Редкая', 1.25), ('Легендарная', 0.65)]
  9.     probability = [50, 35, 15]
  10.  
  11.     def get_probability(self):
  12.         for i in range(len(self.hardness)):
  13.             if self.hardness[i][0] == self.rarity:
  14.                 return self.probability[i]
  15.  
  16.     def get_new_tool(self):
  17.         self.rarity, self.ratio = choices(self.hardness, weights=self.probability)[0]
  18.         self.durability = 100
  19.  
  20.  
  21. class Pickaxe(Tool):
  22.     metal_hardness = 25
  23.  
  24.     def mine_metal(self):
  25.         self.durability -= self.ratio * self.metal_hardness
  26.  
  27.  
  28. class Shovel(Tool):
  29.     dirt_hardness = 15
  30.  
  31.     def clear_dirt(self):
  32.         self.durability -= self.ratio * self.dirt_hardness
  33.  
  34.  
  35. def choose_option():
  36.     print('Выберите действие:')
  37.     print('1. добывать киркой;')
  38.     print('2. копать лопатой;')
  39.     print('3. статистика;')
  40.     print('4. завершить игру.')
  41.     print()
  42.     return input('Ответ: ')
  43.  
  44.  
  45. def start():
  46.     events = (['жила', 'завал'], [20, 80])
  47.     metal = 0
  48.     dirt = 0
  49.     pickaxe = Pickaxe()
  50.     shovel = Shovel()
  51.     print('Вы начинаете игру')
  52.     print('Инструменты:')
  53.     print('- "' + pickaxe.rarity + '" кирка', str(pickaxe.durability) + '/100')
  54.     print('- "' + shovel.rarity + '" лопата', str(shovel.durability) + '/100')
  55.     print()
  56.     event = choices(events[0], weights=events[1])[0]
  57.     print('Герою попадается', event + '!')
  58.     request = choose_option()
  59.     while request != '4':
  60.         if request == '1':
  61.             if event == 'завал':
  62.                 print('Завалы нельзя расчищать киркой!')
  63.                 request = choose_option()
  64.                 continue
  65.             pickaxe.mine_metal()
  66.             if pickaxe.durability < 0:
  67.                 print('Кирка не выдержала, сломалась, металл не добыт')
  68.                 print('"' + pickaxe.rarity + '" кирка разрушается!')
  69.                 pickaxe.get_new_tool()
  70.                 print('Герой достает из сумки "' + pickaxe.rarity + '" кирка с вероятностью', str(pickaxe.get_probability()) + '%')
  71.             elif pickaxe.durability == 0:
  72.                 metal += 1
  73.                 print('Герой добывает 1 металл, Кирка', str(pickaxe.durability) + '/100')
  74.                 print('"' + pickaxe.rarity + '" кирка разрушается!')
  75.                 pickaxe.get_new_tool()
  76.                 print('Герой достает из сумки "' + pickaxe.rarity + '" кирка с вероятностью',
  77.                       str(pickaxe.get_probability()) + '%')
  78.                 event = choices(events[0], weights=events[1])[0]
  79.                 print('Герою попадается', event + '!')
  80.             else:
  81.                 metal += 1
  82.                 print('Герой добывает 1 металл, Кирка', str(pickaxe.durability) + '/100')
  83.                 event = choices(events[0], weights=events[1])[0]
  84.                 print('Герою попадается', event + '!')
  85.         elif request == '2':
  86.             if event == 'жила':
  87.                 print('Металлы нельзя добывать лопатой!')
  88.                 request = choose_option()
  89.                 continue
  90.             shovel.clear_dirt()
  91.             if shovel.durability < 0:
  92.                 print('Лопата не выдержала, сломалась, грязь не добыта')
  93.                 print('"' + shovel.rarity + '" лопата разрушается!')
  94.                 shovel.get_new_tool()
  95.                 print('Герой достает из сумки "' + shovel.rarity + '" лопата с вероятностью', str(shovel.get_probability()) + '%')
  96.             elif shovel.durability == 0:
  97.                 dirt += 1
  98.                 print('Герой добывает 1 грязь, Лопата', str(shovel.durability) + '/100')
  99.                 print('"' + shovel.rarity + '" лопата разрушается!')
  100.                 shovel.get_new_tool()
  101.                 print('Герой достает из сумки "' + shovel.rarity + '" лопата с вероятностью',
  102.                       str(shovel.get_probability()) + '%')
  103.                 event = choices(events[0], weights=events[1])[0]
  104.                 print('Герою попадается', event + '!')
  105.             else:
  106.                 dirt += 1
  107.                 print('Герой добывает 1 грязь, Лопата', str(shovel.durability) + '/100')
  108.                 event = choices(events[0], weights=events[1])[0]
  109.                 print('Герою попадается', event + '!')
  110.         elif request == '3':
  111.             print('- "' + pickaxe.rarity + '" кирка', str(pickaxe.durability) + '/100')
  112.             print('- "' + shovel.rarity + '" лопата', str(shovel.durability) + '/100')
  113.             print('Добыто:')
  114.             print('Металл:', metal)
  115.             print('Грязь:', dirt)
  116.         else:
  117.             print('Неверный запрос')
  118.         request = choose_option()
  119.  
  120.  
  121. start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement