Мария обнови решението на 15.11.2022 17:24 (преди над 2 години)
+class Card:
+ suits = ('clubs', 'diamonds', 'hearts', 'spades')
+ faces = ('2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A')
+
+ def __init__(self, suit, face):
+ self.suit=suit
Бих използвал protected имена на атрибути като тези, които не използваш извън класа - self._suit
+ self.face=face
Моля слагай интервали около равното.
+
+ def get_suit(self):
+ return self.suit
+
+ def get_face(self):
+ return self.face
+
+
+class Deck:
+
+ def __init__(self, face_filter=None):
+ self.cards = []
+ if(face_filter == None):
Моля не слагай скоби около условията на if
.
+ face_filter = Card.faces
+ for suit in Card.suits:
+ for face in face_filter:
+ self.cards.append(Card(suit, face))
+
+ def cut(self):
Обърни внимание на имената на променливите като цяло. rnd_n
, i
, card1
- не са достатъчно описателни. Сякаш са случайни дефиниции.
+ rnd_n=random.randrange(len(self.cards))
+ for i in range(rnd_n):
Ако няма да използваш променлива, именувай я _
, както е по конвенция.
+ card1=self.cards[0]
+ self.cards.pop(0)
+ self.cards.append(card1)
+
+ def shuffle(self):
+ random.shuffle(self.cards)
+
+ def get_cards(self):
+ return self.cards
+
+
+class Player:
+ def __init__(self):
+ self.cards_Player=[]
+
+ def get_cards(self):
+ return self.cards_Player
+
+
+class Game:
+ def __init__(self, number_of_players, dealing_direction, dealing_instructions):
+ self.players=[]
+ for x in range(number_of_players):
+ self.players.append(Player())
+ self.number_of_players = number_of_players
+ self.dealing_direction = dealing_direction
+ self.dealing_instructions = dealing_instructions
+ self.cards_Deck = Deck()
+
+ def get_players(self):
+ rnd_n = random.randrange(self.number_of_players)
+ for x in range(rnd_n):
+ player = self.players[0]
+ self.players.pop(0)
+ self.players.append(player)
+ return self.players
+
+ def prepare_deck(self):
+ for i in self.players:
+ Deck.cards.extend(i.cards_Player)
+ i.cards_Player = []
+ self.cards_Deck.shuffle()
+ self.cards_Deck.cut()
+
+ def deal(self, Player):
+ idx = self.players.index(Player)
+ num_players = self.number_of_players
+ idx_change = 0
+ for crds in self.dealing_instructions:
+ if self.dealing_direction == 'ltr':
+ for x in range(idx, self.number_of_players):
+ for crd1 in range(crds):
+ self.players[x].cards_Player.append(self.cards_Deck.cards[0])
+ self.cards_Deck.cards.pop(0)
+ for j in range(idx):
+ for crd2 in range(crds):
+ self.players[j].cards_Player.append(self.cards_Deck.cards[0])
+ self.cards_Deck.cards.pop(0)
+ else:
+ for j in range(idx+1):
+ for crd2 in range(crds):
+ self.players[idx-j].cards_Player.append(self.cards_Deck.cards[0])
+ self.cards_Deck.cards.pop(0)
+ for x in range(self.number_of_players-1, idx, -1):
+ for crd1 in range(crds):
+ self.players[x].cards_Player.append(self.cards_Deck.cards[0])
+ self.cards_Deck.cards.pop(0)
+
+ def get_deck(self):
+ return self.cards_Deck
+
+
+class Belot(Game):
+ def __init__(self):
+ super().__init__(4, 'ltr', (2, 3, 3))
+ self.cards_Deck=Deck(['7', '8', '9', '10', 'J', 'Q', 'K', 'A'])
+
+
+class Poker(Game):
+ def __init__(self):
+ super().__init__(9, 'rtl', (1, 1, 1, 1, 1))
Бих използвал protected имена на атрибути като тези, които не използваш извън класа -
self._suit
Моля слагай интервали около равното.
Моля не слагай скоби около условията на
if
.Обърни внимание на имената на променливите като цяло.
rnd_n
,i
,card1
- не са достатъчно описателни. Сякаш са случайни дефиниции.Ако няма да използваш променлива, именувай я
_
, както е по конвенция.