def playRPS(player0, player1): # Return a random number if both players are ai if player0.difficulty != player.PlayerDifficulty.HUMAN and player1.difficulty != player.PlayerDifficulty.HUMAN: return random.choice([1, 0]) # Print alternatives console.write(console.coloredText("[1] Rock", console.BLUE)) console.write(console.coloredText("[2] Paper", console.GREEN)) console.write(console.coloredText("[3] Scissor", console.RED)) console.write(console.coloredText("[q] Quit", console.MAGENTA)) # Let players0 make their choice if player0.difficulty == player.PlayerDifficulty.HUMAN: choicePlayer0 = getChoice(player0) else: choicePlayer0 = random.choice([1, 2, 3]) # Let players0 make their choice if player1.difficulty == player.PlayerDifficulty.HUMAN: choicePlayer1 = getChoice(player1) else: choicePlayer1 = random.choice([1, 2, 3]) # Present choices player_choice(player0, choicePlayer0) player_choice(player1, choicePlayer1) # Return the result r = result(player0, player1, choicePlayer0, choicePlayer1) if r == 0.5: return playRPS(player0, player1) return r
def test_console_color(self): t0 = console.coloredText("test", console.MAGENTA) self.assertEqual(t0, "\033[38;5;" + str(console.MAGENTA) + "mtest\033[0m") t1 = console.coloredText("fox", console.CLEAR) self.assertEqual(t1, "fox")
def summary(self): text = "Summary of tournament:\n" text = text + "Type: " + getTournamentTypeName(self.type) + "\n" + "Players:\n" for p in self.players: playerText = "\t" + p.name + " - " + player.getDifficultyName(p.difficulty) + "\n" text = text + console.coloredText(playerText, console.CLEAR) return text
def printRanking(self): self.ranking.sort(key=lambda x: (x.score, x.winCount), reverse=True) rankPresent = 'Rank' + self.SpaceBetweenItems + 'Name ' + self.SpaceBetweenItems + 'Win' + self.SpaceBetweenItems + 'Lose' + self.SpaceBetweenItems + 'Tie' + self.SpaceBetweenItems + 'Score\n' for i, player in enumerate(self.ranking): newLine = '' rank = str(i + 1) newLine += rank + (4 - len(rank)) * ' ' + self.SpaceBetweenItems newLine += coloredText( player.name, self.colorSetting[player.name]) + ( 12 - len(player.name)) * ' ' + self.SpaceBetweenItems newLine += coloredText(str(player.winCount), 225) + ( 3 - len(str(player.winCount))) * ' ' + self.SpaceBetweenItems newLine += coloredText(str(player.loseCount), 196) + ( 4 - len(str(player.loseCount))) * ' ' + self.SpaceBetweenItems newLine += coloredText(str(player.tieCount), 190) + ( 3 - len(str(player.tieCount))) * ' ' + self.SpaceBetweenItems newLine += coloredText(str( player.score), 99) + (5 - len(str(player.score))) * ' ' + '\n' rankPresent += newLine print(rankPresent)
def add_record(self, result, player0, player1): if self.matchIndex == 0: self.round += 1 self.rows[ self.round // 5][0] += ' ' + self.BlanksBeforeRoundName * ' ' + coloredText( 'Round ' + str(self.round), Front_Colors[ colorCode[self.round - 1]]) + ' ' * self.BlanksAfterRoundName + ' ' record = ' ' + coloredText( player0.name, self.colorSetting[player0.name]) + '-' + coloredText( player1.name, self.colorSetting[player1.name]) + ' ' BlanksToAdd = ' ' * (self.namesLen - len(player0.name) - len(player1.name)) record += BlanksToAdd if result == 1: player0.winCount += 1 player1.loseCount += 1 record += '1:0' elif result == 0: player1.winCount += 1 player0.loseCount += 1 record += '0:1' elif result == 0.5: player0.tieCount += 1 player1.tieCount += 1 record += '0:0' record += ' |' self.rows[self.round // 5][self.matchIndex + 1] += record self.matchIndex = (self.matchIndex + 1) % 4
def __call__(self, info, color='WHITE', end=''): colored_text = console.coloredText(info, Front_Colors[color]) print(colored_text, end=end)
def startRR(self): # Get all combinations for the players/AI. nCr = 28 different combinations players = self.desc.players.copy() #all players RR_Disp = display.RR_displayer_L(players) for i in range(7): Matches = [] print('Round' + str(i+1) + ' Schedule:'+ '\n') for k in range(3): player0 = players[k] player1 = players[6-k] matchText = console.coloredText(player0.name, RR_Disp.colorSetting[player0.name]) + ' Vs ' + console.coloredText(player1.name, RR_Disp.colorSetting[player1.name]) Matches.append(MatchRR(player0, player1)) print(matchText) player0 = players[3] player1 = players[7] Matches.append(MatchRR(player0, player1)) matchText = console.coloredText(player0.name,RR_Disp.colorSetting[player0.name]) + ' Vs ' + console.coloredText(player1.name, RR_Disp.colorSetting[player1.name]) print(matchText + '\n\n\n\n') for m in Matches: print('Next Match : ' + m.player0.name + ' VS ' + m.player1.name) result = playGame(m.player0, m.player1) RR_Disp.add_record(result, m.player0, m.player1) if result == 1: print("Player: " + m.player0.name + " WON!") m.player0.score += 1 elif result == 0.5: print("Tie!") m.player0.score += 0.5 m.player1.score += 0.5 else: print("player: " + m.player1.name + " WON!") m.player1.score += 1 Moving = players[0] for j in range(7): posMoveTo = (j+1) % 7 nextToMove = players[posMoveTo] players[posMoveTo]= Moving Moving = nextToMove print('\n\n') RR_Disp.printRecord() print("\n\n") RR_Disp.printRanking() winner = RR_Disp.ranking[0] print(winner.name + " WON with the score of " + str(winner.score) + " points!")