Jogue um jogo de críquete de mão usando Python

Jogue um jogo de críquete de mão usando Python

Com cerca de 2,5 bilhões de fãs, o críquete é um dos maiores e mais populares esportes do mundo. Só na Índia, o críquete vale incríveis 5,3 bilhões de dólares. Sachin Tendulkar, Donald Bradman, Brian Lara e MS Dhoni são apenas algumas lendas cujos nomes vivem nos corações de milhões.

Não é de surpreender que o críquete tenha encontrado seu caminho para a realidade virtual, videogames e outras variações, como livro e críquete manual. Leve este jogo um passo adiante criando um jogo de críquete manual usando Python.

O que é o críquete de mão?

Hand cricket é um jogo em que dois jogadores competem entre si usando os dedos. Em cada turno, ambos os jogadores exibem um número usando os dedos ao mesmo tempo. Se as pontuações forem iguais, o batedor está fora, caso contrário, eles ganham seu número como corridas. Por fim, o jogador que marcar mais pontos vence o jogo.

Você pode construir este jogo e jogá-lo contra um computador também. Em vez de estender os dedos para representar a partitura, você a insere no programa. Python é uma das linguagens mais fáceis e convenientes de usar. Se você não tem experiência anterior no uso do Python, pode se familiarizar com qualquer um desses cursos on-line gratuitos de Python para iniciantes.

Depois de aprender os fundamentos, é uma boa ideia criar miniprojetos e jogos para solidificar seu aprendizado. Você pode começar construindo um relógio digital, rolando dados, questionário ou um contador de palavras. Você também pode se inspirar nessas ideias de projetos Python para iniciantes.

Como construir um jogo de críquete manual usando Python

Importe a biblioteca aleatória, necessária para o lançamento inicial e as escolhas do computador. Defina uma função chamada input_num que aceite dois argumentos, min e max , respectivamente, para validar a entrada do usuário. Usando a função input() , armazene o número que o usuário insere na variável num e converta-o do tipo String padrão para Integer usando int() .

Se o número inserido pelo usuário for maior que o limite máximo ou menor que o limite mínimo, peça ao usuário para inserir uma opção válida chamando a função recursivamente. Se o número estiver dentro do intervalo, retorne-o.

import random

def input_num(min, max):
    num = int(input())


    if num > max or num < min:
        print("Enter valid choice")
        return input_num(min, max)
    else:
        return num

Defina uma função innings que aceite o batedor atual e as corridas para perseguir como argumentos de entrada. Peça ao usuário para inserir números no intervalo de um a seis. De acordo com as regras do críquete de mão, se tanto o usuário quanto o computador escolherem o mesmo número, o batedor atual está fora.

Inicialize uma variável total para armazenar o total de corridas marcadas por um batedor e defina-a como zero. Comece um loop while infinito e chame a função input_num() para armazenar e validar a entrada do usuário. Use a função randint() do módulo aleatório para escolher um número aleatório entre um e seis para o computador.

Exiba as escolhas de ambos os jogadores e verifique se são iguais. Se estiverem, mostre que o batedor está fora e retorne o total de corridas que ele marcou naquela entrada.

Caso contrário, verifique quem está rebatendo e adicione o valor apropriado à pontuação total, pnum ou cnum . Exibe a pontuação atual do batedor.

No caso do segundo turno, você deseja verificar se o batedor já superou o placar do oponente. Para isso, verifique se o valor to_chase não está vazio e se a pontuação do batedor é maior. Em caso afirmativo, devolva a pontuação vencedora.

def innings(batsman, to_chase):
    print("Enter numbers between 1 and 6. If you both choose the same number then " + batsman + "is out")
    total = 0

    while True:
        pnum = input_num(1, 6)
        cnum = random.randint(1, 6)

        print("User chose", pnum)
        print("Computer chose", cnum)

        if pnum == cnum:
            print(batsman + "is out")
            return total
        else:
            total = total + (pnum if batsman == "User" else cnum)
            print(batsman + "score is", total)
            if to_chase is not None and total > to_chase:
                return total

Exiba a mensagem para lançamento e valide a escolha do usuário usando a função input_num() . Jogue a moeda e armazene o resultado na variável coin . Inicialize o valor padrão de player_bowls como false. Se o lançamento da moeda corresponder à escolha do usuário, o usuário ganha o sorteio e escolhe entre rebatidas e boliche.

Pegue a escolha do usuário e verifique se ele inseriu alguma. Se sim, avalie a expressão como verdadeira e armazene na variável player_bowls . Exibir a escolha do usuário. Por outro lado, se o computador ganhou o sorteio, execute randint() e avalie o valor apropriado para player_bowls .

Exiba a escolha do computador e comece as entradas.

print("Time for toss, Enter 0 for Heads and 1 for Tails")
choice = input_num(0, 1)
coin = random.randint(0, 1)
player_bowls = False

if coin == choice:
    print("You have won the toss")
    print("Select 0 to bat, 1 to bowl ")
    player_bowls = input_num(0, 1) == 1

    if player_bowls:
        print("You chose to bowl")
    else:
        print("You chose to bat")
else:
    print("Computer won the toss")
    player_bowls = random.randint(0, 1) == 1

    if player_bowls:
        print("Computer chose to bat")
    else:
        print("Computer chose to bowl")

Se player_bowls for verdadeiro, o computador rebate primeiro e vice-versa. Calcule as corridas marcadas em um turno usando a função definida anteriormente. A função requer o nome do batedor atual e as corridas para perseguir. Como o primeiro batedor define a pontuação, torne-a um parâmetro opcional e passe None . Para o segundo turno, passe a pontuação do batedor que definiu o alvo.

if player_bowls:
    comp_score = innings("Computer", None)
    user_score = innings("User", comp_score)
else:
    user_score = innings("User", None)
    comp_score = innings("Computer", user_score)

Se o computador pontuar menos que o usuário, o usuário ganha e vice-versa. Caso as pontuações sejam iguais, exibe um empate.

if comp_score < user_score:
    print("User wins")
elif user_score < comp_score:
    print("Computer wins")
else:
    print("Match draw")

Junte todo o código e prepare-se para jogar críquete a qualquer hora, em qualquer lugar, na ponta dos dedos.

A saída do Hand Cricket usando Python

Você pode ver a saída de um jogo de críquete usando Python da seguinte forma:

Saída do Hand Cricket usando Python

Quando você executa o programa, ele pede que você escolha uma opção para o sorteio e atribui o resultado apropriado. Se você vencer, poderá decidir se quer rebater ou lançar, caso contrário, o computador tomará uma decisão. Cada entrada continua até que os números coincidam e um seja eliminado. No final, o computador compara a pontuação final e declara o vencedor.

Jogos baseados em terminal em Python

Construir jogos é uma maneira incrível de aprender Python e é muito divertido. Você não precisa ser um especialista para começar a codificar e experimentar em Python. Com os fundamentos certos, você pode criar alguns jogos de terminal incríveis.

Comece construindo o Magic 8 Ball, Hangman, Rock Paper Scissors, Mad Libs Generator e o Number Guessing Game. Conforme você avança, explore a biblioteca PyGame para construir seus próprios videogames gráficos.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *