Movimiento del personaje
En este apartado se propone un código que mueve al jugador en un laberinto usando las teclas de dirección.
Este código permite que el jugador se mueva en cualquier dirección usando las teclas de flecha y actualiza el laberinto en consecuencia. Si el jugador se mueve a una celda con un valor de 3, el juego termina y muestra la pantalla de victoria.
Desglosaremos cada parte del código para entender su funcionamiento.
1. Definición de la Función
def move_player(key):
Esta línea define una función llamada move_player que se ejecutará cuando se presione una tecla. La key indica qué tecla se ha presionado.
2. Obtener la Posición del Jugador
x, y = get_player_position()
Se obtiene la posición actual del jugador en el laberinto y se almacena en las variables x y y.
3. Mover el Jugador hacia Arriba
Este bloque de código mueve al jugador hacia arriba si la celda está vacía.
Si la celda contiene la meta del laberinto, se muestra la pantalla de victoria.
if key == pygame.K_UP:
if laberinto[x - 1][y] == 0:
laberinto[x][y] = 0
laberinto[x - 1][y] = 2
elif laberinto[x - 1][y] == 3:
show_victory_screen()
Este bloque de código permite mover al jugador hacia arriba cuando se presiona la flecha hacia arriba (UP). Vamos a explicarlo paso a paso.
Línea 1: Detectar la tecla presionada
if key == pygame.K_UP:
En esta línea, el programa está verificando si el jugador presionó la tecla de flecha hacia arriba (pygame.K_UP). Si es así, ejecutará las instrucciones que vienen a continuación.
Línea 2: Verificar si la celda de arriba está libre
if laberinto[x - 1][y] == 0:
En esta línea, el código comprueba si la celda justo arriba del jugador está libre. El valor de x - 1
representa la posición de la celda de arriba, y el valor 0
indica que está vacía (sin obstáculos).
Línea 3: Marcar la posición actual como vacía
laberinto[x][y] = 0
Si la celda de arriba está vacía, el programa marca la posición actual del jugador (x, y
) como vacía (asigna el valor 0
), lo que significa que el jugador ya no está en esa casilla.
Línea 4: Mover al jugador a la celda de arriba
laberinto[x - 1][y] = 2
Aquí el jugador se mueve a la celda de arriba (x - 1, y
), y la casilla se marca con el valor 2
, que representa al jugador en el laberinto.
Línea 5: Verificar si el jugador ha llegado a la meta
elif laberinto[x - 1][y] == 3:
Si la celda de arriba no está vacía pero contiene un valor 3
, significa que el jugador ha llegado a la meta del laberinto. Esto activará la pantalla de victoria.
Línea 6: Mostrar la pantalla de victoria
show_victory_screen()
Esta línea llama a la función show_victory_screen()
, que mostrará una pantalla de victoria, indicando que el jugador ha ganado el juego.
4. Mover el Jugador hacia Abajo
elif key == pygame.K_DOWN:
if laberinto[x + 1][y] == 0:
laberinto[x][y] = 0
laberinto[x + 1][y] = 2
elif laberinto[x + 1][y] == 3:
show_victory_screen()
Si se presiona la flecha hacia abajo:
- Se verifica si la celda debajo del jugador (en x + 1) está libre.
- Si está libre, el jugador se mueve hacia abajo.
- Si la celda contiene un valor 3, se muestra la pantalla de victoria.
5. Mover el Jugador hacia la Izquierda
elif key == pygame.K_LEFT:
if laberinto[x][y - 1] == 0:
laberinto[x][y] = 0
laberinto[x][y - 1] = 2
elif laberinto[x][y - 1] == 3:
show_victory_screen()
Si se presiona la flecha hacia la izquierda:
- Se verifica si la celda a la izquierda del jugador (en y - 1) está libre.
- Si está libre, el jugador se mueve a la izquierda.
- Si la celda contiene un valor 3, se muestra la pantalla de victoria.
6. Mover el Jugador hacia la Derecha
elif key == pygame.K_RIGHT:
if laberinto[x][y + 1] == 0:
laberinto[x][y] = 0
laberinto[x][y + 1] = 2
elif laberinto[x][y + 1] == 3:
show_victory_screen()
Si se presiona la flecha hacia la derecha:
- Se verifica si la celda a la derecha del jugador (en y + 1) está libre.
- Si está libre, el jugador se mueve hacia la derecha.
- Si la celda contiene un valor 3, se muestra la pantalla de victoria.