Activa JavaScript para disfrutar de los vídeos de la Mediateca.
El juego del pong en processing - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Práctica final del bloque de programación en processing
Bueno, esta última práctica consiste en un poco recopilar todo lo que hemos ido haciendo en las anteriores prácticas
00:00:07
y hacer un juego sencillo, el juego que os propongo es el juego del Pong,
00:00:14
en el que hay una pelota que rebota y que paramos o no paramos esa pelota con una raqueta.
00:00:21
Entonces os lo he puesto en la práctica en el PDF para que vayáis siguiendo paso a paso
00:00:29
y vayáis incorporando cada vez más dificultad al programa.
00:00:33
Se puede sacar un 5 si hacéis el juego básico que está detallado ahí en el PDF y luego si añadís dificultad o modificáis el juego y añadís otros elementos pues con eso se consigue el 10.
00:00:37
Vale, entonces, lo primero que tenéis que conseguir es lo que tenéis en el PDF marcado con el número 1
00:00:50
Y es un programa en el que haya una bola que rebota
00:00:56
Eso ya lo hemos hecho en otras prácticas
00:00:59
Y simplemente lo único, la única novedad es que todos los datos están puestos con variables
00:01:01
Para que luego se puedan modificar
00:01:09
Si queremos que la bola vaya más rápida o rebote de otra manera
00:01:11
Pues si lo ponemos con variables en vez de con números fijos, pues eso lo podemos modificar
00:01:14
entonces se crean cinco variables
00:01:19
la primera es el diámetro de la bola
00:01:22
que podemos hacer que sea luego más grande o más pequeña
00:01:24
cambiando esa variable
00:01:26
bolaX y bolaY son las coordenadas
00:01:27
X e Y de la pelota o de la bola
00:01:30
y avance bolaX y avance bolaY
00:01:32
es lo que va a avanzar en cada una de las direcciones
00:01:35
le he dado unos valores iniciales
00:01:37
que también lo podéis cambiar y adaptar
00:01:39
según cada uno la versión del juego que vaya a hacer
00:01:41
en la función Z
00:01:43
bueno, he definido una pantalla de 600x400
00:01:46
y luego he generado un número aleatorio, esto es una función nueva que se llama random
00:01:48
y lo que hace es que genera un número que es un número que puede ser decimal
00:01:54
entre 0 y el ancho de la pantalla para la bola X y entre 0 y el alto de la pantalla para la bola Y.
00:02:00
Este int que he puesto aquí delante es que como este número se genera, como no genera un número entero
00:02:09
al ponerle el int delante ya lo convierte en número entero
00:02:14
entonces la variable bolaX es un número entero que va a estar entre 0 y el ancho
00:02:17
y la variable bolaY va a ser otro número entero que va a estar entre 0 y el alto
00:02:22
entonces cada vez que ejecutemos el programa la posición inicial va a ser diferente
00:02:26
para que tenga gracia, si ponemos un número fijo pues siempre se va a ejecutar igual
00:02:30
vale, después en la función draw lo que hay que poner es
00:02:34
bueno, yo he puesto un fondo amarillo y un relleno de azul
00:02:38
podéis elegir los valores o los colores que queráis
00:02:41
y llamamos a la función bola que es la que dibuja la bola.
00:02:44
Entonces en la función bola lo que estoy dibujando es una elipse,
00:02:48
se puede hacer también con un círculo pero en la versión antigua ya sabéis que no existía la función círculo
00:02:52
en el que las coordenadas son bola X y bola Y y dos veces el diámetro para que sea un círculo.
00:02:56
Incrementa la posición de la bola X y de la bola Y continuamente para que se esté moviendo
00:03:04
y después en estos dos condicionales lo que estoy consiguiendo es que si rebota a lo ancho o rebota a lo alto, pues cambiar la dirección.
00:03:08
Entonces, bueno, aquí simplemente he puesto que si el valor de la coordenada x es mayor que el ancho de la pantalla menos la mitad del diámetro,
00:03:20
es decir, el radio, eso es para que no desaparezca como la bola la está controlando desde el centro,
00:03:27
si pongo solo el diámetro desaparece media bola al chocar con la pantalla.
00:03:33
Vale, esta barra vertical, que es la barra que está en la tecla del 1 con Alt-G-R, lo que le va a dar al condicional IF son dos opciones, ¿vale? Esto es si rebota por la derecha, así que si es el ancho menos el diámetro es por la derecha, o que rebote por la izquierda, ¿vale?
00:03:38
Que esto es, si la bola X es más pequeña, en principio había que poner que el diámetro medio, pero desaparecía un poco la bola, así que este 25 lo he puesto un poco ahí a ojo para que diera mejor sensación.
00:03:57
Podéis probar ahí diferentes números y veis que la bola pues hace alguna sensación rara, como no poner nada.
00:04:09
Vale, entonces si se cumple alguna de estas dos condiciones, por eso lo del O lógico, lo que hace es que si estaba sumando, o sea que se está moviendo hacia la derecha, cambio arrestando.
00:04:15
Y si estaba restando, cambia sumando, o sea, le cambia el signo al sentido del movimiento, ¿vale?
00:04:25
Y lo mismo para el movimiento vertical, por arriba y por abajo, bueno, por abajo y por arriba.
00:04:31
Bueno, para el siguiente paso vamos a añadir la raqueta, ¿vale?
00:04:41
La raqueta, voy a quitar este, porque ahora el que vamos a poner es uno con la raqueta.
00:04:46
Una vez que tenemos la pelota que rebota añadimos a nuestro programa una raqueta
00:04:51
Entonces lo tenéis también ahí detallado en el pdf en el punto 2
00:05:03
Se trata de coger el mismo programa anterior y añadirle líneas entre medias para poner la raqueta
00:05:07
Entonces esto ya lo teníamos de antes y añadimos 4 variables que son variables que van a controlar el funcionamiento de la raqueta
00:05:18
uno es lo que mide la raqueta en la dirección de x, otro es lo que mide la raqueta en la dirección de y
00:05:25
que lo he puesto relacionado que sea seis veces lo que mide en x
00:05:30
por si quiero cambiar el tamaño que se cambie de forma proporcional
00:05:34
y luego la posición de la raqueta en x y la posición de la raqueta en y
00:05:36
que sería esta esquinita de aquí arriba, las coordenadas de esa esquinita de ahí arriba
00:05:41
porque no he puesto de momento lo del regmo de center
00:05:45
entonces lo va a controlar desde la esquina superior izquierda
00:05:48
luego he puesto una variable booleana que inicialmente es verdadera
00:05:51
es para que detecte si es la primera vez
00:05:55
porque lo que voy a programar es que la primera vez la raqueta aparezca en el centro de la pantalla
00:05:57
y en realidad esta no hace falta ahora mismo
00:06:01
que lo intenté hacer con ceros y unos, esta no se me ha colado
00:06:07
vale, a ver, el setup en principio es lo mismo que hemos visto antes
00:06:11
no hay que cambiar nada, estas tres líneas también
00:06:14
y aquí es donde pongo que si primera vez es verdadero
00:06:18
ya sabéis que no hace falta ponerlo de que es verdadero
00:06:21
solo cuando es una variable booleana
00:06:23
si ponemos si primera vez
00:06:25
ya interpreta que es
00:06:26
si es verdadero
00:06:29
lo que hacemos es que la posición de la raqueta ahí
00:06:30
es la mitad de la altura menos la mitad
00:06:32
de lo que mide la raqueta
00:06:35
bueno esto simplemente lo que hace es colocar la raqueta inicialmente
00:06:36
en el centro
00:06:39
y cambiamos a falso
00:06:39
para que ya no vuelva a ejecutar nunca más este condicional
00:06:43
vale
00:06:45
este rectángulo lo que hace es dibujar la raqueta
00:06:46
vale, dibuja un rectángulo
00:06:49
con estas dos coordenadas y este tamaño
00:06:50
y en este condicional de aquí lo que vamos a ver es si la raqueta y la pelota chocan
00:06:53
es un poquito complicado porque lo que vamos a detectar es si la posición de la bola
00:07:00
menos la posición de la raqueta, es decir la distancia entre la bola y la raqueta
00:07:07
es más pequeña que lo que mide la raqueta menos el radio de la bola
00:07:12
y esto es un condicional en el que se cumplen, se tienen que cumplir tres cosas a la vez,
00:07:16
que la bola Y sea mayor que la posición de la raqueta Y y que la bola Y sea menor que la posición de la raqueta en Y.
00:07:24
Es decir, que la distancia entre la coordenada X de la bola y de la raqueta sea menor que la raqueta y el radio
00:07:32
y además que esté en esta altura, entre esta altura y esta altura, o sea que se tienen que dar tres condiciones.
00:07:40
Ahora os pongo un dibujo.
00:07:46
Si se dan esas tres condiciones, lo que voy a hacer es cambiar la dirección, igual que habíamos hecho antes cuando llegábamos a la pared.
00:07:48
Entonces, si choca contra la raqueta, cambia la dirección, igual que si choca contra el fondo.
00:07:55
Para el choca, o sea, esa palabra choca, en realidad lo que he hecho es programar que la distancia, o sea, que se cumpla esa condición.
00:08:04
Luego he añadido aquí abajo lo que va a controlar el movimiento de la raqueta.
00:08:12
Si pulso la tecla up, se va a mover hacia arriba menos 15, o sea, va a cambiar su posición 15 píxeles hacia arriba y si pulso la tecla down, la flecha hacia abajo, pues se va a mover hacia abajo.
00:08:16
Después, estos dos condicionales lo que hacen es que la raqueta no desaparezca, que si yo me voy arriba del todo, no me deja avanzar más y si me voy abajo del todo, tampoco me deja avanzar más.
00:08:32
Si no ponéis esos dos, pues la raqueta desaparece de la pantalla porque seguiría sumando la posición de la raqueta.
00:08:44
Esta sería la segunda parte.
00:08:53
La parte un poco más difícil es este if de aquí, que es el que controla si rebota o no rebota, si coincide o no coincide en la posición con la raqueta.
00:08:55
Bueno, os he intentado dibujar aquí un poco la condición que hace que la raqueta haga rebotar a la bola
00:09:05
El if, ese un poco más complicado que tenéis
00:09:15
A ver si con el dibujo lo entendéis un poco mejor
00:09:18
Entonces, bola X lo que marca es la posición del centro de la bola
00:09:22
Raqueta X lo que marca es esta esquina de arriba
00:09:29
Entonces, si resto esta coordenada, que sería desde aquí hasta el borde, menos esta coordenada, lo que tengo es la distancia entre la bola y la raqueta, que sería esto de aquí.
00:09:32
Entonces, si la distancia entre la bola y la raqueta es más pequeño que lo que mide la raqueta en x más el radio de la bola, es que la bola está más cerca de la raqueta de lo que debería.
00:09:42
¿Vale? Eso sería la primera condición que tiene que cumplir para que la raqueta haga rebotar la pelota
00:09:56
La segunda y la tercera condición tienen que ver con la posición en Y
00:10:03
Entonces, bueno, esto es el mismo dibujo de antes y le he añadido la posición en Y de la raqueta
00:10:07
¿Vale? La posición en Y de la bola y la posición en Y más lo que mide la raqueta
00:10:13
entonces si la coordenada y de la bola que sería el centro de la bola en y es mayor que la posición de la raqueta
00:10:20
es decir si está por debajo de esta línea y además está por encima de esta línea que sería esta otra condición de aquí
00:10:26
pues entonces es cuando tiene que rebotar, se tienen que dar las tres condiciones a la vez
00:10:34
que en la coordenada x estén cerca y que en la coordenada y esté entre estas dos líneas
00:10:39
y eso es lo que se escribe en esa línea y es lo que hace que la bola rebote
00:10:45
Bueno, una vez que tenemos la bola que rebota y la raqueta que puede parar esa bola para que no toque la pared del fondo
00:10:49
Vamos a añadir una variable que nos va a llevar la cuenta de cuántas vidas tenemos
00:11:03
Pues yo he puesto una variable entera que la he llamado vidas y que tiene un valor inicial de 5
00:11:07
Así que en mi juego va a haber 5 vidas iniciales
00:11:12
Está al inicio del programa, igual que antes hay que ir añadiendo lo que se ha marcado en amarillo al programa anterior
00:11:15
Más o menos manteniendo las líneas sabéis dónde colocarlo, ¿vale? En la lista de las variables.
00:11:21
En la función draw vamos a añadir cómo vamos a restar una vida, ¿vale?
00:11:30
Y vamos a restar la vida si la coordenada x de la bola se hace más pequeña o justo llega a ser como el radio y un poquito más.
00:11:35
¿Vale? Esto con el igual igual, que quiere decir exactamente igual, puede que no funcione si no se consigue exactamente este número.
00:11:46
Entonces también lo podéis hacer igual con el menor.
00:11:52
¿Vale? Si la coordenada X de la bola supera a la raqueta o se acerca mucho al borde, lo que vamos a hacer es restar una vida y rebotar.
00:11:56
Y además vamos a mostrar un texto que nos diga cuántas vidas tiene.
00:12:06
Esto también es un elemento nuevo, entonces llamamos a una función mostrar vidas, que es esta que os he puesto aquí abajo,
00:12:10
que es una función que simplemente va a escribir un texto en tamaño 32, eso también podéis elegirlo como queráis.
00:12:15
El texto que me va a mostrar es la palabra vidas en la posición 250, 30 y después la variable vidas, que en principio va a ser un 5, en la posición 350, 30.
00:12:23
¿Vale? Entonces, si le doy al play, pues lo único que ha cambiado es este texto que ha aparecido aquí
00:12:34
Y que ahora, bueno, ahora he hecho una cosa rara
00:12:40
Si la bola supera a la posición de la raqueta, ¿veis? Las vidas van bajando
00:12:43
¿Vale? Si consigo pararla, no baja la vida, pero si va tocando el borde
00:12:50
O sea, si pasa de la posición de la raqueta, eso se puede hacer de diferentes formas
00:12:56
Así que las vidas se van restando
00:13:01
vale, bueno, lo último ya que nos queda
00:13:03
es que si las vidas llegan a cero
00:13:05
lo que voy a poner es un
00:13:06
llamar a una función que he llamado game over
00:13:08
que lo único que va a poner es un decorado
00:13:10
con la palabra game over en rojo
00:13:13
voy a parar la bola
00:13:15
y voy a volver
00:13:17
a escribir las vidas, vale
00:13:19
y con eso estaría el programa
00:13:21
terminado, la parte básica
00:13:23
vale, con esto es un 5, en realidad lo único que
00:13:24
tenéis que hacer es seguir el vídeo y el pdf
00:13:27
e irlo copiando e intentar entenderlo
00:13:29
Para sacar el 10, pues se pueden añadir muchas posibilidades.
00:13:31
Por ejemplo, podemos añadir o aumentar la velocidad de la bola según van bajando las vidas.
00:13:36
Podemos reducir el tamaño de la raqueta.
00:13:41
Podemos añadir una segunda raqueta y hacer que jueguen dos jugadores.
00:13:44
Eso habría que poner dos variables vida, es un poco más complicado,
00:13:48
pero bueno, yo al que se anime a hacerlo, pues le animo a que lo haga y que me pregunte si tiene dudas.
00:13:51
¿Vale? O también es válido si diseñáis un juego con las mismas condiciones que os he puesto en la práctica
00:13:56
Y que sea totalmente diferente, ¿vale? No tiene por qué ser exactamente el juego que yo os propongo
00:14:02
¿Vale? Esto es un juego muy básico y tiene muchas formas de mejora
00:14:07
Y seguro que hay algún fallo
00:14:12
Pero bueno, lo importante es un poco entender cómo funcionan los videojuegos
00:14:14
Y aunque parezca todo muy complicado, todo se reduce a lo mismo
00:14:18
¿Vale? Al final todos los juegos, por muy complicados que sean
00:14:21
están programados internamente de forma parecida a esto.
00:14:24
Bueno, espero recibir vuestros juegos, a ver qué tal os salen.
00:14:30
- Subido por:
- Inmaculada M.
- Licencia:
- Reconocimiento - No comercial - Compartir igual
- Visualizaciones:
- 343
- Fecha:
- 30 de enero de 2021 - 19:14
- Visibilidad:
- Público
- Centro:
- IES PROFESOR JULIO PÉREZ
- Duración:
- 14′ 36″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1024x576 píxeles
- Tamaño:
- 218.01 MBytes