Veja como você pode adicionar níveis ao seu jogo para torná-lo mais envolvente e agradável.

Os níveis são um aspecto essencial da maioria dos videogames. Eles fornecem estrutura, desafio e variedade e podem melhorar significativamente a experiência do jogador. PyGame, uma biblioteca Python popular para desenvolvimento de jogos, fornece vários recursos com os quais você pode criar facilmente vários níveis. Um nível bem projetado pode cativar o jogador, criar uma sensação de progressão e, finalmente, recompensá-lo por seus esforços.

Níveis de planejamento e design

Antes de criar níveis, é essencial planejá-los e desenhá-los. Os níveis de planejamento ajudam a criar um jogo bem estruturado que fornece o nível de dificuldade certo para os jogadores. Para planejar os níveis, você precisa considerar vários fatores, como a mecânica do jogo, a história e a estrutura geral do jogo.

Por exemplo, se você está projetando um jogo de plataforma, precisa pensar no posicionamento das plataformas, nos inimigos e nos obstáculos. Você também precisa considerar o movimento do jogador, como pular e correr, e projetar os níveis de acordo.

O código usado neste artigo está disponível neste Repositório GitHub e é gratuito para você usar sob a licença do MIT.

Criando dois níveis simples

Antes de começar, certifique-se de ter pip instalado em seu sistema. Use este comando para instalar o pygame biblioteca:

pip instalar pygame

Agora, crie dois níveis simples com uma plataforma e um jogador. Aqui está o código para o primeiro nível:

importar pygame

pygame.init()

# Definir constantes
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PLATAFORMA_WIDTH = 100
PLATAFORMA_HEIGHT = 20
PLAYER_WIDTH = 50
PLAYER_HEIGHT = 50
PLATAFORMA_COLOR = (255, 255, 255)
JOGADOR_COLOR = (255, 0, 0)

# Cria a tela
tela = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))

# Crie a plataforma
plataforma = pygame. Rect(350, 500, PLATFORM_WIDTH, PLATFORM_HEIGHT)

# Cria o jogador
jogador = pygame. Rect(375, 450, PLAYER_WIDTH, PLAYER_HEIGHT)

# Repetição do jogo
correndo = Verdadeiro
enquanto correndo:
para evento em pygame.event.get():
se event.type == pygame. DESISTIR:
correndo = Falso
elif event.type == pygame. TECLA PARA BAIXO:
se event.key == pygame. K_ESQUERDA:
jogador.move_ip(-10, 0)
elif event.key == pygame. K_RIGHT:
jogador.move_ip(10, 0)

# Preencha a tela com a cor preta
tela.fill((0, 0, 0))

# Desenhe a plataforma
pygame.draw.rect (tela, PLATFORM_COLOR, plataforma)

# Desenhe o jogador
pygame.draw.rect (tela, PLAYER_COLOR, jogador)

# Atualize a tela
pygame.display.flip()

pygame.quit()

Depois disso, crie o segundo nível simplesmente mudando a plataforma e a posição do jogador. Aqui está o código para o segundo nível:

importar pygame

pygame.init()

# Definir constantes
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PLATAFORMA_WIDTH = 150
PLATAFORMA_HEIGHT = 20
PLAYER_WIDTH = 50
PLAYER_HEIGHT = 50
PLATAFORMA_COLOR = (255, 255, 255)
JOGADOR_COLOR = (255, 0, 0)

# Cria a tela
tela = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))

# Crie a plataforma
plataforma = pygame. Rect(200, 500, PLATFORM_WIDTH, PLATFORM_HEIGHT)

# Cria o jogador
jogador = pygame. Rect(225, 450, PLAYER_WIDTH, PLAYER_HEIGHT)

# Repetição do jogo
correndo = Verdadeiro
enquanto correndo:
para evento em pygame.event.get():
se event.type == pygame. DESISTIR:
correndo = Falso
elif event.type == pygame. TECLA PARA BAIXO:
se event.key == pygame. K_ESQUERDA:
jogador.move_ip(-10, 0)
elif event.key == pygame. K_RIGHT:
jogador.move_ip(10, 0)

# Preencha a tela com a cor preta
tela.fill((0, 0, 0))

# Desenhe a plataforma
pygame.draw.rect (tela, PLATFORM_COLOR, plataforma)

# Desenhe o jogador
pygame.draw.rect (tela, PLAYER_COLOR, jogador)

# Atualize a tela
pygame.display.flip()

pygame.quit()

Este código é semelhante ao primeiro nível, mas a plataforma e as posições do jogador são alteradas.

Conectando diferentes níveis

Para conectar níveis diferentes, você precisa modificar o loop do jogo para alternar entre os níveis quando o jogador conclui um nível. Você pode fazer isso criando uma variável para acompanhar o nível atual e usando instruções condicionais para alternar entre os níveis. Você também pode detectar colisões para verificar se o jogador atingiu o final de um nível.

Aqui está o loop do jogo modificado:

nível_atual = 1

# Desenhe a plataforma e o jogador com base no nível atual
se nível_atual == 1:
pygame.draw.rect (tela, PLATFORM_COLOR, platform1)
pygame.draw.rect (tela, PLAYER_COLOR, jogador)
# Verifique se o jogador chegou ao final do nível
se player.colliderect (plataforma1) == Falso:
nível_atual = 2
elif nível_atual == 2:
pygame.draw.rect (tela, PLATFORM_COLOR, platform2)
pygame.draw.rect (tela, PLAYER_COLOR, jogador)
# Verifique se o jogador chegou ao final do nível
se player.colliderect (plataforma2) == Verdadeiro:
correndo = Falso

Compartilhando os dados do jogo entre os níveis

Você precisa armazenar os dados do jogo para compartilhá-los entre os níveis. Para isso, crie um módulo Python separado para armazenar os dados do jogo e importá-los para cada nível.

Aqui estão os passos:

  • Crie um novo módulo Python chamado game_data.py.
  • Defina uma variável global no game_data.py módulo para armazenar a posição do jogador.
  • Em cada nível, importe o Dados do jogo módulo.
  • Para recuperar a posição do jogador em cada nível, use o game_data.player_pos variável em vez de criar um novo objeto de jogador.
  • Para atualizar a posição do jogador, modifique o valor de game_data.player_pos em cada iteração.

Aqui está o código modificado para compartilhar a posição do jogador entre os níveis.

No game_data.py módulo, adicione o seguinte código:

jogador_pos = (0, 0)

Primeiro nível:

importar pygame
importar Dados do jogo

# Cria o jogador
jogador = pygame. Rect (game_data.player_pos[0], game_data.player_pos[1], PLAYER_WIDTH, PLAYER_HEIGHT)

# Repetição do jogo
correndo = Verdadeiro
enquanto correndo:
# Desenhe o jogador
pygame.draw.rect (tela, PLAYER_COLOR, jogador)

# Atualize a posição do jogador no módulo game_data
game_data.player_pos = (player.x, player.y)

Torne os jogos mais envolventes com níveis

Adicionar níveis diferentes ao seu jogo pode torná-lo mais envolvente e agradável para os jogadores. Ao conectar níveis e compartilhar dados do jogo, você pode criar uma experiência de jogo perfeita e coesa. Isso pode ajudar os jogadores a permanecerem imersos no mundo do jogo e reduzir a probabilidade de desengajamento ou tédio.