-
Notifications
You must be signed in to change notification settings - Fork 0
/
ch09_playing_cards2.py
97 lines (78 loc) · 2.56 KB
/
ch09_playing_cards2.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
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Карты 2.0
# Демонстрирует расширение класса через наследование
class Card(object):
"""Одна игральная карта"""
RANKS = ["Т", "2", "3", "4", "5", "6", "7", "8", "9", "10", "В", "Д", "К"]
SUITS = ["к", "б", "ч", "п"]
def __init__(self, rank, suit):
self.rank = rank
self.suit = suit
def __str__(self):
rep = self.rank + self.suit
return rep
class Hand(object):
"""Набор карт на руках у одного игрока"""
def __init__(self):
self.cards = []
def __str__(self):
if self.cards:
rep = ""
for card in self.cards:
rep += str(card) + " "
else:
rep = "<пусто>"
return rep
def clear(self):
self.cards = []
def add(self, card):
self.cards.append(card)
def give(self, card, other_hand):
self.cards.remove(card)
other_hand.add(card)
class Deck(Hand):
"""Колода игральный карт"""
def populate(self):
self.cards = []
for suit in Card.SUITS:
for rank in Card.RANKS:
self.add(Card(rank, suit))
def shuffle(self):
import random
random.shuffle(self.cards)
def deal(self, hands, per_hand=1):
for rounds in range(per_hand):
for hand in hands:
if self.cards:
top_card = self.cards[0]
self.give(top_card, hand)
else:
print("Не могу больше сдавать, закончились карты!")
# Основная часть
deck1 = Deck()
print("Создана новая колода")
print("Вот эта колода:")
print(deck1)
deck1.populate()
print("В колоде появились карты")
print("Вот как она выглядит теперь:")
print(deck1)
deck1.shuffle()
print("Колода перемешана")
print("Вот как она выглядит теперь:")
print(deck1)
my_hand = Hand()
your_hand = Hand()
hands = [my_hand, your_hand]
deck1.deal(hands, per_hand=5)
print("Мне и вам на руки роздано по 5 карт")
print("У меня на руках:")
print(my_hand)
print("У вас на руках:")
print(your_hand)
print("Осталось в колоде:")
print(deck1)
deck1.clear()
print("Колода очищена")
print("Вот как она выглядит теперь:", deck1)