Python Desafio 4: Mini-Jogo de Baralho

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:

  1. O baralho pode conter 1 ou mais cópias.
  2. O jogo tem um número definido de coringas, que são escolhidos aleatoriamente entre as cartas comuns.
  3. O baralho é embaralhado.
  4. As cartas são distribuídas para 2 ou mais jogadores (cada um recebe 5 cartas).
  5. 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)

Deixe um comentário