Loading

casino.py

  1. from random import choice
  2.  
  3. class Player:
  4.     pass
  5.  
  6. groups = {
  7.     'Третьи 12': [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36],
  8.     'A': [1, 2, 7, 8, 13, 14, 19, 20, 25, 26, 31, 32],
  9.     'Вторые 12': [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24],
  10.     'Первые 12': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
  11.     'B': [3, 4, 9, 10, 15, 16, 21, 22, 27, 28, 33, 34],
  12.     'C': [5, 6, 11, 12, 17, 18, 23, 24, 29, 30, 35, 36],
  13.     'Нечётные': [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35],
  14.     'Чётные': [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36]
  15. }
  16.  
  17. table = '''
  18. ______________________________________
  19.       | 1  2| 3  4| 5  6 |          
  20.       |     |     |      | Первые 12
  21.       | 7  8| 9 10|11 12 |          
  22.       |_ _ _|_ _ _|_ _ _ |___________
  23.       |13 14|15 16|17 18 |          
  24.   0   |     |     |      | Вторые 12
  25.       |19 20|21 22|23 24 |          
  26.       |_ _ _|_ _ _|_ _ _ |___________
  27.       |25 26|27 28|29 30 |          
  28.       |     |     |      | Третьи 12
  29.       |31 32|33 34|35 36 |          
  30. _______|_____|_____|______|___________
  31.       |     |     |      |          
  32.       |  A  |  B  |  C   |          
  33.       |     |     |      |          
  34. '''
  35.  
  36. players = []
  37. for i in range(4):
  38.     player = Player()
  39.     player.name = 'Player {}'.format(i + 1)
  40.     player.balance = 1000
  41.     player.bet = None
  42.     player.bet_sum = 0
  43.     player.luck = []
  44.     players.append(player)
  45. user = players[-1]
  46. user.name = 'Вы'
  47.  
  48. def make_random_bet(player):
  49.     player.bet = choice(list(groups) + [(choice(range(1, 37)))])
  50.     player.bet_sum = choice(range(player.balance // 20 + 1, player.balance // 3 + 2))
  51.     if player.bet_sum > 20:
  52.         # round to 5
  53.         player.bet_sum = player.bet_sum // 5 * 5
  54.     player.balance -= player.bet_sum
  55.  
  56. while True:
  57.     print(table)
  58.    
  59.     try:
  60.         user.bet_sum = int(input(' Внесите сумму ({} всего): '.format(user.balance)))
  61.     except ValueError:
  62.         print('\n Простите, но я хотел получить число!')
  63.         input('\nOK')
  64.         continue
  65.     if user.bet_sum > user.balance:
  66.         print('\n Полегче, папаша! У Вас нет таких денег!')
  67.         input('\nOK')
  68.         continue
  69.     if user.bet_sum <= 0:
  70.         print('\n Жадина! Минимальная ставка - 1.')
  71.         input('\nOK')
  72.         continue
  73.     user.bet = input(' Выберите группу или число: ')
  74.     try:
  75.         p = int(user.bet)
  76.     except ValueError:
  77.         if user.bet not in groups:
  78.             print('\n Неплохо! Но такой группы на доске, вообще-то, нет...')
  79.             input('\nOK')
  80.             continue
  81.     else:
  82.         if p == 0:
  83.             print('\n Э-э, на 0 нельзя ставить!')
  84.             input('\nOK')
  85.             continue
  86.         elif not 0 < p <= 36:
  87.             print('\n Сэр, Вы, кажется, перестрались с бренди. Такого числа нет на доске.')
  88.             input('\nOK')
  89.             continue
  90.     user.balance -= user.bet_sum
  91.    
  92.     print('\n\n')
  93.    
  94.     for player in players:
  95.         if player is not user:
  96.             make_random_bet(player)
  97.         print(' {name}: {bet_sum} на {group} ({money} осталось)'.format(name=player.name,
  98.                 bet_sum=player.bet_sum, group=player.bet, money=player.balance))
  99.                
  100.     input('\nOK')
  101.    
  102.     n = choice(range(37))
  103.     print('\n Выпало', n, '\n')
  104.    
  105.     input('\nOK')
  106.    
  107.     for player in players:
  108.         win = None
  109.         try:
  110.             int(player.bet)
  111.         except ValueError:
  112.             if n in groups[player.bet]:
  113.                 win = player.bet_sum * 36 // len(groups[player.bet])
  114.         else:
  115.             if n == int(player.bet):
  116.                 win = player.bet_sum * 36
  117.         if win is not None:
  118.             player.balance += win
  119.             if player is not user:
  120.                 print('\n {} выиграл {} ({} стало)'.format(player.name, win, player.balance))
  121.             else:
  122.                 print('\n {} выиграли {} ({} стало)'.format(player.name, win, player.balance))
  123.             input('\nOK')
  124.    
  125.     for player in players:
  126.         if player.balance >= 2500:
  127.             player.luck.append(player.balance)
  128.         else:
  129.             player.luck = []
  130.    
  131.     new_players = []
  132.     for player in players:
  133.         if player.balance <= 0:
  134.             if player is user:
  135.                 print('\n Вы разорились! Сегодня Вы ночуете на улице.')
  136.                 exit()
  137.             else:
  138.                 print('\n', player.name, 'разорился')
  139.             input('\nOK')
  140.         elif player is not user and player.balance >= choice(range(2500, 4000)) and choice([True] + [False] * 5):
  141.             print('\n', player.name, 'покинул игру')
  142.             input('\nOK')
  143.         elif len(player.luck) >= 3 and player.luck[-1] >= max(player.luck[:-1]) and choice([True] + [False] * 3):
  144.             if player is not user:
  145.                 print('\n', player.name, 'был удалён из игры без объяснения причин.')
  146.                 input('\nOK')
  147.             else:
  148.                 print('Вы были удалены из игры без объяснения причин.')
  149.                 exit()
  150.         else:
  151.             new_players.append(player)
  152.     players = new_players