Ví dụ 2: Dealer và một Player trong Game Blackjack (tiếp tục)
Một Dealer object cũng duy trì một nhúm cards và nhìn nhận cùng các phương thức như Player object. Tuy
nhiên, hành vi của dealer hơi chuyên biệt một chút. Ví dụ, dealer trước tiên giơ ra một card, và dealer
hits lặp lại cho đến khi 17 điểm được đi đến hay vượt qua. Vì vậy, như hình trên thể hiện, Dealer được
định nghĩa tốt nhất như một class phụ của Player. Sau đây là code cho Dealer class, theo sau bởi một
giải thích ngắn:
class Dealer(Player) :
“””Like a Player, but with some restrictions.”””
def __init__(self, cards):“””Initial state: show one card only.”””
Player.__init__(self, cards)
self.showOneCard = Truedef __str__(self) :
“””Return just one card if not hit yet.”””
if self.showOneCard:return str(self.cards[0])
else:
return Player.__str__(self)
def hit(self, deck):
“””Add cards while points < 17,
then allow all to be shown.”””
self.showOneCard = False
while self.getPoints() < 17:self.cards.append(deck.deal())
Dealer duy trì một biến thực thể thêm, showOneCard, cái hạn chế số cards trong trình bày string thành
một card lúc khởi động. Ngay sau khi dealer hits, biến này được thiết lập thành False, nên tất cả các
cards sẽ được bao gồm trong string từ đó trở đi. Phương thức hit thực sự nhận một deck hơn là một card
đơn như một đối số, nên các cards có thể được làm việc lặp lại và thêm vào list của dealer tại
đóng của game.
Blackjack class phối hợp các tương tác giữa Deck object, Player object, Dealer object và người dùng con
người. Sau đây là code:


