Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """
- == Лото ==
- Правила игры в лото.
- Игра ведется с помощью специальных карточек, на которых отмечены числа,
- и фишек (бочонков) с цифрами.
- Количество бочонков — 90 штук (с цифрами от 1 до 90).
- Каждая карточка содержит 3 строки по 9 клеток. В каждой строке по 5 случайных цифр,
- расположенных по возрастанию. Все цифры в карточке уникальны. Пример карточки:
- --------------------------
- 9 43 62 74 90
- 2 27 75 78 82
- 41 56 63 76 86
- --------------------------
- В игре 2 игрока: пользователь и компьютер. Каждому в начале выдается
- случайная карточка.
- Каждый ход выбирается один случайный бочонок и выводится на экран.
- Также выводятся карточка игрока и карточка компьютера.
- Пользователю предлагается зачеркнуть цифру на карточке или продолжить.
- Если игрок выбрал "зачеркнуть":
- Если цифра есть на карточке - она зачеркивается и игра продолжается.
- Если цифры на карточке нет - игрок проигрывает и игра завершается.
- Если игрок выбрал "продолжить":
- Если цифра есть на карточке - игрок проигрывает и игра завершается.
- Если цифры на карточке нет - игра продолжается.
- Побеждает тот, кто первый закроет все числа на своей карточке.
- Пример одного хода:
- Новый бочонок: 70 (осталось 76)
- ------ Ваша карточка -----
- 6 7 49 57 58
- 14 26 - 78 85
- 23 33 38 48 71
- --------------------------
- -- Карточка компьютера ---
- 7 87 - 14 11
- 16 49 55 88 77
- 15 20 - 76 -
- --------------------------
- Зачеркнуть цифру? (y/n)
- Подсказка: каждый следующий случайный бочонок из мешка удобно получать
- с помощью функции-генератора.
- Подсказка: для работы с псевдослучайными числами удобно использовать
- модуль random: http://docs.python.org/3/library/random.html
- """
- import random
- def sample_string():
- example = ['{}', '{}', '{}', '{}', '{}'] + list(' ' * 4)
- random.shuffle(example)
- str_form = ' '.join(example) + '\n'
- return str_form
- class Card:
- def __init__(self, name, is_computer=False):
- self.name = name
- self.computer_check = is_computer
- self.card = random.sample(range(1, 91), 15)
- if self.computer_check:
- s0 = 'карточка компьютера:\n'
- else:
- s0 = 'карточка игрока:\n'
- self.sample_str_card = sample_string() + sample_string() + sample_string()
- def __str__(self):
- return self.sample_str_card.format(*self.card)
- class Game:
- def player_choice(self, player):
- self.player = player
- if self.player.computer_check:
- if self.barrel in self.player.card:
- for n, i in enumerate(player.card):
- if i == self.barrel:
- self.player.card[n] = '-'
- return True
- else:
- return True
- else:
- self.choice = input('зачеркнуть? [y/n]: ')
- if self.choice == 'y' and (self.barrel in self.player.card):
- for n, i in enumerate(player.card):
- if i == self.barrel:
- self.player.card[n] = '-'
- return True
- elif self.choice == 'n' and (self.barrel not in self.player.card):
- return True
- else:
- print('{}, вы проиграли'.format(self.player.name))
- return False
- def play(self, player1, player2):
- self.player1 = player1
- self.player2 = player2
- self.barrels = [i for i in range(1, 91)]
- while self.player1.card.count('-') != 15 and self.player2.card.count('-') != 15:
- self.barrel = random.choice(self.barrels)
- print('бочонок номер {}, осталось {}'.format(self.barrel, len(self.barrels) - 1))
- print(self.player1)
- print(self.player2)
- if self.player_choice(self.player1):
- pass
- else:
- break
- if self.player_choice(self.player2):
- pass
- else:
- break
- self.barrels.remove(self.barrel)
- if self.player1.card.count('-') < 15:
- print('подбедил {}'.format(self.player1.name))
- else:
- print('подбедил {}'.format(self.player2.name))
- player1 = Card('игрок1', is_computer=True)
- player2 = Card('игрок2', is_computer=True)
- game = Game()
- game.play(player1, player2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement