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)
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()