Advertisement
AntonPaly4

lotto

Apr 22nd, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.48 KB | None | 0 0
  1. """
  2. == Лото ==
  3. Правила игры в лото.
  4. Игра ведется с помощью специальных карточек, на которых отмечены числа,
  5. и фишек (бочонков) с цифрами.
  6. Количество бочонков — 90 штук (с цифрами от 1 до 90).
  7. Каждая карточка содержит 3 строки по 9 клеток. В каждой строке по 5 случайных цифр,
  8. расположенных по возрастанию. Все цифры в карточке уникальны. Пример карточки:
  9. --------------------------
  10.    9 43 62          74 90
  11. 2    27    75 78    82
  12.   41 56 63     76      86
  13. --------------------------
  14. В игре 2 игрока: пользователь и компьютер. Каждому в начале выдается
  15. случайная карточка.
  16. Каждый ход выбирается один случайный бочонок и выводится на экран.
  17. Также выводятся карточка игрока и карточка компьютера.
  18. Пользователю предлагается зачеркнуть цифру на карточке или продолжить.
  19. Если игрок выбрал "зачеркнуть":
  20.     Если цифра есть на карточке - она зачеркивается и игра продолжается.
  21.     Если цифры на карточке нет - игрок проигрывает и игра завершается.
  22. Если игрок выбрал "продолжить":
  23.     Если цифра есть на карточке - игрок проигрывает и игра завершается.
  24.     Если цифры на карточке нет - игра продолжается.
  25.    
  26. Побеждает тот, кто первый закроет все числа на своей карточке.
  27. Пример одного хода:
  28. Новый бочонок: 70 (осталось 76)
  29. ------ Ваша карточка -----
  30. 6  7          49    57 58
  31.   14 26     -    78    85
  32. 23 33    38    48    71  
  33. --------------------------
  34. -- Карточка компьютера ---
  35. 7 87     - 14    11      
  36.      16 49    55 88    77    
  37.   15 20     -       76  -
  38. --------------------------
  39. Зачеркнуть цифру? (y/n)
  40. Подсказка: каждый следующий случайный бочонок из мешка удобно получать
  41. с помощью функции-генератора.
  42. Подсказка: для работы с псевдослучайными числами удобно использовать
  43. модуль random: http://docs.python.org/3/library/random.html
  44. """
  45.  
  46.  
  47. import random
  48.  
  49. def sample_string():
  50.     example = ['{}', '{}', '{}', '{}', '{}'] + list(' ' * 4)
  51.     random.shuffle(example)
  52.     str_form = ' '.join(example) + '\n'
  53.     return str_form
  54.  
  55. class Card:
  56.  
  57.     def __init__(self, name, is_computer=False):
  58.         self.name = name
  59.         self.computer_check = is_computer
  60.         self.card = random.sample(range(1, 91), 15)
  61.         if self.computer_check:
  62.             s0 = 'карточка компьютера:\n'
  63.         else:
  64.             s0 = 'карточка игрока:\n'
  65.         self.sample_str_card = sample_string() + sample_string() + sample_string()
  66.  
  67.  
  68.     def __str__(self):
  69.         return self.sample_str_card.format(*self.card)
  70.  
  71. class Game:
  72.  
  73.     def player_choice(self, player):
  74.         self.player = player
  75.         if self.player.computer_check:
  76.             if self.barrel in self.player.card:
  77.                 for n, i in enumerate(player.card):
  78.                     if i == self.barrel:
  79.                         self.player.card[n] = '-'
  80.                 return True
  81.             else:
  82.                 return True
  83.         else:
  84.             self.choice = input('зачеркнуть? [y/n]: ')
  85.             if self.choice == 'y' and (self.barrel in self.player.card):
  86.                 for n, i in enumerate(player.card):
  87.                     if i == self.barrel:
  88.                         self.player.card[n] = '-'
  89.                 return True
  90.             elif self.choice == 'n' and (self.barrel not in self.player.card):
  91.                 return True
  92.             else:
  93.                 print('{}, вы проиграли'.format(self.player.name))
  94.                 return False
  95.  
  96.  
  97.  
  98.     def play(self, player1, player2):
  99.         self.player1 = player1
  100.         self.player2 = player2
  101.         self.barrels = [i for i in range(1, 91)]
  102.         while self.player1.card.count('-') != 15 and self.player2.card.count('-') != 15:
  103.             self.barrel = random.choice(self.barrels)
  104.             print('бочонок номер {}, осталось {}'.format(self.barrel, len(self.barrels) - 1))
  105.             print(self.player1)
  106.             print(self.player2)
  107.             if self.player_choice(self.player1):
  108.                 pass
  109.             else:
  110.                 break
  111.             if self.player_choice(self.player2):
  112.                 pass
  113.             else:
  114.                 break
  115.             self.barrels.remove(self.barrel)
  116.  
  117.         if self.player1.card.count('-') < 15:
  118.             print('подбедил {}'.format(self.player1.name))
  119.         else:
  120.             print('подбедил {}'.format(self.player2.name))
  121.  
  122. player1 = Card('игрок1', is_computer=True)
  123. player2 = Card('игрок2', is_computer=True)
  124.  
  125. game = Game()
  126. game.play(player1, player2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement