/
Black Jack.py
109 lines (89 loc) · 5.6 KB
/
Black Jack.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import random
cards = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11] * 4 #Колода карт
random.shuffle(cards) #Перемешиваем колоду
main_pack = 0 #Изначальный баланс игрока
croupier_pack = 0 #Изначальный баланс крупье
def get_cards_main():
global main_pack #Обращение к глобальной переменной main_pack (Баланс игрока)
print('\nВыпала карта - ' + str(cards[-1])) #Выводим сообщение о том, какая выпала карта
main_pack += cards.pop() #Добавляем последнюю карту с колоды к балансу игрока, после удаляем её
return
def get_cards_croupier():
global croupier_pack #Обращение к глобальной переменной croupier_pack (Баланс крупье)
#Добавляем немного человечности боту
if croupier_pack < 21 and croupier_pack < 20 and croupier_pack < 19 and croupier_pack < 18 and croupier_pack < 17:
croupier_pack += cards.pop() #Добавляем последнюю карту с колоды к балансу бота, после удаляем её
return
def set_default_packs(): #Ставим стандарт
global cards
global main_pack
global croupier_pack
cards = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11] * 4 #Колода карт
random.shuffle(cards) #Перемешиваем колоду
main_pack = 0 #Изначальный баланс игрока
croupier_pack = 0 #Изначальный баланс крупье
return
def send_message(player): #Сообщение о выигрыше, выводим сообщение с балансами обоих игроков
if player == 'self':
print('\nРезультат: Вы выиграли!')
elif player == 'croupier':
print('\nРезультат: Вы проиграли!')
elif player == 'none':
print('\nРезультат: Ничья')
print('\nВаш баланс: ' + str(main_pack) + '\nБаланс крупье: ' + str(croupier_pack) + '\n') #Баланс игрока и крупье
return
def get_winner(): #Узнаём победителя
global croupier_pack
global main_pack
if main_pack <= 21 and croupier_pack > 21:
send_message('self') #Вывод сообщения о победе
elif main_pack <= 21 and croupier_pack < 21 and main_pack > croupier_pack:
send_message('self') #Вывод сообщения о победе
elif main_pack > 21 and croupier_pack <= 21:
send_message('croupier') #Вывод сообщения о проигрыше
elif main_pack < 21 and croupier_pack <= 21 and main_pack < croupier_pack:
send_message('croupier') #Вывод сообщения о проигрыше
elif main_pack > 21 and croupier_pack > 21:
send_message('croupier') #Вывод сообщения о проигрыше
elif main_pack == croupier_pack:
send_message('none') #Вывод сообщения о ничьей
return
while True:
try:
if main_pack < 21:
print('\nБаланс: ', main_pack) #Выводим баланс игрока
choice = input('Взять карту? [Y/N]: ') #Запрашиваем разрешение о выдаче карты
if choice == 'Y' or choice == 'y' or choice == 'н' or choice == 'Н': #При согласии, отдаем разные карты игроку и крупье
get_cards_croupier() #Крупье берёт карту
get_cards_main() #Игрок берёт карту
continue
elif choice == 'N' or choice == 'n' or choice == 'т' or choice == 'Т': #Отказ от выдачи карты
get_cards_croupier() #Крупье берёт карту
get_winner() #Выявляем победителя
select = input('\n\nНачать заного? [Y/N]: ')
if select == 'Y' or select == 'y' or select == 'н' or select == 'Н':
set_default_packs()
continue
elif select == 'N' or select == 'n' or select == 'т' or select == 'Т':
print('\n\n[Информация] Спасибо за игру!')
break
else:
print('\n\n[Ошибка] Введите нужный символ')
continue
else:
print('\n\n[Ошибка] Введите нужный символ') #Ошибка, если не введен нужный символ
continue
else:
get_winner() #Выявляем победителя
select = input('[Информация] Начать заного? [Y/N]: ')
if select == 'Y' or select == 'y' or select == 'н' or select == 'Н':
set_default_packs()
continue
elif select == 'N' or select == 'n' or select == 'т' or select == 'Т':
print('\n\n[Информация] Спасибо за игру!')
break
else:
print('\n\n[Ошибка] Введите нужный символ') #Ошибка, если не введен нужный символ
continue
except ValueError:
print('\n\n[Ошибка] Введите нужный символ') #Ошибка, если не введен нужный символ, завершаем работу