Решение на От ливадите до Лас Вегас (и назад) от Мария Марковска

Обратно към всички решения

Към профила на Мария Марковска

Резултати

  • 4 точки от тестове
  • 0 бонус точки
  • 4 точки общо
  • 6 успешни тест(а)
  • 9 неуспешни тест(а)

Код

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
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):
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=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))

Лог от изпълнението

.E..E..EEEEEE.E
======================================================================
ERROR: test_correct_direction_and_players_deal (test.TestBelot)
Test dealing with correct direction and players.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread
    raise result
NameError: name 'random' is not defined

======================================================================
ERROR: test_cutting_deck (test.TestDeck)
Test cutting a deck.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread
    raise result
NameError: name 'random' is not defined

======================================================================
ERROR: test_shuffling_deck (test.TestDeck)
Test shuffling a deck.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread
    raise result
NameError: name 'random' is not defined

======================================================================
ERROR: test_collecting_cards_before_dealing (test.TestGame)
Test collecting the cards before a new deal.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread
    raise result
NameError: name 'random' is not defined

======================================================================
ERROR: test_dealing_ltr (test.TestGame)
Test dealing the cards left to right.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread
    raise result
NameError: name 'random' is not defined

======================================================================
ERROR: test_dealing_rtl (test.TestGame)
Test dealing the cards right to left.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread
    raise result
NameError: name 'random' is not defined

======================================================================
ERROR: test_players_creation (test.TestGame)
Test creation and retrieval of players.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread
    raise result
NameError: name 'random' is not defined

======================================================================
ERROR: test_prepare_deck (test.TestGame)
Test preparing the deck for dealing.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread
    raise result
AttributeError: type object 'Deck' has no attribute 'cards'

======================================================================
ERROR: test_correct_direction_and_players_deal (test.TestPoker)
Test dealing with correct direction and players.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread
    raise result
NameError: name 'random' is not defined

----------------------------------------------------------------------
Ran 15 tests in 0.187s

FAILED (errors=9)

История (1 версия и 5 коментара)

Мария обнови решението на 15.11.2022 17:24 (преди над 1 година)

+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
+ 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):
+ 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=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))