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.