class GameTest(unittest.TestCase):
    def setUp(self):
        self.play = Play()

    def test_init(self):
        self.assertEqual(self.play.cards, [])

    def test_append(self):
        # Setup
        card = Card(CardValue.TEN, CardSuit.HEARTS)

        # Run
        self.play.append(card)

        # Assert
        self.assertEqual(card, self.play.cards[0])

    def test_calculateExtraPoints_runOfThree(self):
        # Setup
        self.play.append(Card(CardValue.TEN, CardSuit.HEARTS))
        self.play.append(Card(CardValue.NINE, CardSuit.HEARTS))
        self.play.append(Card(CardValue.EIGHT, CardSuit.HEARTS))

        # Run
        extraPoints = self.play.calculateExtraPoints()

        # Assert
        self.assertEqual(extraPoints, 3)
Beispiel #2
0
    def playRound(self):
        currentPlay = Play()
        currentPlayerIndex = self.players.index(self.currentDealer)
        currentPlayer = self.players[currentPlayerIndex]
        for player in self.players:
            player.createPlayHand()
        lastPlayerToPlay = None
        while True:
            # Determine is anyone has cards left
            someoneHasCards = False
            for player in self.players:
                if (len(player.playHand) > 0):
                    someoneHasCards = True
            if (not someoneHasCards):
                break

            # Get the next player
            if ((currentPlayerIndex + 1) % len(self.players) == 0):
                currentPlayerIndex = 0
                currentPlayer = self.players[0]
            else:
                currentPlayerIndex += 1
            currentPlayer = self.players[currentPlayerIndex]

            # If player can play, play
            if (currentPlayer.canPlay(currentPlay.pointLimit)):
                cardPlayed = currentPlayer.play(currentPlay.pointLimit)
                currentPlay.append(cardPlayed)
                print('{0} plays {1}'.format(currentPlayer.name, cardPlayed))
                currentPlayer.score += currentPlay.calculateExtraPoints()
                lastPlayerToPlay = currentPlayer
                print(currentPlay.points)
            else:
                if (currentPlayer == lastPlayerToPlay):
                    currentPlayer.score += 1
                    print('{0}: One for last'.format(currentPlayer.name))
                    currentPlay.reset()
                else:
                    print('{0} GO'.format(currentPlayer.name))
        currentPlayer.score += 1
        print('{0}: One for last'.format(currentPlayer.name))
        currentPlay.reset()