Lectores como tú ayudan a apoyar a MUO. Cuando realiza una compra utilizando enlaces en nuestro sitio, podemos ganar una comisión de afiliado. Leer más.

PyGame es una biblioteca popular para crear proyectos con Python y proporciona un poderoso conjunto de herramientas para el desarrollo de juegos. En este artículo, aprenderá cómo crear un menú de inicio y una pantalla de fin de juego para un juego simple usando PyGame.

Crear un juego simple

Antes de crear el menú de inicio y la pantalla de finalización del juego, primero hagamos un juego simple. En este juego, controlarás a un personaje con las teclas de flecha e intentarás evitar los obstáculos. Para mantener las cosas simples, trate de no usar ninguna imagen.

Para comenzar, debe importar los módulos necesarios. Estarás usando el Pygame módulo para acceder a las funciones de PyGame. Para instalar el módulo, puede usar el administrador de paquetes pip:

pepita instalar Pygame

Ahora que nuestro módulo está listo para usar, creemos un juego simple con un jugador que puede moverse hacia la izquierda o hacia la derecha usando las teclas de flecha y un obstáculo. Si chocas con el obstáculo, el juego terminará. Aquí está el código para el mismo:

instagram viewer

importar Pygame
Pygame.en eso()

ancho_de_pantalla = 750
altura_pantalla = 450
pantalla = pygame.display.set_mode((screen_width, screen_height))

obstáculo_x = 400
obstáculo_y = 400
obstáculo_ancho = 40
obstáculo_altura = 40
jugador_x = 200
jugador_y = 400
ancho_del_jugador = 20
jugador_altura = 20

mientrasVerdadero:

paraeventoenPygame.evento.conseguir():

if event.type == pygame. ABANDONAR:
Pygame.abandonar()
abandonar()


llaves = pygame.key.get_pressed()
sillaves[pygame. K_IZQUIERDA]:
jugador_x -= 5
sillaves[pygame. K_DERECHO]:
jugador_x += 5


si jugador_x + jugador_ancho > obstáculo_x y jugador_x < obstáculo_x + ancho_obstáculoyjugador_y + altura_del_jugador > obstáculo_y y jugador_y < obstáculo_y + obstáculo_altura:
juego_terminado = Verdadero


pantalla.llenar((0, 0, 0))
Pygame.dibujar.rect(pantalla, (255, 0, 0), (obstáculo_x, obstáculo_y, ancho_obstáculo, obstáculo_altura))
Pygame.dibujar.rect(pantalla, (0, 255, 0), (jugador_x, jugador_y, ancho_del_jugador, altura_del_jugador))
Pygame.mostrar.actualizar()

En el código anterior, configuraste la ventana del juego y declaraste las variables del juego. También manejó la entrada del usuario y dibujó los elementos en la pantalla.

Creación del menú de inicio

Ahora que tienes un juego básico, creemos un menú de inicio. Para hacer esto, deberá declarar una variable global para el estado del juego. Esta variable hará un seguimiento del estado actual del juego, como si el menú de inicio está activo o si el juego se está ejecutando. Debes agregar esta variable al comienzo del código de tu juego:

juego_estado = "menu de inicio"

A continuación, agregará una función para dibujar el menú de inicio en la pantalla. Puede usar las funciones de PyGame para dibujar el texto, los botones y otros elementos en la pantalla.

definitivamentedraw_start_menu():
pantalla.llenar((0, 0, 0))
fuente = pygame.fuente. fuente del sistema ('arial', 40)
título = fuente.render('Mi juego', Verdadero, (255, 255, 255))
start_button = fuente.render('Comenzar', Verdadero, (255, 255, 255))
screen.blit (título, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/2))
pantalla.blit (botón_inicio, (ancho_pantalla/2 - botón_inicio.obtener_ancho()/2, altura_pantalla/2 + botón_inicio.obtener_altura()/2))
Pygame.mostrar.actualizar()

A continuación, puede agregar el dibujar_menú_inicio() Función al bucle principal del juego.

mientrasVerdadero: 

paraeventoenPygame.evento.conseguir():
if event.type == pygame. ABANDONAR:
Pygame.abandonar()
abandonar()

si juego_estado == "menu de inicio":
dibujar_menú_inicio()

si juego_estado == "juego":
llaves = pygame.key.get_pressed()
# resto del código

Ahora, el menú de inicio se dibujará en la pantalla. El último paso es manejar la entrada del usuario. Puede agregar una sentencia if al bucle principal del juego para comprobar si el usuario ha pulsado el botón de inicio.

si juego_estado == "menu de inicio":
llaves = pygame.key.get_pressed()
sillaves[pygame. ESPACIO_K]:
jugador_x = 200
jugador_y = 400
juego_estado = "juego"
juego_terminado = FALSO

Con este código, el juego comenzará cuando el usuario presione el botón de inicio.

Implementando la pantalla Game Over

Ahora que tienes el menú de inicio, vamos a crear la pantalla de finalización del juego. Esta función debería mostrar la puntuación final y un mensaje de finalización del juego.

definitivamentedibujar_juego_sobre_pantalla():
pantalla.llenar((0, 0, 0))
fuente = pygame.fuente. fuente del sistema ('arial', 40)
título = fuente.render('Juego terminado', Verdadero, (255, 255, 255))
botón_reiniciar = fuente.render('R - Reiniciar', Verdadero, (255, 255, 255))
quit_button = fuente.render('Q - Salir', Verdadero, (255, 255, 255))
screen.blit (título, (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()))
pantalla.blit (botón_salir, (ancho_pantalla/2 - botón_salir.obtener_ancho()/2, altura_pantalla/2 + botón_salir.obtener_altura()/2))
Pygame.mostrar.actualizar()

Luego puede agregar esta función al bucle principal del juego.

si juego_estado == "menu de inicio":
dibujar_menú_inicio()
si juego_estado == "juego terminado":
dibujar_juego_sobre_pantalla()

si juego_estado == "juego":
llaves = pygame.key.get_pressed()
sillaves[pygame. K_IZQUIERDA]:
jugador_x -= 5
sillaves[pygame. K_DERECHO]:
jugador_x += 5

si jugador_x + jugador_ancho > obstáculo_x y jugador_x < obstáculo_x + ancho_obstáculoyjugador_y + altura_del_jugador > obstáculo_y y jugador_y < obstáculo_y + obstáculo_altura:
juego_terminado = Verdadero
juego_estado = "juego terminado"

Finalmente, debe manejar la entrada del usuario para manejar la elección del usuario. Puede agregar una declaración if al bucle principal del juego para verificar si el usuario presionó el botón reiniciar o salir.

si juego_estado == "menu de inicio":
llaves = pygame.key.get_pressed()
sillaves[pygame. ESPACIO_K]:
juego_estado = "juego"
jugador_x = 200
jugador_y = 400
juego_estado = "juego"
juego_terminado = FALSO

si juego_estado == "juego terminado":
llaves = pygame.key.get_pressed()
sillaves[pygame. K_r]:
juego_estado = "menu de inicio"
sillaves[pygame. K_q]:
Pygame.abandonar()
abandonar()

Con este código, el juego se reiniciará cuando el usuario presione el botón 'R' y se cerrará cuando el usuario presione el botón 'Q' en el teclado.

A continuación se muestra el código completo:

importar Pygame

Pygame.en eso()
ancho_de_pantalla = 750
altura_pantalla = 450
pantalla = pygame.display.set_mode((screen_width, screen_height))
obstáculo_x = 400
obstáculo_y = 400
obstáculo_ancho = 40
obstáculo_altura = 40
jugador_x = 200
jugador_y = 400
ancho_del_jugador = 20
jugador_altura = 20
juego_estado = "menu de inicio"

definitivamentedraw_start_menu():
pantalla.llenar((0, 0, 0))
fuente = pygame.fuente. fuente del sistema ('arial', 40)
título = fuente.render('Mi juego', Verdadero, (255, 255, 255))
start_button = fuente.render('Comenzar', Verdadero, (255, 255, 255))
screen.blit (título, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/2))
pantalla.blit (botón_inicio, (ancho_pantalla/2 - botón_inicio.obtener_ancho()/2, altura_pantalla/2 + botón_inicio.obtener_altura()/2))
Pygame.mostrar.actualizar()

definitivamentedibujar_juego_sobre_pantalla():
pantalla.llenar((0, 0, 0))
fuente = pygame.fuente. fuente del sistema ('arial', 40)
título = fuente.render('Juego terminado', Verdadero, (255, 255, 255))
botón_reiniciar = fuente.render('R - Reiniciar', Verdadero, (255, 255, 255))
quit_button = fuente.render('Q - Salir', Verdadero, (255, 255, 255))
screen.blit (título, (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()))
pantalla.blit (botón_salir, (ancho_pantalla/2 - botón_salir.obtener_ancho()/2, altura_pantalla/2 + botón_salir.obtener_altura()/2))
Pygame.mostrar.actualizar()

mientrasVerdadero:
paraeventoenPygame.evento.conseguir():
if event.type == pygame. ABANDONAR:
Pygame.abandonar()
abandonar()
si juego_estado == "menu de inicio":
dibujar_menú_inicio()
llaves = pygame.key.get_pressed()
sillaves[pygame. ESPACIO_K]:
jugador_x = 200
jugador_y = 400
juego_estado = "juego"
juego_terminado = FALSO
elif juego_estado == "juego terminado":
dibujar_juego_sobre_pantalla()
llaves = pygame.key.get_pressed()
sillaves[pygame. K_r]:
juego_estado = "menu de inicio"
sillaves[pygame. K_q]:
Pygame.abandonar()
abandonar()

elif juego_estado == "juego":
llaves = pygame.key.get_pressed()
sillaves[pygame. K_IZQUIERDA]:
jugador_x -= 5
sillaves[pygame. K_DERECHO]:
jugador_x += 5

si jugador_x + jugador_ancho > obstáculo_x y jugador_x < obstáculo_x + ancho_obstáculoyjugador_y + altura_del_jugador > obstáculo_y y jugador_y < obstáculo_y + obstáculo_altura:
juego_terminado = Verdadero
juego_estado = "juego terminado"

pantalla.llenar((0, 0, 0))
Pygame.dibujar.rect(pantalla, (255, 0, 0), (obstáculo_x, obstáculo_y, ancho_obstáculo, obstáculo_altura))
Pygame.dibujar.rect(pantalla, (0, 255, 0), (jugador_x, jugador_y, ancho_del_jugador, altura_del_jugador))
Pygame.mostrar.actualizar()

elif juego terminado:
juego_estado = "juego terminado"
juego_terminado = FALSO

El código comienza importando el Pygame módulo e inicializándolo. A continuación, crea una ventana de juego y declara las variables de juego necesarias, incluida la posición, la dimensión y el estado del juego del jugador y del obstáculo.

El código define dos funciones, dibujar_menú_inicio() y dibujar_juego_sobre_pantalla(), para dibujar el menú de inicio y la pantalla de finalización del juego. Estas funciones utilizan las funciones de PyGame para dibujar texto y botones en la pantalla.

El ciclo principal del juego comienza manejando eventos y verificando el estado del juego. Si el estado del juego es menu de inicio, el menú de inicio se dibuja en la pantalla. Si el estado del juego es juego terminado, la pantalla de finalización del juego se dibuja en la pantalla. Si el estado del juego es diferente, el juego se actualiza y atrae al jugador y al obstáculo a la pantalla.

El juego se actualiza manejando las pulsaciones de teclas y comprobando si hay una colisión entre el jugador y el obstáculo. Si hay una colisión, el juego establece el juego terminado bandera a Verdadero y establece el estado del juego en juego terminado.

Después de actualizar el juego, el jugador y el obstáculo se dibujan en la pantalla. Finalmente, el código verifica si el juego terminado la bandera está establecida, y si lo está, restablece la bandera y establece el estado del juego en juego terminado.

Este proceso se repite continuamente hasta que se cierra la ventana del juego.

Aumente la participación del usuario con una interfaz de usuario visualmente atractiva

El uso de una interfaz de usuario (UI) bien diseñada puede aumentar en gran medida la participación del usuario en un juego de PyGame. Una fuente clara y fácil de leer, gráficos visualmente atractivos, navegación fácil y comentarios de los usuarios son elementos importantes a tener en cuenta al diseñar la interfaz de usuario. Al implementar estos elementos, puede crear una interfaz de usuario que ayude a mantener al jugador interesado e inmerso en el juego.

Recuerde probar su interfaz de usuario y recopilar comentarios de los jugadores para asegurarse de que sea eficaz para aumentar la participación. En general, tomarse el tiempo para crear una interfaz de usuario sólida puede mejorar en gran medida la experiencia del jugador y el disfrute de su juego.