Python
Limitar el Movimiento
del Jugador
En este juego, la pantalla es de 800
píxeles de ancho y 600 píxeles de
alto, y tienes un jugador (una nave
espacial) que puede moverse hacia
arriba, abajo, izquierda y derecha.
Esta parte del código asegura que la
nave no se salga de la pantalla.
La anterior clase aprendimos a
insertar un personaje, darle
movimiento y setear nuestra ventana
del juego
Ahora que sentido tiene un juego si no existe ningún
enemigo? Como lo creariamos teniendo en cuenta lo que
fue el proceso para generar al personaje principal?
Agregar Enemigo
Agregamos una imagen de 32px o
64px en nuestra carpeta del
proyecto y luego generamos el
código correspondiente copiando al
del jugador. Esta vez el enemigo si
tendrá una constante de movimiento
fija puesto que no dependerá del
accionar de las teclas.
El enemigo tendrá un movimiento por defecto?
Recordemos que el movimiento era controlado por
las variables enemigo_x_cambio y enemigo_y_cambio
Posicionamiento enemigo
A la variable enemigo_y_cambio por mas de
que le asignemos una constante, haremos que
surja efecto únicamente en determinado caso
Cómo quedará nuestra #Funcion
Enemigo teniendo en cuenta la
estructura que utilizamos para el
jugador principal?
Recordemos ejecutarla con la
línea de código:
Movimiento del enemigo
Para el movimiento del enemigo queremos
que cambie su posición en x de izquierda a
derecha y cuando toque un borde que no
solo rebote sino que también cambie su
posición en y acercándose a nuestro
jugador principal cada vez más agregando
complejidad
Movimiento del enemigo
Crear bala
Como harias para crear una bala
replicando lo que hicimos con el
jugador y enemigo?
Crear bala
Función disparar bala
Disparar Bala
Cual va a ser el evento que dispare a
la bala en nuestro loop del juego?
Disparar Bala
Cuando ejecutamos la
función?
Cuando haya sido presionada la tecla
espacio y el valor de la variable
bala-visible sea True
Movimiento Bala
La bala debe aparecer desde la
posición de la nave e ir modificando
su posición en y (Negativamente o
positivamente?), pero no debe
replicar la trayectoria x de la nave una
vez disparada.
Ahora cómo hacemos para
disparar más de una bala?
Deberíamos encontrar la lógica para
que cuando la bala supere cierta altura
la variable bala visible cambie a False y
podamos volver a presionar la tecla y
disparar otra bala
Ahora cómo hacemos para
disparar más de una bala?
Si la posición en y de la bala es menor a la posición
0 - la cantidad de px de la imagen entonces quiere
decir que la bala ya se salio del marco superior, por
ende reseteamos el valor de bala_visible a False.
Colisiones
Que ideas se les ocurren para calcular
cuando un objeto colisiona con otro?
Que calculos fisicos podemos hacer?
Colisiones
Para calcular colisiones debemos
saber a que distancia estan dos
objetos entre sí. Para eso necesitamos
una formula
Distancia entre dos
puntos
Esta fórmula es
popular entre los
desarrolladores de
videojuegos y expone
cómo calcular la
distancia entre dos
puntos en un eje de
coordenadas
Distancia entre dos
puntos
Luego crearemos una función
para las colisiones
Para replicar esta
fórmula necesitaremos
una librería llamada
math, que sirve en
python para realizar
cálculos matemáticos
Ejecutar función de
En el loop del juego la
distancia ejecutaremos
Asignar puntaje
Como harias para imprimir en
consola el puntaje cada vez que
derribas a un ovni?
Ahora hagámoslo sobre la pantalla del juego,
Asignar puntaje para eso utilizaremos pygame.font y la fuente
freesansbold es la que está incluida en pygame,
el siguiente valor es el tamaño en pixeles
Asignar puntaje
En algún momento tenemos que llamar a la función
Hasta la próxima
clase
presencial!!!