Leitores como você ajudam a apoiar o MUO. Quando você faz uma compra usando links em nosso site, podemos ganhar uma comissão de afiliado. Consulte Mais informação.

PyGame é uma biblioteca popular para criar projetos com Python e fornece um poderoso conjunto de ferramentas para desenvolvimento de jogos. Neste artigo, você aprenderá como criar um menu iniciar e uma tela de game over para um jogo simples usando o PyGame.

Criando um jogo simples

Antes de criar o menu Iniciar e a tela de game over, vamos primeiro criar um jogo simples. Neste jogo você controlará um personagem com as setas do teclado e tentará desviar de obstáculos. Para manter as coisas simples, tente não usar nenhuma imagem.

Para começar, você precisa importar os módulos necessários. Você estará usando o pygame módulo para acessar as funções do PyGame. Para instalar o módulo, você pode use o gerenciador de pacotes pip:

pip instalar pygame

Agora que nosso módulo está pronto para uso, vamos criar um jogo simples com um jogador que pode se mover para a esquerda ou para a direita usando as setas do teclado e um obstáculo. Se você colidir com o obstáculo, o jogo terminará. Aqui está o código para o mesmo:

importar pygame
pygame.iniciar()

largura_tela = 750
altura_tela = 450
tela = pygame.display.set_mode((screen_width, screen_height))

obstáculo_x = 400
obstáculo_y = 400
largura_obstáculo = 40
altura_obstáculo = 40
jogador_x = 200
jogador_y = 400
largura_do_jogador = 20
altura_jogador = 20

enquantoVerdadeiro:

paraeventoempygame.evento.pegar():

if event.type == pygame. DESISTIR:
pygame.desistir()
desistir()


keys = pygame.key.get_pressed()
sechaves[pygame. K_LEFT]:
jogador_x -= 5
sechaves[pygame. K_RIGHT]:
jogador_x += 5


se player_x + player_width > obstáculo_x e player_x < obstáculo_x + largura_obstáculoejogador_y + player_height > obstáculo_y e jogador_y < obstáculo_y + obstáculo_height:
game_over = Verdadeiro


tela.preencher((0, 0, 0))
pygame.empate.rect(tela, (255, 0, 0), (obstáculo_x, obstáculo_y, largura_obstáculo, altura_obstáculo))
pygame.empate.rect(tela, (0, 255, 0), (jogador_x, jogador_y, player_width, player_height))
pygame.mostrar.atualizar()

No código acima, você configura a janela do jogo e declara as variáveis ​​do jogo. Você também tratou a entrada do usuário e desenhou os elementos na tela.

Criando o Menu Iniciar

Agora que você tem um jogo básico, vamos criar um menu Iniciar. Para fazer isso, você precisará declarar uma variável global para o estado do jogo. Essa variável acompanhará o estado atual do jogo, como se o menu Iniciar está ativo ou se o jogo está em execução. Você precisa adicionar esta variável no início do código do jogo:

game_state = "menu Iniciar"

Em seguida, você adicionará uma função para desenhar o menu Iniciar na tela. Você pode usar as funções do PyGame para desenhar o texto, botões e outros elementos na tela.

defdraw_start_menu():
tela.preencher((0, 0, 0))
fonte = pygame.font. SysFont('arial', 40)
titulo = fonte.render('Meu jogo', Verdadeiro, (255, 255, 255))
start_button = fonte.render('Começar', Verdadeiro, (255, 255, 255))
screen.blit (title, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/2))
screen.blit (start_button, (screen_width/2 - start_button.get_width()/2, screen_height/2 + start_button.get_height()/2))
pygame.mostrar.atualizar()

Você pode então adicionar o draw_start_menu() função para o loop principal do jogo.

enquantoVerdadeiro: 

paraeventoempygame.evento.pegar():
if event.type == pygame. DESISTIR:
pygame.desistir()
desistir()

se estado_jogo == "menu Iniciar":
draw_start_menu()

se estado_jogo == "jogo":
keys = pygame.key.get_pressed()
# restante do código

Agora, o menu Iniciar será desenhado na tela. A última etapa é lidar com a entrada do usuário. Você pode adicione uma declaração if ao loop principal do jogo para verificar se o usuário pressionou o botão Iniciar.

se estado_jogo == "menu Iniciar":
keys = pygame.key.get_pressed()
sechaves[pygame. K_SPACE]:
jogador_x = 200
jogador_y = 400
game_state = "jogo"
game_over = Falso

Com este código, o jogo será iniciado quando o usuário pressionar o botão Iniciar.

Implementando a tela Game Over

Agora que você tem o menu Iniciar, vamos criar a tela de game over. Esta função deve exibir a pontuação final e uma mensagem de fim de jogo.

defdraw_game_over_screen():
tela.preencher((0, 0, 0))
fonte = pygame.font. SysFont('arial', 40)
titulo = fonte.render('Game Over', Verdadeiro, (255, 255, 255))
restart_button = fonte.render('R - Reiniciar', Verdadeiro, (255, 255, 255))
quit_button = fonte.render('Q - Desistir', Verdadeiro, (255, 255, 255))
screen.blit (title, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/3))
screen.blit (restart_button, (screen_width/2 - restart_button.get_width()/2, screen_height/1.9 + restart_button.get_height()))
screen.blit (quit_button, (screen_width/2 - quit_button.get_width()/2, screen_height/2 + quit_button.get_height()/2))
pygame.mostrar.atualizar()

Você pode então adicionar esta função ao loop principal do jogo.

se estado_jogo == "menu Iniciar":
draw_start_menu()
se estado_jogo == "game Over":
draw_game_over_screen()

se estado_jogo == "jogo":
keys = pygame.key.get_pressed()
sechaves[pygame. K_LEFT]:
jogador_x -= 5
sechaves[pygame. K_RIGHT]:
jogador_x += 5

se player_x + player_width > obstáculo_x e player_x < obstáculo_x + largura_obstáculoejogador_y + player_height > obstáculo_y e jogador_y < obstáculo_y + obstáculo_height:
game_over = Verdadeiro
game_state = "game Over"

Por fim, você precisa lidar com a entrada do usuário para lidar com a escolha do usuário. Você pode adicionar uma instrução if ao loop principal do jogo para verificar se o usuário pressionou o botão reiniciar ou sair.

se estado_jogo == "menu Iniciar":
keys = pygame.key.get_pressed()
sechaves[pygame. K_SPACE]:
game_state = "jogo"
jogador_x = 200
jogador_y = 400
game_state = "jogo"
game_over = Falso

se estado_jogo == "game Over":
keys = pygame.key.get_pressed()
sechaves[pygame. K_r]:
game_state = "menu Iniciar"
sechaves[pygame. K_q]:
pygame.desistir()
desistir()

Com esse código, o jogo será reiniciado quando o usuário pressionar o botão 'R' e será encerrado quando o usuário pressionar o botão 'Q' no teclado.

Abaixo está o código completo:

importar pygame

pygame.iniciar()
largura_tela = 750
altura_tela = 450
tela = pygame.display.set_mode((screen_width, screen_height))
obstáculo_x = 400
obstáculo_y = 400
largura_obstáculo = 40
altura_obstáculo = 40
jogador_x = 200
jogador_y = 400
largura_do_jogador = 20
altura_jogador = 20
game_state = "menu Iniciar"

defdraw_start_menu():
tela.preencher((0, 0, 0))
fonte = pygame.font. SysFont('arial', 40)
titulo = fonte.render('Meu jogo', Verdadeiro, (255, 255, 255))
start_button = fonte.render('Começar', Verdadeiro, (255, 255, 255))
screen.blit (title, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/2))
screen.blit (start_button, (screen_width/2 - start_button.get_width()/2, screen_height/2 + start_button.get_height()/2))
pygame.mostrar.atualizar()

defdraw_game_over_screen():
tela.preencher((0, 0, 0))
fonte = pygame.font. SysFont('arial', 40)
titulo = fonte.render('Game Over', Verdadeiro, (255, 255, 255))
restart_button = fonte.render('R - Reiniciar', Verdadeiro, (255, 255, 255))
quit_button = fonte.render('Q - Desistir', Verdadeiro, (255, 255, 255))
screen.blit (title, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/3))
screen.blit (restart_button, (screen_width/2 - restart_button.get_width()/2, screen_height/1.9 + restart_button.get_height()))
screen.blit (quit_button, (screen_width/2 - quit_button.get_width()/2, screen_height/2 + quit_button.get_height()/2))
pygame.mostrar.atualizar()

enquantoVerdadeiro:
paraeventoempygame.evento.pegar():
if event.type == pygame. DESISTIR:
pygame.desistir()
desistir()
se estado_jogo == "menu Iniciar":
draw_start_menu()
keys = pygame.key.get_pressed()
sechaves[pygame. K_SPACE]:
jogador_x = 200
jogador_y = 400
game_state = "jogo"
game_over = Falso
elif estado_jogo == "game Over":
draw_game_over_screen()
keys = pygame.key.get_pressed()
sechaves[pygame. K_r]:
game_state = "menu Iniciar"
sechaves[pygame. K_q]:
pygame.desistir()
desistir()

elif estado_jogo == "jogo":
keys = pygame.key.get_pressed()
sechaves[pygame. K_LEFT]:
jogador_x -= 5
sechaves[pygame. K_RIGHT]:
jogador_x += 5

se player_x + player_width > obstáculo_x e player_x < obstáculo_x + largura_obstáculoejogador_y + player_height > obstáculo_y e jogador_y < obstáculo_y + obstáculo_height:
game_over = Verdadeiro
game_state = "game Over"

tela.preencher((0, 0, 0))
pygame.empate.rect(tela, (255, 0, 0), (obstáculo_x, obstáculo_y, largura_obstáculo, altura_obstáculo))
pygame.empate.rect(tela, (0, 255, 0), (jogador_x, jogador_y, player_width, player_height))
pygame.mostrar.atualizar()

elif game Over:
game_state = "game Over"
game_over = Falso

O código começa importando o pygame módulo e inicializá-lo. Em seguida, ele cria uma janela de jogo e declara as variáveis ​​de jogo necessárias, incluindo a posição do jogador e do obstáculo, a dimensão e o estado do jogo.

O código define duas funções, draw_start_menu() e draw_game_over_screen(), para desenhar o menu inicial e a tela game over. Essas funções usam as funções do PyGame para desenhar texto e botões na tela.

O loop principal do jogo começa manipulando eventos e verificando o estado do jogo. Se o estado do jogo for menu Iniciar, o menu Iniciar é desenhado na tela. Se o estado do jogo for game Over, a tela de fim de jogo é desenhada na tela. Se o estado do jogo for qualquer outro, o jogo é atualizado e atrai o jogador e o obstáculo para a tela.

O jogo é atualizado lidando com os pressionamentos de tecla e verificando uma colisão entre o jogador e o obstáculo. Se houver uma colisão, o jogo define o game Over sinalizar para Verdadeiro e define o estado do jogo para game Over.

Depois que o jogo é atualizado, o jogador e o obstáculo são desenhados na tela. Finalmente, o código verifica se o game Over sinalizador é definido e, se for, redefine o sinalizador e define o estado do jogo para game Over.

Este processo é repetido continuamente até que a janela do jogo seja fechada.

Aumente o envolvimento do usuário com interface de usuário visualmente atraente

O uso de uma interface de usuário (UI) bem projetada pode aumentar muito o envolvimento do usuário em um jogo PyGame. Uma fonte clara e fácil de ler, gráficos visualmente atraentes, navegação fácil e feedback do usuário são elementos importantes a serem considerados ao projetar a interface do usuário. Ao implementar esses elementos, você pode criar uma IU que ajuda a manter o jogador interessado e imerso no jogo.

Lembre-se de testar sua interface do usuário e obter feedback dos jogadores para garantir que seja eficaz para aumentar o engajamento. No geral, reservar um tempo para criar uma IU forte pode melhorar muito a experiência do jogador e a diversão com o jogo.