Jogo do Coelho: Tutorial Passo a Passo em Python

Introdução ao Jogo do Coelho

Neste tutorial, vamos criar um jogo simples, mas divertido, chamado “Jogo do Coelho” usando Python. O jogo consiste em um coelho que se move em um tabuleiro e o objetivo é coletar cenouras enquanto evita armadilhas. Este tutorial é perfeito para iniciantes em programação e para aqueles que desejam aprender os fundamentos do desenvolvimento de jogos em Python.

Pré-requisitos

Antes de começar, você precisa ter o seguinte:

  • Python instalado no seu computador (versão 3.6 ou superior recomendada).
  • Um editor de texto ou IDE (Integrated Development Environment) para escrever o código (VS Code, PyCharm, Sublime Text são boas opções).
  • Conhecimento básico de Python (variáveis, loops, condicionais, funções).

Configurando o Ambiente

Certifique-se de ter o Python instalado corretamente. Você pode verificar abrindo o terminal ou prompt de comando e digitando python --version ou python3 --version. Se o Python estiver instalado, você verá a versão instalada.

Crie um novo diretório para o seu projeto. Por exemplo, você pode criar uma pasta chamada jogo_coelho. Dentro dessa pasta, crie um arquivo chamado jogo_coelho.py. Este será o arquivo principal do nosso jogo.

Passo 1: Criando o Tabuleiro

Vamos começar criando o tabuleiro do jogo. O tabuleiro será representado por uma lista de listas, onde cada elemento representa uma célula do tabuleiro. Usaremos caracteres para representar diferentes elementos do jogo:

  • 'C': Cenoura
  • 'T': Armadilha
  • ' ': Espaço vazio
  • 'R': Coelho

Aqui está o código para criar o tabuleiro:


def criar_tabuleiro(linhas, colunas):
tabuleiro = [[' ' for _ in range(colunas)] for _ in range(linhas)]
return tabuleiro
linhas = 5
colunas = 5
tabuleiro = criar_tabuleiro(linhas, colunas)

Este código define uma função criar_tabuleiro que recebe o número de linhas e colunas como argumentos e retorna uma lista de listas representando o tabuleiro preenchido com espaços vazios.

Passo 2: Posicionando o Coelho, Cenouras e Armadilhas

Agora, vamos posicionar o coelho, as cenouras e as armadilhas no tabuleiro. Para isso, vamos criar funções para posicionar cada elemento de forma aleatória:


import random
def posicionar_coelho(tabuleiro, linhas, colunas):
linha = random.randint(0, linhas - 1)
coluna = random.randint(0, colunas - 1)
tabuleiro[linha][coluna] = 'R'
return linha, coluna
def posicionar_cenouras(tabuleiro, linhas, colunas, quantidade):
for _ in range(quantidade):
linha = random.randint(0, linhas - 1)
coluna = random.randint(0, colunas - 1)
while tabuleiro[linha][coluna] != ' ':
linha = random.randint(0, linhas - 1)
coluna = random.randint(0, colunas - 1)
tabuleiro[linha][coluna] = 'C'
def posicionar_armadilhas(tabuleiro, linhas, colunas, quantidade):
for _ in range(quantidade):
linha = random.randint(0, linhas - 1)
coluna = random.randint(0, colunas - 1)
while tabuleiro[linha][coluna] != ' ':
linha = random.randint(0, linhas - 1)
coluna = random.randint(0, colunas - 1)
tabuleiro[linha][coluna] = 'T'
# Exemplo de uso:
coelho_linha, coelho_coluna = posicionar_coelho(tabuleiro, linhas, colunas)
posicionar_cenouras(tabuleiro, linhas, colunas, 3)
posicionar_armadilhas(tabuleiro, linhas, colunas, 2)

Estas funções usam a biblioteca random para gerar posições aleatórias para o coelho, as cenouras e as armadilhas. A função posicionar_coelho retorna a posição inicial do coelho para que possamos rastreá-la posteriormente.

Passo 3: Imprimindo o Tabuleiro

Para visualizar o jogo, precisamos de uma função para imprimir o tabuleiro no console. Aqui está o código:


def imprimir_tabuleiro(tabuleiro):
for linha in tabuleiro:
print(" ".join(linha))
# Exemplo de uso:
imprimir_tabuleiro(tabuleiro)

Esta função itera sobre as linhas do tabuleiro e imprime cada linha como uma string separada por espaços.

Passo 4: Movimentando o Coelho

Agora, vamos implementar a lógica para movimentar o coelho. O coelho pode se mover para cima, para baixo, para a esquerda ou para a direita. Vamos criar uma função para lidar com a movimentação:


def mover_coelho(tabuleiro, coelho_linha, coelho_coluna, movimento, linhas, colunas):
novo_coelho_linha = coelho_linha
novo_coelho_coluna = coelho_coluna
if movimento == 'cima':
novo_coelho_linha -= 1
elif movimento == 'baixo':
novo_coelho_linha += 1
elif movimento == 'esquerda':
novo_coelho_coluna -= 1
elif movimento == 'direita':
novo_coelho_coluna += 1
else:
print("Movimento inválido!")
return coelho_linha, coelho_coluna
if novo_coelho_linha < 0 or novo_coelho_linha >= linhas or novo_coelho_coluna < 0 or novo_coelho_coluna >= colunas:
print("Você não pode sair do tabuleiro!")
return coelho_linha, coelho_coluna
tabuleiro[coelho_linha][coelho_coluna] = ' '
coelho_linha = novo_coelho_linha
coelho_coluna = novo_coelho_coluna
tabuleiro[coelho_linha][coelho_coluna] = 'R'
return coelho_linha, coelho_coluna

Esta função recebe o tabuleiro, a posição atual do coelho, o movimento desejado e as dimensões do tabuleiro como argumentos. Ela atualiza a posição do coelho no tabuleiro se o movimento for válido e dentro dos limites do tabuleiro.

Passo 5: Lógica do Jogo

Agora, vamos implementar a lógica principal do jogo. O jogo continua até que o coelho encontre uma armadilha ou colete todas as cenouras. Vamos criar uma função para lidar com isso:


def jogar():
linhas = 5
colunas = 5
tabuleiro = criar_tabuleiro(linhas, colunas)
coelho_linha, coelho_coluna = posicionar_coelho(tabuleiro, linhas, colunas)
posicionar_cenouras(tabuleiro, linhas, colunas, 3)
posicionar_armadilhas(tabuleiro, linhas, colunas, 2)
cenouras_coletadas = 0
total_cenouras = 3
while True:
imprimir_tabuleiro(tabuleiro)
print(f"Cenouras coletadas: {cenouras_coletadas}/{total_cenouras}")
movimento = input("Digite o movimento (cima, baixo, esquerda, direita): ").lower()
coelho_linha, coelho_coluna = mover_coelho(tabuleiro, coelho_linha, coelho_coluna, movimento, linhas, colunas)
if tabuleiro[coelho_linha][coelho_coluna] == 'C':
cenouras_coletadas += 1
tabuleiro[coelho_linha][coelho_coluna] = 'R'
if cenouras_coletadas == total_cenouras:
print("Parabéns! Você coletou todas as cenouras!")
break
elif tabuleiro[coelho_linha][coelho_coluna] == 'T':
print("Você encontrou uma armadilha! Fim de jogo!")
break
# Iniciar o jogo:
jogar()

Esta função inicializa o tabuleiro, posiciona os elementos do jogo e entra em um loop. Dentro do loop, ela imprime o tabuleiro, pede ao jogador para inserir um movimento e atualiza a posição do coelho. Se o coelho encontrar uma cenoura, o contador de cenouras coletadas é incrementado. Se o coelho encontrar uma armadilha ou coletar todas as cenouras, o jogo termina.

Código Completo

Aqui está o código completo do jogo:


import random
def criar_tabuleiro(linhas, colunas):
tabuleiro = [[' ' for _ in range(colunas)] for _ in range(linhas)]
return tabuleiro
def posicionar_coelho(tabuleiro, linhas, colunas):
linha = random.randint(0, linhas - 1)
coluna = random.randint(0, colunas - 1)
tabuleiro[linha][coluna] = 'R'
return linha, coluna
def posicionar_cenouras(tabuleiro, linhas, colunas, quantidade):
for _ in range(quantidade):
linha = random.randint(0, linhas - 1)
coluna = random.randint(0, colunas - 1)
while tabuleiro[linha][coluna] != ' ':
linha = random.randint(0, linhas - 1)
coluna = random.randint(0, colunas - 1)
tabuleiro[linha][coluna] = 'C'
def posicionar_armadilhas(tabuleiro, linhas, colunas, quantidade):
for _ in range(quantidade):
linha = random.randint(0, linhas - 1)
coluna = random.randint(0, colunas - 1)
while tabuleiro[linha][coluna] != ' ':
linha = random.randint(0, linhas - 1)
coluna = random.randint(0, colunas - 1)
tabuleiro[linha][coluna] = 'T'
def imprimir_tabuleiro(tabuleiro):
for linha in tabuleiro:
print(" ".join(linha))
def mover_coelho(tabuleiro, coelho_linha, coelho_coluna, movimento, linhas, colunas):
novo_coelho_linha = coelho_linha
novo_coelho_coluna = coelho_coluna
if movimento == 'cima':
novo_coelho_linha -= 1
elif movimento == 'baixo':
novo_coelho_linha += 1
elif movimento == 'esquerda':
novo_coelho_coluna -= 1
elif movimento == 'direita':
novo_coelho_coluna += 1
else:
print("Movimento inválido!")
return coelho_linha, coelho_coluna
if novo_coelho_linha < 0 or novo_coelho_linha >= linhas or novo_coelho_coluna < 0 or novo_coelho_coluna >= colunas:
print("Você não pode sair do tabuleiro!")
return coelho_linha, coelho_coluna
tabuleiro[coelho_linha][coelho_coluna] = ' '
coelho_linha = novo_coelho_linha
coelho_coluna = novo_coelho_coluna
tabuleiro[coelho_linha][coelho_coluna] = 'R'
return coelho_linha, coelho_coluna
def jogar():
linhas = 5
colunas = 5
tabuleiro = criar_tabuleiro(linhas, colunas)
coelho_linha, coelho_coluna = posicionar_coelho(tabuleiro, linhas, colunas)
posicionar_cenouras(tabuleiro, linhas, colunas, 3)
posicionar_armadilhas(tabuleiro, linhas, colunas, 2)
cenouras_coletadas = 0
total_cenouras = 3
while True:
imprimir_tabuleiro(tabuleiro)
print(f"Cenouras coletadas: {cenouras_coletadas}/{total_cenouras}")
movimento = input("Digite o movimento (cima, baixo, esquerda, direita): ").lower()
coelho_linha, coelho_coluna = mover_coelho(tabuleiro, coelho_linha, coelho_coluna, movimento, linhas, colunas)
if tabuleiro[coelho_linha][coelho_coluna] == 'C':
cenouras_coletadas += 1
tabuleiro[coelho_linha][coelho_coluna] = 'R'
if cenouras_coletadas == total_cenouras:
print("Parabéns! Você coletou todas as cenouras!")
break
elif tabuleiro[coelho_linha][coelho_coluna] == 'T':
print("Você encontrou uma armadilha! Fim de jogo!")
break
# Iniciar o jogo:
jogar()

Conclusão

Parabéns! Você completou o tutorial do Jogo do Coelho em Python. Este é um jogo simples, mas eficaz, para aprender os fundamentos da programação de jogos. Você pode expandir este jogo adicionando mais funcionalidades, como pontuação, diferentes tipos de armadilhas, níveis de dificuldade e até mesmo uma interface gráfica.

Perguntas Frequentes (FAQs)

Como posso mudar o tamanho do tabuleiro?

Você pode mudar o tamanho do tabuleiro alterando as variáveis linhas e colunas na função jogar(). Por exemplo, para um tabuleiro de 10×10, você pode definir linhas = 10 e colunas = 10.

Como posso adicionar mais cenouras e armadilhas?

Você pode adicionar mais cenouras e armadilhas alterando os argumentos da função posicionar_cenouras() e posicionar_armadilhas() na função jogar(). Por exemplo, para adicionar 5 cenouras e 3 armadilhas, você pode definir posicionar_cenouras(tabuleiro, linhas, colunas, 5) e posicionar_armadilhas(tabuleiro, linhas, colunas, 3).

O que acontece se eu digitar um movimento inválido?

Se você digitar um movimento inválido (algo diferente de “cima”, “baixo”, “esquerda” ou “direita”), o jogo exibirá a mensagem “Movimento inválido!” e pedirá que você insira um novo movimento.

Como posso adicionar uma pontuação ao jogo?

Você pode adicionar uma pontuação ao jogo criando uma variável para armazenar a pontuação e incrementando-a cada vez que o coelho coletar uma cenoura. Você também pode diminuir a pontuação se o coelho fizer um movimento inválido ou tentar sair do tabuleiro. Imprima a pontuação no final do jogo.

Como posso adicionar uma interface gráfica ao jogo?

Para adicionar uma interface gráfica ao jogo, você pode usar bibliotecas como Pygame, Tkinter ou Kivy. Estas bibliotecas permitem criar janelas, desenhar gráficos e lidar com eventos do usuário. Isso exigirá um conhecimento mais avançado de programação e da biblioteca escolhida.

Deixe um comentário