Caso ainda não tenha feito o Desafio 3 – Clique Aqui
Descrição do Desafio:
Você foi contratado para criar um mini-jogo de baralho em python onde:
- O baralho pode conter 1 ou mais cópias.
- O jogo tem um número definido de coringas, que são escolhidos aleatoriamente entre as cartas comuns.
- O baralho é embaralhado.
- As cartas são distribuídas para 2 ou mais jogadores (cada um recebe 5 cartas).
- Após a distribuição, você deve mostrar:
- As cartas de cada jogador.
- Quais cartas são coringas.
- Quais jogadores possuem ao menos um coringa na mão (marcando-os como “sortudos”).
Regras:
- Utilize as funções:
gerar_baralho
mostrar_baralho_e_coringa
dar_cartas
mostrar_jogadores
- Import:
- naipes = {‘♥’: ‘Copas’, ‘♦’: ‘Ouros’, ‘♠’: ‘Espadas’, ‘♣’: ‘Paus’}
- valores = [‘A’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ’10’, ‘J’, ‘Q’, ‘K’]
Exemplo de execução:
Baralho definido:
... (cartas embaralhadas)
Coringa(s) definido(s):
🃏 2♠
🃏 K♦
Jogadores definidos:
Jogador 1: 9♦ Q♣ 2♠ 3♠ 6♥
Jogador 2: A♠ K♦ 7♣ 5♠ 10♥
Resultado:
import random
naipes = {'♥': 'Copas', '♦': 'Ouros', '♠': 'Espadas', '♣': 'Paus'}
valores = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
# Função para gerar o baralho com a quantidade de cópias e coringas
def gerar_baralho(copias, qtd_coringas, embaralhado=True):
cartas = [] # Lista que armazenará todas as cartas geradas
for _ in range(copias):
for simbolo in naipes:
for valor in valores:
carta = valor + simbolo
cartas.append(carta)
# Seleciona aleatoriamente as cartas que serão coringas
if qtd_coringas > 0:
coringas = random.sample(cartas, k=qtd_coringas)
else:
coringas = []
# Embaralha o baralho, se solicitado
if embaralhado:
random.shuffle(cartas)
return cartas, coringas
# Função para exibir o baralho e os coringas
def mostrar_baralho_coringa(baralho, coringas):
print("\nBaralho definido:")
print(" ".join(baralho))
if coringas:
print("\nCoringa(s) definido(s):")
for c in coringas:
print("🃏", c)
# Função para distribuir cartas entre os jogadores
def dar_cartas(baralho, n_jogadores=2, n_cartas=5):
jogadores = {}
for i in range(n_jogadores):
mao = []
while len(mao) < n_cartas:
carta = baralho.pop(0)
mao.append(carta)
nome_jogador = f'Jogador {i+1}'
jogadores[nome_jogador] = mao
return jogadores
# Função para exibir as cartas de cada jogador
def mostrar_jogadores(jogadores):
print("\nJogadores definidos:")
for nome, cartas in jogadores.items():
cartas_str = " ".join(cartas)
print(f"{nome}: {cartas_str}")
# --- Início do programa ---
baralhos = int(input("Quantos baralhos? "))
qtd_coringas = int(input("Quantos coringas? "))
embaralhar_input = input("Deseja embaralhar o baralho? (s/n): ").strip().lower()
embaralhar = embaralhar_input == 's'
baralho, coringas = gerar_baralho(baralhos, qtd_coringas, embaralhado=embaralhar)
mostrar_baralho_coringa(baralho, coringas)
jogadores = dar_cartas(baralho)
mostrar_jogadores(jogadores)