예제 #1
0
class TestDeckOfCards(TestCase):
    def setUp(self):
        self.deck1 = DeckOfCards()
        self.copy_deck = self.deck1.deck.copy()
        print('The test is starting')

    def tearDown(self):
        print("The test completed")

    def test_init(self):
        list1 = []
        for i in self.deck1.deck:
            if type(i) == Card:
                if i not in list1:
                    list1.append(i)
        self.assertEqual(len(list1), 52)

    def test_shuffle_deck(self):
        self.assertNotEqual(self.deck1.shuffle_deck(), self.copy_deck)
        self.assertCountEqual(self.deck1.deck, self.copy_deck)

    def test_deal_one(self):
        self.assertNotIn(self.deck1.deal_one(), self.deck1.deck)
        self.assertEqual(len(self.deck1.deck) + 1, len(self.copy_deck))
        deck2 = DeckOfCards()
        deck2.deck = [Card(2, u'\u2666')]
        deck2.deal_one()
        self.assertEqual(len(deck2.deck), 0)
        self.assertIsInstance(deck2.deck, list)
        self.assertIs(deck2.deal_one(), None)
예제 #2
0
class CardGame():

    # מחלקה שמגדירה את משחק הקלפים וחוקיו.
    # מתודה שמקבלת את שמות שתי השחקנים ומספר הקלפים שיש לחלק לכל שחקן
    # המתודה יוצרת חבילת קלפים אקראית חדשה

    def __init__(self, name1, name2, num_cards = 10):
        if type(num_cards) != int:
            raise TypeError('Invalid Type, int type is needed')
        else:
            self.num_cards = num_cards
            self.player1 = Player(name1, num_cards)
            self.player2 = Player(name2, num_cards)
            self.game_deck = DeckOfCards()
            self.new_game()

    # מתודה שמערבבת את חבילת הקלפים ומחלקת קלפים לשתי השחקנים
    # המתודה פועלת רק כאשר המשחק עוד לא התחיל, נקראית מהקונסטרקטור
    # במידה והמתודה תופעל באמצע המשחק, תחזיר הודעת שגיאה

    def new_game(self):
        if len(self.game_deck.deck)==52:
            self.game_deck.shuffle_deck()
            self.player1.set_hand(self.game_deck)
            self.player2.set_hand(self.game_deck)

        else:
            raise SystemError("the game is already began")

    # מתודה שמכריעה מי הזוכה במשחק ומדפיסה הודעה בהתאם

    def get_winner(self):
        if len(self.player1.pack)<len(self.player2.pack):
            return self.player1.name, print(f'The winner is: {self.player1.name}')
        elif len(self.player1.pack)>len(self.player2.pack):
            return self.player2.name,print(f'The winner is: {self.player2.name}')
        else:
            return None,print("There is no winner - tied")