Bienvenidos!



Bienvenidos, internautas!


Este es un espacio para mis alumnos de Informática de Ciclo Básico, pensado como una herramienta de aprendizaje colaborativo y como una poderosa forma de aprender a aprender. Los invito a conocer nuestro blog.

6. Pong

PROGRAMACIÓN DE UN VIDEOJUEGO
 Este es el mítico videojuego Pong de la empresa Atari. Ahora estás más acostumbrados a jugar a juegos más modernos y sofisticados, pero al principio, los videojuegos eran tan rústicos y simples como este.


En esta dirección web puedes echar una partida al Pong. Así que ¡¡a jugar!!
El desafío es elaborar un programa con Scratch que al ejecutarlo te permita jugar al Pong con quien quieras. Antes de empezar a resolver cualquier problema en programación hay que hacer dos cosas fundamentales:
1º pensar con detalle qué es lo que queremos haga nuestro programa.
2º dividir el problema en varios pequeños problemas.
1
Describe en un papel en qué consiste el juego. Escríbelo lo más detalladamente que puedas. Por ejemplo: observa la colocación en la pantalla de los dos jugadores y de la bola. Podríamos comenzar la descripción del juego de la siguiente manera:
1º El jugador 1 está situado a la izquierda y centrado.
2º El jugador 2 está situado a la derecha y centrado.
3º La bola está en el centro y cuando el juego comienza se mueve hacia uno de los jugadores.
Ahora, copia estos tres primeros puntos en tu papel y continúa escribiendo para describir completamente lo que hace el Pong.
2
Haz un esquema en el que se muestre los diferentes pequeños problemas en los que se puede dividir el gran problema que tenemos. Aquí te pongo una fotografía con un ejemplo del esquema:
Ahora, copia este esquema en tu papel y continúa escribiendo todos los problemas que faltan.
3
Vamos a empezar a programar el vídeo juego. El primer pequeño problema que vamos a resolver es el PROGRAMA DEL JUGADOR 1.
El objetivo en la primera parte del programa es que podamos mover al jugador1 por el escenario hacia arriba y hacia abajo. Lo vamos a mover mediante dos teclas. Vamos a usar dos bloques nuevos:
        1º Bloque si:
Como este bloque es de color amarillo ya sabes dónde lo puedes encontrar.
          
  2º Bloque ¿tecla q presionada? lo puedes encontrar en las Estructuras de Código de Sensores que tiene color azul claro.
El bloque si significa que:
- si se cumple la condición se ejecutarán todos los bloques que haya dentro de él.
- si no se cumple la condición no se ejecutarán los bloques que haya dentro de él y el programa continuará ejecutando los bloques fuera del bucle si.
La condición que viene por defecto en el bloque es ¿tecla espacio presionada?, pero ya sabes cómo cambiarla, ¿no?La condición que hemos incluido en el primer bloque si es: ¿tecla q presionada?
Si la respuesta a esta pregunta ¿tecla q presionada? es sí, verdadero, cierto, es decir, si presionamos la tecla Q,  entonces se ejecutarán los bloques apuntar en dirección 0 y mover 3 pasos.
Si la respuesta a esta pregunta ¿tecla q presionada? es no, mentira, falso, es decir, si no presionamos la tecla Q,  entonces no se ejecutarán los bloques apuntar en dirección 0 y mover 3 pasos.

Para mover hacia abajo el jugador 1 usamos la tecla A y los mismos bloques que para moverlo hacia arriba, sólo que ahora el desplazamiento hacia abajo lo haremos con el bloque mover - 3 pasos.

NOTA: Observa que los bucles si están incluidos dentro de otro bucle llamado por siempre que ya hemos utilizado. Al estar incluidos en un bucle por siempre Scratch está comprobando constantemente -por siempre- si estamos o no pulsando alguna de las teclas Q o A.

 
El otro bloque nuevo de este programa es apuntar en dirección.Si haces clic en la flechita que está al lado de 0 se abrirá un menú con cuatro opciones:
 4
Bien, así de fácil hemos resuelto el primer pequeño problema de nuestro videojuego Pong. Ahora vamos con el segundo.Para resolver el problema de la programación del jugador 2, usaremos una herramienta muy sencilla y muy útil:
DUPLICAR OBJETOS.
      El jugador 2 tiene la misma forma y tamaño que el jugador1. Podrías dibujarlo de nuevo, pero Scratch permite hacer una copia de un objeto de una forma muy sencilla.


 Sólo tienes que hacer clic con el botón derecho del ratón sobre el objeto que quieres copiar. Saldrá un menú y debes elegir la opción duplicar.
Ahora debes cambiar el nombre del objeto 2 y llamarle jugador 2. Observa que al duplicar un objeto también duplicamos, es decir, hacemos una copia del programa del objeto. Si haces clic primero en el objeto jugador 1 y luego en el objeto jugador 2 observarás que los programas son exactamente iguales.
Ahora llega el momento de pensar en lo que quieres hacer con el jugador 2. Te voy a ayudar con algunas preguntas:
    1ª ¿Dónde tiene que estar situado el jugador 2 al principio del programa?
    2ª ¿Con qué teclas quieres moverlo?
    3ª ¿Hacia qué direcciones tienes que mover el jugador 2?
Ten en cuenta: quieres que el jugador 2 haga cosas muy parecidas, es decir, moverse hacia arriba y hacia abajo de la misma forma que lo hace el jugador 1. Por tanto, el programa del jugador2 debe ser muy parecido al del jugador 1. Aunque cada jugador tiene que tener sus propias características y controles.

A partir del programa del jugador 1 se puede elaborar el programa que controla la situación y los movimientos del jugador 2 de forma muy sencilla. Sólo tienes que observar con atención cómo está hecho el programa anterior, responder a las preguntas anteriores y adaptar el programa del jugador 1 al jugador 2.
Haz clic en el objeto al que hemos llamado jugador 2 y:
 1. Coloca al jugador 2 a la derecha del escenario, justo enfrente del jugador 1 y a la misma distancia que éste del centro del escenario.
2. Cambia los datos que sean necesarios del programa para que podamos mover al jugador 2 hacia arriba del escenario con la tecla cursor hacia arriba ↑ y hacia abajo con la cursor hacia abajo ↓.
3. Comprueba si los cambios que has hecho en el programa del jugador 2 permiten controlar los movimientos de este jugador tal y como queremos hacerlo. Para hacerlo, tienes que ejecutar el programa.
5.
LOS OBJETOS PUEDEN INTERACTUAR ENTRE SÍ
Tu videojuego va tomando forma. Has resuelto el segundo problema: ya puedes mover a dos jugadores sobre el escenario utilizando teclas de la computadora.
Ahora hay que mover la pelota sobre el escenario de izquierda a derecha y viceversa. Este es nuestro siguiente reto.
Hasta ahora has trabajado con dos objetos a la vez sobre el escenario, pero sin que estos objetos interactuaran entre sí. Podríamos decir que los objetos iban por libre sin que lo que hiciera uno influyera en el comportamiento del otro y viceversa.
Pero ahora, para que los jugadores golpeen la pelota necesitas que cuando la pelota choque con un jugador, ésta salga rebotada. Esto es lo que, en Scratch, llamamos interacción entre objetos: lo que hace un objeto influye en el comportamiento de otro/s objeto/s.

    DIBUJANDO OBJETOS
    Vas a dibujar tu primer objeto en Scratch. Es un objeto sencillo porque va a ser una circunferencia de color negro que nos va a servir de pelota.
        Para dibujar un objeto nuevo haz clic en
Se abre una nueva ventana llamada Editor de Pinturas:
Haz clic en la herramienta para dibujar círculos y haz clic y arrastra el ratón en el lienzo para dibujar un círculo de color negro. El círculo no tiene que ser muy grande. Aproximadamente de este tamaño.
Clic en Aceptar y ya tendrás tu nuevo objeto. Cámbialo de nombre, llámalo pelota.
Este es un esquema de lo que tienes que programar al principio del programa de la pelota:

Intenta programar la primera parte del programa de la pelota.
PISTA: repasa el esquema que te acabo de dar e intenta hacer el programa con algunos de los bloques que ya hemos utilizado en anteriores programas. Cada rectángulo lleva dentro una palabra.
Por ejemplo:
- INICIO. ¿Recuerdas qué bloque hay que poner para iniciar los programas?
- POSICIÓN: ¿Dónde quieres colocar la pelota al principio del juego? ¿Qué bloque te permite colocar la pelota en una posición concreta del escenario?
Sigue repasando los bloques que faltan del esquema y ve preguntándote qué bloque o qué bloques -porque quizás necesites más de un bloque- resuelven cada uno de los problemas.
Ve añadiendo los bloques al área de programas de la pelota.¿Ya lo tienes? Entonces sólo te falta probar el programa.
La pelota se mueve hacia la derecha -hacia el jugador 2- en la dirección 90º. Cuando llega al jugador 2 ¿qué ocurre? La pelota atraviesa el jugador 2 ¿Es eso lo que queremos? No parece que sea eso.Tenemos que solucionarlo.
Pregúntate: ¿qué quiero que haga la pelota cuando llega al jugador 2? Quiero que:
- si la pelota toca con el jugador 2 salga rebotada en dirección hacia el jugador 1.
- si la pelota no toca con el jugador 2 siga avanzando en dirección hacia el jugador 2.
Podríamos representar estas ideas en forma de esquema de la siguiente manera. Este esquema es continuación  del anterior:
 Ahora la pregunta es ¿cómo conseguimos que si la pelota toca al jugador 2 la pelota cambie el sentido del movimiento y se mueva hacia el jugador 1?
Lee con atención la frase anterior:la primera palabra es si ... Recuerda que había un bloque que era si. Éste es nuestro bloque, añádelo. Tienes que añadirlo después del bloque mover 6 pasos porque lo que queremos es que la pelota se esté moviendo siempre, pero si toca al jugador 2 rebote hacia el lado contrario.
Las siguientes palabras de la frase son: la pelota toca al jugador 2 ... ¿Cómo le decimos esto al programa? Busca en el conjunto de bloque Sensores. El primer bloque es: 
  Añádelo al hueco del bloque si que hay al lado del si.
 
Tienes que elegir jugador 2 con el botón derecho del mouse.
Las palabras que quedan de la frase anterior son cambie el sentido del movimiento y se mueva hacia el jugador 1. ¿Cómo haremos esto? Recuerda que en el conjunto de bloques Movimiento hay un bloque que es añádelo dentro - de la boca- del bloque si.
¡¡Pruébalo!! ¿lo has conseguido? No, parece que no. Algo falla. ¿Sabes qué es?
PISTA: observa a qué ángulo está apuntando la pelota. Hmmm, repasa el esquema de los ángulos que está en la página 13. ¿Qué ángulo debes poner en apuntar en dirección ... si quieres que la pelota se mueva en dirección hacia el jugador 1?
 
Eso es, cambia el ángulo y comprueba que ahora sí el programa funciona como quieres que funcione. Has conseguido que:
1. La pelota se mueve hacia el jugador 2.
2. Al chocar con el jugador 2 se mueva en dirección contraria hacia el jugador 1.
6.
TRABAJANDO CON MATEMÁTICAS
Como habrás comprobado al probar el juego la pelota se mueve siempre en la misma dirección 90º para moverse hacia el jugador 2 y -90º para moverse hacia el jugador 2. Así el juego es muy previsible y aburrido.
Para que el juego fuera más entretenido podrías hacer que cada vez que la pelota chocara con uno de los jugadores saliera rebotada un ángulo diferente.
¿Cómo puedes hacerlo? Mira el conjunto de bloques Operadores. Es de color verde.Hay diferentes bloques. Uno de ellos es número al azar entre ... y ... Este bloque significa que cada vez que se ejecute este bloque Scratch elige un número diferente entre los número que pongas.
Repasa de nuevo el esquema de los ángulos de la página 13 e inserta en el bloque apuntar en dirección el bloque número al azar entre ... y ... Tienes que insertarlo en el hueco que ahora pone 90º y en el apuntar en dirección que pone -90º.

REBOTANDO
Ahora ocurre una cosa muy rara: cuando la pelota llega a uno de los bordes -el de arriba o el de abajo- la pelota se queda pegada a ellos y no rebota. Para que la pelota rebote en los bordes hay un bloque que ejecuta una orden muy sencilla, pero muy útil: rebotar si está tocando un borde que incorporaremos a nuestro programa.
El programa debe quedar así:
¡¡Prueba el programa!! Ahora la pelota está rebotando constantemente.
Aunque un jugador no llegue a golpear la pelota, ésta sigue rebotando incluso en los bordes izquierdo y derecho. Lo que realmente te gustaría sería que, además, el programa pudiera contar los puntos del Pong.
Para ello tenemos que hacer que el programa se dé cuenta cuando la pelota llega a uno de los bordes, el del izquierdo que corresponde al jugador 1 o al derecho que corresponde al jugador 2, y así podrías saber qué jugador ha ganado el punto.
¿Te atreves a programar esto?
PISTAS:
1º Tienes que añadir un par de objetos más: serán las líneas de fondo. ¿Dónde habría que colocarlas?
En definitiva esto es una interactuación entre objetos, ¿no? Acabamos de ver cómo hacer para que dos objetos interactúen, ¿lo recuerdas?
2º ¿Cómo puedes programar para que cuando la pelota toque la línea de fondo el juego se reanude? Vas a programar los siguiente: si la pelota toca una de las dos líneas de fondo la pelota tiene que volver a la posición x= 0 y= 0.
ESPERANDO
¿Qué pasa con la pelota cuando toca uno de los fondos? El juego se reanuda, pero demasiado rápidamente y a los jugadores no les da tiempo a prepararse.
Hay un bloque que permite detener un programa y que éste se quede parado hasta que se puse una tecla. El bloque es esperar hasta que ... ¿Dónde tienes que colocar este bloque? Es muy sencillo inténtalo y pruébalo.
VARIABLES
Ya nos queda poco para que puedas tener tu programa Pong y entretenerte un rato jugando con quien quieras. Sólo nos queda incluir un marcador.
El marcador inicial es 0-0, pero si el jugador 1 por ejemplo, gana un punto el marcador será 1-0. Si el jugador 2 empata el marcador pasaría a ser 1-1. O si, por el contrario, es el jugador 2 el que gana otro punto el marcador sería 2-0.
El marcador va cambiando a medida que cada uno de los jugadores va ganando puntos.Para ir actualizando el marcador necesitamos lo que en matemáticas o en programación se llaman variables.
Una variable no es más que una cantidad que va cambiando a medida que se va ejecutando un programa, en nuestro caso a medida que vamos jugando al programa, es decir, al Pong. Como va cambiando de valor no podemos llamarle con un número concreto -1, 2, 7, 19, sino que le tenemos que dar un nombre.
En Scratch hay un conjunto de bloques llamado Variables.
Haz clic en él. En este conjunto de bloques no hay bloques. Pero sí dos botones:
1. Nueva variable.
2. Nueva lista.
Efectivamente, tienes que hacer clic en nueva variable para crear una nueva variable.
Lo primero que te pide Scratch es que le des un nombre. Llámalo como quieras, pero el nombre tiene que estar relacionado con lo que va a llevar la cuenta esta variable. Por ej: tanteo 1, marcador 1 son nombres que relacionan la variable con el contenido de la variable. Por  ej: perro, casa, puente, son nombres válidos de variables pero no identifican a la variable con su contenido, por lo que no serían nombres muy oportunos.
Con una variable se pueden hacer cuatro cosas:
1. fijar un valor.
2. cambiar un valor.
3. mostrar variable.
4. esconder variable.
No es mucho, pero es suficiente para trabajar con ellas.
En el programa hay que hacer dos cosas:
1. Fijar un valor, al principio del programa.
2. Dentro del bucle, ir cambiando el valor de la variable en el momento en el que corresponda.
Piensa:
¿Dónde tendrás que incluir el bloque fijar variable?
¿Qué valor tiene que tener la variable al principio del programa?
Vamos, vamos ¡¡pruébalo!! Una vez que ya has fijado el valor de la variable al principio del programa, ahora tienes que pensar:
¿Dónde tendrás que incluir el bloque cambiar variable? La respuesta a esta pregunta está relacionada con: ¿En qué momento del programa quieres que la variable cambie de valor?
Pues si las respuestas a estas preguntas son correctas ya tienes el programa con el tanteador del jugador 1. Y, como has venido viendo a lo largo del programa, los bloques que van programando al jugador 1, sirven también para el jugador 2.
Ahora te dejo que pienses en algunos cambios y mejoras que quieras introducir en el programa. Es la fase creativa y de investigación del proyecto Pong.
Te doy un par de pistas: puedes cambiar el color de algunos de los objetos para que sea más vistoso, incluir algún sonido, y varias cosas más si le das rienda suelta a tu imaginación.

Acá tienes una versión de Pong, puedes comparar con la tuya. PONG


Fuente: https://docs.google.com/document/d/1fY9aTImPtOgQSeukinqhWs9KH7ozlodp5ulNrqREvKY/edit

No hay comentarios.:

Publicar un comentario