کلاس Old Maid Hand چیست ؟
کلاس Old Maid Hand چیست ؟
یک دست کارت براي بازي OldaMaid علاوه بر قابلیـتهـاي عمـومی یـک Hand ،نیـاز بـه تواناییهاي دیگري هم دارد. ما کلاس جدیـدي بـه نـام OldMaidHand را تعریـف مـیکنـیم کـه از Hand ارثبري دارند و یک متد اضافه به نام removeMatches را ارائه میدهد:
class OldMaidHand(Hand):
def removeMatches(self):
count = 0
originalCards = self.cards[:]
for card in originalCards:
match = Card(3 – card.suit, card.rank)
if match in self.cards:
self.cards.remove(card)
self.cards.remove(match)
print “Hand %s: %s matches %s” % (self.name,card,match)
count = count + 1
return count
کار را با ساختن یک کپی از کارتها شروع میکنیم، بهطوريکه میتوانیم در حالی که کارتهـا را از لیست اصلی حذف میکنیم، کپی را پیمایش نماییم. از آنجا کـه cards.self در حلقـه تغییـر یافته است، نمیخواهیم از آن براي کنترل پیمایش استفاده کنیم. پایتون ممکن است کاملاً گیج شـود، اگر لیستی را پیمایش نماید که در حال تغییر است. براي هر کارت موجود در دست، مشخص میکنیم چه کارتی با آن جفت میشود و به دنبال آن میگردیم. کارت همتا (جفت شده) داراي رتبهاي برابر و خالی دیگر از همان رنگ است. عبارت suit.crad-3 ،یک Club) خال 0 (را به یک Spade) خال 1 (را به یک Heart (خال 2 (تبدیل میکند. شما باید خود را متقاعد کنید که عملگرهاي متضاد نیز کار میکنند. اگر کارت همتا هم در دست باشد هر دو حذف میشوند. مثال زیر چگونگی استفاده از removeMatches را نمایش میدهد:
>> game = CardGame()
>>> hand = OldMaidHand(“frank”)
>>> game.deck.deal([hand], 13)
>>> print hand
Hand frank contains
Ace of Spades
2 of Diamonds
7 of Spades
8 of Clubs
6 of Hearts
8 of Spades
7 of Clubs
Queen of Clubs
7 of Diamonds
5 of Clubs
Jack of Diamonds
10 of Diamonds
10 of Hearts>>> hand.removeMatches()
Hand frank: 7 of Spades matches 7 of Clubs
Hand frank: 8 of Spades matches 8 of Clubs
Hand frank: 10 of Diamonds matches 10 of Hearts
>>> print hand
Hand frank contains
Ace of Spades
2 of Diamonds
6 of Hearts
Queen of Clubs
7 of Diamonds
5 of Clubs
Jack of Diamonds
دقت کنید در کلاس OldMaidHand متد __init __وجود نـدارد. مـا از Hand ارثبـري
داریم.
برای اموزش های ویدیویی زبان پایتون به بستر ویدیو های اموزشی بروید