#@title Juego de Cara y Cruz sin POO import random random.seed() def coin_flip(): return random.choice(['cara', 'cruz']) def play_game(num_players, num_rounds): scores = [0] * num_players # inicializamos el vector de puntuaciones for round in range(num_rounds): # para cada ronda print(f"\nRonda {round + 1}:") # print ronda for player in range(num_players): # para cada nº de jugador result = coin_flip() # lanzamos la moneda if result == 'cara': # si es cara scores[player] += 1 # ganamos un punto print(f"Jugador {player + 1}: {result}") # print jugador y resultado print("\nResultados finales:") for player in range(num_players): # para cada nº de jugador print(f"Jugador {player + 1}: {scores[player]} puntos") # print jugador+puntos # vector de ganadores winners = [str(i + 1) for i, score in enumerate(scores) if score == max(scores)] max_score = max(scores) if len(winners) == 1: print(f"\nEl jugador {winners[0]} gana con {max_score} puntos!") else: print(f"\nEmpate entre los jugadores {', '.join(winners[:-1])} y {winners[-1]} a {max_score} {'punto' if max_score==1 else 'puntos'}!") if __name__ == "__main__": # Configuración del juego num_players = int(input("Ingrese el número de jugadores: ")) num_rounds = int(input("Ingrese el número de rondas: ")) # Jugar el juego play_game(num_players, num_rounds) #@title Juego de Cara y Cruz con POO import random class Player: def __init__(self, id): self.id = id # id: identificador númerico correlativo automático self.puntos = 0 # inicializamos a cero los puntos del jugador def __str__(self): return f"~ Jugador {self.id}." def lanzar_moneda(self): return random.choice(['cara', 'cruz']) def incrementar_puntos(self): self.puntos += 1 class Game: def __init__(self, num_jugadores, num_rondas): self.jugadores = [Player(i+1) for i in range(num_jugadores)] self.num_rondas = num_rondas print("\nLista de jugadores") for j in self.jugadores: print(j) def jugar(self): for ronda in range(self.num_rondas): print(f"\nRonda {ronda + 1}:") for jugador in self.jugadores: resultado = jugador.lanzar_moneda() if resultado == 'cara': jugador.incrementar_puntos() print(f"Jugador {jugador.id}: {resultado}") self.mostrar_resultados() def mostrar_resultados(self): print("\nResultados finales:") for jugador in self.jugadores: print(f"» Jugador {jugador.id}: {jugador.puntos} puntos") max_puntos = max(jugador.puntos for jugador in self.jugadores) ganadores = [str(j.id) for j in self.jugadores if j.puntos == max_puntos] if len(ganadores) == 1: print(f"\nEl jugador {', '.join(ganadores)} gana!") else: print(f"\nHay un empate entre los jugadores {', '.join(ganadores)}!") if __name__ == "__main__": # Configuración del juego num_jugadores = int(input("Ingrese el número de jugadores: ")) num_rondas = int(input("Ingrese el número de rondas: ")) # Jugar el juego game = Game(num_jugadores, num_rondas) game.jugar() import random class Player: def __init__(self, name): self.name = name self.score = 0 def __str__(self): return self.name def flip_coin(self): result = random.choice(["heads", "tails"]) if result == "heads": # solo se obtiene punto si sale cara self.score += 1 return True return False class Game: def __init__(self, num_players, num_rounds): self.array_players = [] # array de objetos jugador self.num_rounds = num_rounds for i in range(num_players): name = chr(ord('A') + i) # uppercase letters of the alphabet player = Player(name) # instanciamos un jugador self.array_players.append(player) def show_players(self): # el array_players pasa a ser una lista de letras name_players = [str(player) for player in self.array_players] return ", ".join(name_players) def play(self): print() for round in range(self.num_rounds): print(f"Round {round+1}, points for players: ", end="") for player in self.array_players: # para cada jugador en el array successful_player = player.flip_coin() # si es cara da True if successful_player: # si salió cara print(player, end=" ") # se imprime la letra # sin el método __str__ habría que poner player.name print() self.show_ranking() # después de jugar todas las rondas: mostrar ranking def show_ranking(self): # ordenamos de mayor a menor puntuación el array de jugadores self.array_players.sort(key=lambda player: player.score, reverse=True) max_score = self.array_players[0].score print("\n===== RANKING =====") for player in self.array_players: if player.score == max_score: print(f"{player.name}: {player.score} points (winner)") else: print(f"{player.name}: {player.score} points") if __name__ == "__main__": num_players = int(input("Enter the number of players (2-26): ")) num_rounds = int(input("Enter the number of rounds: ")) game = Game(num_players, num_rounds) print(f'Name of players: {game.show_players()}') game.play()