Тихомир обнови решението на 15.11.2022 15:27 (преди около 2 години)
+import random
+
+class Card:
+
+ 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):
Класът трябва да работи дори без да подам филтър, т.е. това трябва да е optional.
+ self.deck = []
+ if face_filter == None:
+ for suit in ['clubs', 'diamonds', 'hearts', 'spades']:
+ for face in ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', ]:
+ self.deck.append(Card(suit, face))
+ else:
+ for suit in ['clubs', 'diamonds', 'hearts', 'spades']:
+ for face in face_filter:
+ self.deck.append(Card(suit, face))
+
+ def cut(self):
+ cards_wanted_to_draw = []
+ cards_wanted_to_draw.append(self.deck.pop())
+ number_of_drawed_cards = len(cards_wanted_to_draw)
+ self.deck.append(self.deck.pop(self.deck.index(number_of_drawed_cards)))
self.deck.pop
очаква индекс на елемент, а не брой елементи.
+
+ def shuffle(self):
+ random.shuffle(self.deck)
+
+ def get_cards(self):
+ return self.deck
+
+
+class Player:
+
+ def get_cards():
get_cards
е методът, който ще използваме, за да вземем картите, които вече си инстанцирал. Това не е метод за инстанциране на карти. Класът ти трябва да работи и без да извиквам този метод.
+ player_hand = []
+ for card in Deck.deck.deal():
+ player_hand.append()
+ return player_hand
+
+
+class Game:
+
+ def __init__(self, number_of_players, dealing_direction, dealing_instructions):
+ self.number_of_players = number_of_players
+ self.dealing_direction = dealing_direction
+ self.dealing_instructions = dealing_instructions
+
+ def get_players(self):
+ list_of_players
+ self.num_players = self.number_of_players
+ for self.player in range(self.num_players):
+ self.list_of_players.append(self.player)
self.player
?
+ return self.list_of_players
+
+ def prepare_deck(self):
+ Deck.deck.append(Player.get_cards())
+ Deck.deck.shuffle()
+ Deck.deck.cut()
+
+
+class Belot(Game):
+
+ def __init__(self):
+ Game(4, 'ltr', (2, 3, 3))
+
+
+class Poker(Game):
+
+ def __init__():
+ Game(9, 'rtl', (1, 1, 1, 1, 1))
Моля изтествай си кода. Имаш очевидни проблеми. Не е ясно дали въобще някой тест ще мине при такова състояние.
Бих използвал protected имена на атрибути като тези, които не използваш извън класа -
self._suit
Класът трябва да работи дори без да подам филтър, т.е. това трябва да е optional.
self.deck.pop
очаква индекс на елемент, а не брой елементи.get_cards
е методът, който ще използваме, за да вземем картите, които вече си инстанцирал. Това не е метод за инстанциране на карти. Класът ти трябва да работи и без да извиквам този метод.?
self.player
?