class CardGame: def __init__(self, name1="player-1", name2="player-2", num_cards=10): """מקבלת כמה קלפים לחלק לכל שחקן, מגדירה 2 שחקנים, יוצרת חפיסה ומתחילה משחק חדש""" if type(num_cards) == int: # נכנסת רק כאשר המספר הוא שלם ותקין if 1 <= num_cards: # בודקת שכמות הקלפים היא תיקנית ולא פחות מ1 if num_cards > 26: # אם כמות הקלפים לחלוקה גדול מ26 היא תחלק רק 26 קלפים ותעדכן את המשתמש print("only 26 cards dealt") num_cards = 26 self.num_cards = num_cards self.player_1 = Player(name1, self.num_cards) self.player_2 = Player(name2, self.num_cards) self.deck_cards = DeckOfCards() self.new_game() else: exit("ERROR!") # אם הכמות היא פחות מ1 תדפיס שגיאה else: exit("ERROR!") # אם המספר אינו תיקני def get_winner(self): """מחזירה את השם של השחקן עם הרשימה הקצרה ביותר או אם הם שווים אז none""" if len(self.player_1.player_deck) < len(self.player_2.player_deck): return self.player_1.name elif len(self.player_1.player_deck) == len(self.player_2.player_deck): return None else: return self.player_2.name def new_game(self): """מערבבת את החפיסה השלימה ומחלקת קלפים לשני השחקנים, במידה והפונקציה הופעלה במהלך המשחק היא תציג שגיאה""" if len(self.deck_cards.show()) == 52: self.deck_cards.shuffle() self.player_1.set_hand(self.deck_cards) self.player_2.set_hand(self.deck_cards) else: exit("Error!")
class TestDeckOfCard(TestCase): def setUp(self): self.tester = DeckOfCards() def test_sum_cards(self): """בודקת האם בחפיסה חדשה שנוצרת יש 52 קלפים""" deck1 = DeckOfCards() self.assertEqual(len(deck1.cards), 52) def test_shuffle(self): """בודקת האם החפיסה לפני הערבוב שווה לחפיסה חדשה, ובודקת האם החפיסה אחרי הערבוב לא שווה לחפיסה חדשה לפני ערבוב""" deck1 = DeckOfCards() self.assertEqual(deck1.cards, self.tester.show()) self.tester.shuffle() self.assertNotEqual(deck1.cards, self.tester.show()) @patch("games_cards.DeckOfCards.DeckOfCards.random_for_deal_one", return_value=1) def test_deal_one1(self, mock_rand): """בודקת אם הפונקציה מחזירה לי בהגרלה את אינדקס 1 האם זה באמת אותו קלף""" c = self.tester.cards[1] b = self.tester.deal_one() print(c, b) self.assertEqual(b, c) def test_deal_one2(self): """בודקת לי האם הקלף שהוצאתי כבר לא נמצא בחפיסה""" a = self.tester.deal_one() self.assertNotIn(a, self.tester.show()) def test_deal_one3(self): """בודק לי האם החפיסה ירדה בכמות באחד אחרי שהוצאתי קלף""" len1 = len(self.tester.show()) self.tester.deal_one() len2 = len(self.tester.show()) self.assertEqual(len1 - 1, len2) def test_show(self): """בודקת האם הקלף הספיציפי נמצא בתוך חפיסת הקלפים""" self.card1 = Card(1, 1) self.assertIn(self.card1, self.tester.show())
def test_show(self): """checks the method are really shows the full deck""" deck = DeckOfCards() self.assertEqual(deck.show(), deck.list_cards)