taller de programación de videojuegos con scratchtulo: taller de programación de videojuegos con...

25
Taller de programación de videojuegos con Scratch

Upload: truongbao

Post on 17-May-2018

223 views

Category:

Documents


2 download

TRANSCRIPT

Taller de programación devideojuegos con Scratch

Título: Taller de programación de videojuegos con Scratch

Autor: David Caro Gómez-Pastrana

Mayo 2016

Este obra está bajo una licencia de Creative Commons Reconocimiento-CompartirIgual 4.0 Internacional.

Taller de programación de videojuegos con Scratch 2/25

ContenidoTaller de programación de videojuegos con Scratch............................................................................1

Entorno de trabajo............................................................................................................................5Escenario..........................................................................................................................................6Coordenadas.....................................................................................................................................8Objetos.............................................................................................................................................9Disfraces........................................................................................................................................11Sonidos...........................................................................................................................................12Programas......................................................................................................................................13Mejoras al proyecto.......................................................................................................................24Conocimientos adquiridos.............................................................................................................25Resumen del taller.........................................................................................................................25Referencias.....................................................................................................................................25Material de apoyo..........................................................................................................................25

Taller de programación de videojuegos con Scratch 3/25

A la mayoría de nosotros nos gusta jugar a videojuegos, ya sea en videoconsolas de sobremesa (Playstation, XBOX, Wii, etc.), videoconsolas portátiles (PS Vita, Nintendo 3DS, 2DS, etc.), teléfonos móviles, tablets u Ordenadores. Cualquier videojuego está programado utilizando uno o varios lenguajes de programación, que permiten dar instrucciones a la máquina en la que van a funcionar. Aunque no tiene nada que ver como es lógico hacer un juego como Call of Duty o GTA, realizados por una gran compañía en la que participan cientos de personas con perfiles muy diferentes (programadores, artistas, expertos en animación, etc.) con juegos como el primer Angry Birds o Plants Vs Zombies, hechos por un grupo muy pequeño de personas, a veces incluso por una sola persona.

En este caso no vamos a realizar una gran producción, sino un juego muy sencillo. Aprovechando la temática del espacio vamos a crear un juego en el que una nave espacial tiene que esquivar naves enemigas que vienen hacia ella.

La herramienta seleccionada para programar esta actividad ha sido Scratch (https://scratch.mit.edu). Es una herramienta gratuíta creada por el Grupo Lifelong Kindergarten delLaboratorio de Medios del MIT. Puede utilizarse online (sin instalación) siempre que tengamos acceso a internet o instalada de forma local, en cuyo caso no requeriría acceso a Internet salvo para descargarse la instalación. Su uso es totalmente visual, arrastrando piezas encajables de colores querepresentan muchas de las estructuras básicas utilizadas en programación. Permite la creación de juegos, presentaciones e historias interactivas de forma muy sencilla. Hay numerosos manuales gratuitos, vídeos de creación de proyectos en Youtube y en la propia web del proyecto se pueden very crear copias de otros proyectos hechos por otras personas de todo el mundo. La web de Scratch permite compartir los proyectos creados si así lo queremos. Existen complementos que permiten porejemplo programar no sólo juegos e historias, sino también robots basados en placas Arduino o Lego WeDo.

Hay otras herramientas similares, técnicamente más completas y con una base tecnológica totalmente multiplataforma como Snap! (http://snap.berkeley.edu/), pero de las que hay menos recursos educativos y no ofrecen la posibilidad de compartir los proyectos. También hay soluciones privativas de empresas como Lego que permiten programar robots, aunque en este caso tienen un coste económico importante.

Para la realización de esta actividad nos vamos a basar en el editor online de Scratch que tendría la misma funcionalidad que la versión 2.0 del editor offline.

Este documento no es un manual completo de Scratch, sino una guía para realizar paso a paso un juego muy sencillo y explicar los elementos de Scratch necesarios para realizarlo.

Taller de programación de videojuegos con Scratch 4/25

Entorno de trabajoCualquier programa realizado en Scratch puede tener los siguientes elementos:

• Escenarios. Fondos o decorados del programa.• Objetos. Personajes, obstáculos, elementos decorativos, etc. que aparecen en el juego.• Disfraces. Las diferentes imágenes que puede adoptar un objeto. Si tenemos un personaje,

los disfraces podrían ser cada una de las diferentes posiciones que puede adoptar a lo largo del juego (de pie, sentado, saltando, mirando a la derecha, a la izquierda, etc.).

• Sonidos. Archivos de audio que podemos reproducir por los altavoces a lo largo del juego.• Programas. Instrucciones que damos a los escenarios u objetos para que realicen acciones

como moverse, aparecer, ocultarse, reproducir un sonido o hacer un cálculo matemático.

Para comenzar a trabajar en un proyecto desde cero, tendríamos que abrir el navegador y acceder a la dirección https://scratch.mit.edu/projects/editor/, con lo que trabajaríamos en un proyecto vacío. En este caso vamos a utilizar un proyecto de plantilla que ya contiene las imágenes, escenario y sonidos que vamos a utilizar en la actividad: https://scratch.mit.edu/projects/103154689/#editor.

Nos aparecerá el entorno de trabajo, similar al que se muestra en la siguiente imagen:

Si el entorno nos aparece en otro idioma (inglés por defecto) podemos pulsar el icono y

seleccionar Español como idioma en la lista que se desplegará. El entorno de trabajo tiene las

Taller de programación de videojuegos con Scratch 5/25

siguientes áreas:

• Menú y herramientas. Nos permiten cambiar el idioma, crear un nuevo proyecto, cargar un

proyecto que tengamos en nuestro equipo o descargar a nuestro equipo el proyecto con el que estamos trabajando. Los botones permiten duplicar, cortar y cambiar el tamaño de los objetos que seleccionemos.

• Área de Escenario y visualización del programa. Muestra el resultado del programa en

ejecución, el escenario actual y los objetos visibles.

• Área de objetos. Permite seleccionar, añadir y eliminar escenarios y objetos.

• Área de familias de bloques. Categorías de los bloques de programación que facilitan la

localización de dichos bloques..

• Área de bloques. Bloques de programación de la familia que tenemos actualmente

seleccionada en el área de familias y que podemos utilizar para interactuar con los objetos y escenarios.

• Área de edición del objeto seleccionado. Desde aquí podemos añadir disfraces a un objeto,

modificarlos, añadir bloques de programación o sonidos.

EscenarioEl primer paso es elegir el escenario o escenarios para nuestro juego. En la plantilla vienen dos

incluidos, pero si no tuviéramos ninguno lo seleccionaríamos a partir del margen izquierdo del áreade Objetos. Tenemos 4 posibilidades:

• Seleccionar escenarios de la galería de Scratch. Scratch trae de serie muchos

escenarios.

• Dibujar un escenario desde cero con una herramienta de dibujo que Scratch nos

proporciona.

• Subir una imagen que tengamos en nuestro equipo. Scratch utiliza escenarios de 480

píxeles de ancho por 360 de alto, por lo que lo ideal es que las imágenes tengan este formato. Si la resolución es distinta, Scratch lo redimensiona, pero esto puede hacer que se deforme por tener distintas proporciones o que no se vea como esperamos. Las imágenes pueden estar en formato PNG o JPG. Podemos editar, redimensionar, recortar y exportar a diferentes formatos cualquier imagen con herramientas como GIMP (http://www.gimp.org.es/ o https://www.gimp.org).

• Tomar una instantánea con la Webcam de nuestro ordenador.

Podemos cargar varios escenarios que a lo largo del juego podremos cambiar según nos

Taller de programación de videojuegos con Scratch 6/25

interese. En este caso utilizaremos un fondo negro con estrellas para el desarrollo del juego y otro escenario consistente en un paisaje tipo lunar con el texto “GAME OVER” para indicar el fin del juego.

Nos interesa que cuando arranque el juego, el escenario que aparezca siempre sea el del fondo negro con estrellas. Vamos a introducir una instrucción que seleccione este fondo al arrancar el juego. Scratch tiene dos botones para controlar la ejecución de los programas:

Arrancar el programa.

Parar el programa en ejecución.

Aunque trabajaremos en detalle con los bloques de programación más adelante, vamos a ver de forma muy rápida como añadir un bloque de programación que nos permitirá fijar el escenario que queremos que se muestre al arrancar el programa. Primero seleccionamos el escenario en el área de objetos:

Una vez seleccionado el escenario, en el área de familias de bloques seleccionamos la familia Eventos:

Para añadir un bloque de programación arrastramos el bloque que queremos utilizar al área de edición. En este caso vamos a arrastrar el bloque siguiente:

Taller de programación de videojuegos con Scratch 7/25

Este bloque lanza las instrucciones que vayan unidas a él cuando se pulse el botón de arranque.

Vamos a seleccionar la familia Apariencia y arrastrar el bloque cambiar fondo a debajo del bloque anterior. A continuación cambiamos el fondo con la lista desplegable para que muestre el fondo stars. El resultado sería el siguiente.

De esta forma, al arrancar el programa siempre aparecerá en primer lugar el fondo de estrellas.

CoordenadasUna vez definido el escenario, es necesario conocer como podemos referirnos a puntos

concretos del mismo. Una pantalla en Scratch es una cuadrícula de 480 puntos de ancho y 360 puntos de alto. Para referirnos a cada punto de la cuadrícula, utiliza un sistema de coordenadas de dos dimensiones en las que el centro de la pantalla es el punto (0,0). La coordenada horizontal o X varía entre -240 y 240 y la coordenada vertical o Y varía entre -180 y 180. Los puntos situados en lamitad izquierda de la pantalla tienen valores X negativos y los situados en la mitad derecha, valores X positivos. Los puntos situados en la mitad superior de la pantalla tienen valores Y positivos y los situados en la mitad inferior valores Y negativos. Las esquinas tendrían las coordenadas siguientes:

• Esquina superior izquierda: (-240,180), X=-240, Y=180.

• Esquina superior derecha: (240,180), X=240, Y=180.

• Esquina inferior izquierda (-240,-180), X=-240, Y=-180.

Taller de programación de videojuegos con Scratch 8/25

• Esquina inferior derecha (240,-180), X=240, Y=180.

La siguiente imagen muestra el sistema de coordenadas:

ObjetosComo hemos indicado anteriormente, los objetos son personajes o elementos del decorado que

podemos controlar a nuestro antojo. Podemos añadir, eliminar o modificar objetos a través del área de objetos situada en la parte inferior izquierda. Este es el área de objetos del proyecto que estamos utilizando como plantilla. Contiene tres objetos: halcon, tiefighter y explosion. El objeto seleccionado aparece enmarcado en un recuadro azul.

Podemos añadir nuevos objetos de la misma forma que los escenarios, con los botones que

Taller de programación de videojuegos con Scratch 9/25

aparecen en la parte superior izquierda de la imagen:

• Seleccionar un objeto de la biblioteca de objetos de Scratch. Trae de serie muchos

objetos, muchos de los cuales a su vez ya incluyen varios disfraces.

• Dibujar un objeto desde cero con una herramienta de dibujo que Scratch nos

proporciona.

• Subir una imagen que tengamos en nuestro equipo. Las imágenes pueden estar en

formato PNG o JPG, aunque en general es mejor utilizar imágenes PNG ya que este formatosoporta transparencia y por lo tanto aquellas partes no “dibujadas” del objeto pueden ser transparentes y dará un mejor resultado superponerlos sobre el escenario u otros objetos. En el caso de un JPG siempre se vería un recuadro completo. Podemos editar, redimensionar, recortar y exportar a diferentes formatos cualquier imagen con herramientas como GIMP (http://www.gimp.org.es/ o https://www.gimp.org).

• Tomar una instantánea con la Webcam de nuestro ordenador.

Al seleccionar un objeto, aparece rodeado por un recuadro azul y además aparece un círculoazul con la letra i en la parte superior izquierda, tal y como se muestra en la siguiente imagen:

Si hacemos clic sobre esa letra i nos aparecerán propiedades que podemos modificar:

En nuestro caso, tienen desactivadas las opciones mostrar (lo que hace que no aparezca inicialmente el objeto sobre el escenario) y puede ser arrastrado, que evita que se pueda arrastrar lanave con el ratón cuando el juego está en marcha. También nos permite rotar el objeto para que apunte en la dirección que queramos. También podemos modificar el nombre del objeto. Podemos

salir de esta ventana haciendo clic en el icono .

Taller de programación de videojuegos con Scratch 10/25

DisfracesCada objeto a su vez puede tener uno o varios disfraces, es decir, diferentes imágenes con las

que se puede mostrar, que reflejarán situaciones o estados diferentes. Por ejemplo podemos tener unobjeto semáforo, que tenga cuatro disfraces:

1. Las tres luces apagadas.

2. La luz roja encendida.

3. La luz ámbar encendida.

4. La luz verde encendida.

Si seleccionamos el objeto explosion y hacemos clic en la pestaña Disfraces, veremos una imagen como la siguiente:

Taller de programación de videojuegos con Scratch 11/25

Que nos muestra cada uno de los disfraces que contiene el objeto y que nos permitirá genera una animación que simule de forma algo más “real” una explosión, mediante la presentación sucesiva de cada uno de los disfraces.

SonidosTanto el escenario como los objetos pueden tener sonidos asociados que el objeto puede

reproducir cuando queramos mediante un bloque de programación. Estos sonidos pueden estar en formato WAV o MP3, aunque es más recomendable el formato WAV, ya que los MP3 a veces se cortan al reproducirse en el editor online. En el proyecto de plantilla está incluido un sonido en el objeto explosion. Para verlo sólo tenemos que seleccionar el objeto y hacer clic en la pestaña Sonidos.

Podemos agregar sonidos mediante los siguientes iconos:

• Seleccionar un sonido de la biblioteca de sonidos de Scratch.

• Grabar un sonido con el micrófono de nuestro equipo.

• Subir un archivo que tengamos almacenado en nuestro equipo. Como he indicado

anteriormente es preferible el formato WAV. Si queréis editar o convertir audio entre estos formatos podéis utilizar un software como Audacity (https://sourceforge.net/projects/audacity/), que es libre, gratuíto y multiplataforma (Windows, Linux y Mac).

Taller de programación de videojuegos con Scratch 12/25

ProgramasLos programas son grupos de bloques de instrucciones que podemos dar a los objetos y

escenarios de Scratch para que realicen tareas. Para que resulte más fácil los bloques se agrupan en familias, cada una de un color determinado:

• Movimiento. Instrucciones para controlar la posición, movimiento y giro de los objetos por

la pantalla.

• Apariencia. Mostrar, ocultar, cambiar disfraces, efectos visuales y generación de bocacillos

de conversación tipo cómic.

• Sonido. Reproducción de sonidos o notas musicales.

• Lápiz. Opciones para dibujar en pantalla.

• Datos. Definición y configuración de variables para almacenar datos.

• Eventos. Generación y recepción de eventos, es decir, mensajes que se envía a la aplicación

para que los objetos actúen en función de esa acción.

• Control. Instrucciones para comprobar condiciones, repetir un número de veces una

secuencia de instrucciones o crear clones de objetos.

• Sensores. Condiciones y situaciones del programa que se pueden detectar.

• Operadores. Elementos que nos permiten realizar operaciones matemáticas, generar

números al azar o realizar comparaciones entre valores.

• Más bloques. Posibilidad de crear nuevos bloques complejos a partir de un bloque sencillo.

Los bloques se pueden arrastrar del área de bloques al área de edición del objeto y se van encajando unos a continuación de otros según la secuencia de instrucciones que queremos que el objeto ejecute. Ya hemos visto un bloque de programación en el escenario, para forzar un fondo concreto al arrancar el programa, mediante un bloque de la familia de Eventos. Los bloques cuya parte superior es curva y no tienen una muesca en la que encajar otras piezas, se denominan bloquessombrero y son los que aparecen siempre en primer lugar, como por ejemplo:

Vamos a comenzar controlando nuestra nave principal. Para ello vamos a seleccionar el objeto halcon y seleccionamos la pestaña Programas. El primer paso será decir qué queremos que haga nuestro objeto cuando arranque el programa. Para ello elegimos la familia de eventos y arrastramos el bloque de la imagen anterior a la derecha. Queremos que la nave aparezca en el centro del eje X yen la parte inferior. Esto lo podemos conseguir con un bloque de la familia de movimiento, concretamente con el bloque ir a x: - y: -. Como coordenada X especificaremos 0, ya que queremos

Taller de programación de videojuegos con Scratch 13/25

que se sitúe en el centro y como coordenada Y indicaremos el valor -135, ya que queremos que esté en la parte inferior pero que no se salga fuera de pantalla. Además de posicionar el objeto, queremosque se muestre, por lo que acudiremos a la familia Apariencia y añadiremos un bloque mostrar. El bloque quedará como sigue:

Si hacemos clic en el botón ahora aparecerá la nave.

El siguiente paso será conseguir que la nave se desplace. Para ello tendremos que utilizar también bloques de la familia Eventos y bloques de la familia Movimiento. Scratch nos da la posibilidad de capturar eventos del ratón, del teclado, de sonido capturado por el micrófono o de movimiento detectado por la cámara. En este caso vamos a controlar la nave con el teclado. Para ello elegiremos el bloque Al presionar tecla y a continuación elegiremos de la lista desplegable una de las teclas que nos permite utilizar. Comenzaremos por el desplazamiento a la derecha, así que elegiremos la tecla Flecha derecha. Después de la familia Movimiento, elegiremos el bloque Cambiar x por. Este bloque cambia la coordenada x actual del borde sumándole o restándole el valor que pongamos en la casilla, según el signo. Puesto que la tecla que hemos elegido en el eventoes Flecha derecha y en cualquier sistema de coordenadas, para desplazarse a la derecha hay que sumar valores a la x, pondremos el valor 5 en la casilla. Que significará que se desplazará 5 puntos cada vez que pulsemos la tecla flecha derecha o cada poco tiempo si mantenemos pulsada la tecla. Cuanto mayor sea el valor, más rápido será el desplazamiento. Siguiendo el mismo sistema podríamos hacer lo mismo con el deplazamiento a la izquierda, eligiendo como tecla la flecha izquierda y como valor x -5. El bloque quedaría así:

Pasaremos ahora al objeto tiefighter. El primer paso sería inicializarlo cuando arranque el programa. En este caso queremos que inicialmente no se muestre y que se espere un número aleatorio de segundos antes de aparecer en la parte superior. aparezca y que luego aparezca en la parte superior. Para ello primero seleccionaríamos el objeto tiefighter y luego añadiríamos bloques Al presionar bandera verde y un bloque esconder de Apariencia. Vamos a utilizar una nueva familia,la de Control, que nos permite decidir en base a valores, cálculos o comparaciones qué hacer. Vamos a incluir el bloque esperar N segundos, al que podemos añadir un valor concreto de segundos. En este caso queremos que el tiempo sea variable. Esto lo podemos conseguir con un bloque de la familia de Operadores, número al azar entre N y M. Este bloque lo podemos arrastrar

Taller de programación de videojuegos con Scratch 14/25

dentro de la casilla elíptica del bloque esperar N segundos, lo que significará que en vez de esperar un número fijo de segundos, esperará un número al azar entre el mínimo y máximo que pongamos. El conjunto quedaría así:

Con este código, al arrancar, además de aparecer la nave halcon, al cabo de un número de segundos variable entre 1 y 5, aparecerá la segunda nave.

El siguiente paso será que aparezca no una nave enemiga sino varias. Dentro de la familia Control están los llamados bucles, que permiten que otros bloques se ejecuten varias veces. Su forma es similar a una letra C, debido a que pueden albergar otros bloques en el interior. En este caso utilizaremos el bucle infinito, llamado por siempre, que ejecuta sin parar los bloques que contenga en su interior hasta que el programa pare, o se lance la instrucción de parar todos los programas.

Podemos cambiar cualquier bloque de posición simplemente arrastrándolo de un lugar a otro.Para eliminar un bloque lo podemos arrastrar de nuevo al área de bloques o hacer clic sobre el bloque manteniendo pulsada la tecla mayúsculas y seleccionando la opción “borrar” del menú que aparece.

Dentro de la familia Control, también está el bloque crear clon de que nos permite generar tantas copias de un objeto como queramos. Lo que haremos será incluir un bloque de este tipo dentro del bucle por siempre y elegir el objeto tiefighter de la lista. Quedaría ahora de la siguiente manera:

Ahora debemos decir a cada uno de los clones como se debe comportar. Para eso utilizaremos otro de los bloques sombrero o bloques iniciales que tenemos en la familia Control Se trata del bloque al comenzar como clon. Seguido a este bloque estableceremos la posición en la que queremos que aparezca el clon con un bloque ir a x:- y:- y conseguiremos que se vea con un bloque

Taller de programación de videojuegos con Scratch 15/25

mostrar.

Queremos que las naves enemigas aparezcan por la parte superior, así que de momento hemos puesto valores fijos, indicando en la coordenada Y el máximo valor posible. Recordemos que el máximo para la coordenada Y es 180. Ahora nos tocaría hacer que la nave viaje hacia abajo. Aunquehay varias alternativas, vamos a utilizar el bucle por siempre que ya hemos utilizado previamente yen cada paso del bucle vamos a modificar las coordenada, restando valores a la coordenada Y. Esto lo podemos conseguir con un nuevo bloque de la familia Movimiento, el bucle cambiar y por , que apesar de su engañoso nombre lo que hace es sumar el valor que escribamos en el óvalo a la coordenada X. Si lo que queremos es situar un objeto en una coordenada Y concreta tendríamos queutilizar el bloque fijar y a de esta misma familia. En este caso, como queremos que las naves enemigas den la sensación de viajar hacia abajo, tendremos que poner un número negativo, para queen cada pasada del bucle se reduzca la coordenada X. En este caso hemos puesto -5. Cuanto más alto sea el valor absoluto, mayores serán los saltos de coordenada en cada pasada y mayor será la velocidad.

Si probamos a ejecutar el programa veremos que comienzan a aparecer naves que viajan hacia abajo, aunque siempre siguiendo la misma trayectoria y vemos que se queda visible cuando alcanzan el borde inferior. Lo que debemos hacer es hacerlas desaparecer cuando alcancen la parte inferior. Para ello tenemos que introducir un nuevo tipo de bloque, que se corresponde con una de las instrucciones más utilizadas en programación: las condicionales. Las instrucciones condicionales permiten realizar acciones si se cumple una condición determinada (o por negación sino se cumple). Al igual que los bucles, los bloques condicionales se encuentran dentro de la familia Control y aunque hay algunas variantes para este caso utilizaremos el bloque si … entonces.

Tiene forma de C, igual que el bloque por siempre, porque se pueden incluir dentro de él las

Taller de programación de videojuegos con Scratch 16/25

instrucciones que queremos que se ejecuten si se cumple la condición. En su cabecera vemos un hueco en forma de hexágono en lugar de un óvalo. Esto quiere decir que ahí debemos incluir un elemento de la familia Operadores y más concretamente del conjunto de las condiciones, que tienenesa forma.

Las condiciones que podemos establecer son mayor, menor, igual, el negado (no) y las uniones que nos permiten combinar dos condiciones:

• Y. Cuando queremos que las dos condiciones sean verdaderas para que el

resultado sea verdadero.

• O. Cuando nos basta que una de las dos condiciones sean verdaderas para

que el resultado sea verdadero.

En este caso como vimos que la coordenada X más baja es -180, lo que comprobaremos es si la posición es menor que ese valor y en caso de que sea así. En la familia Movimiento tenemos unos bloques especiales que no son instrucciones sino variables, es decir almacenes donde se guardan los valores y que podemos consultar. Tenemos variables para la posición X, la posición Y la dirección a la que apunta el objeto. La acción que realizaremos será borrar este clon de la familia de Control. El conjunto de instrucciones quedará como el siguiente:

Si lanzamos ahora el programa veremos que van apareciendo sucesivamente varias naves y desaparecen al llegar a la parte inferior. El problema es que siempre aparecen por el mismo sitio. Para darle más jugabilidad vamos a hacer que puedan aparecer por cualquier coordenada X. Esto lo conseguiremos fácilmente reemplazando en la instrucción ir a x: 50 y: 180 el valor 50 por una instrucción de números aleatorios que varíe entre -200 y 200. Las coordenadas X pueden variar entre -240 y 240, pero si resulta una coordenada 240 o cercana a ella, la nave no se vería completa en la pantalla.

El siguiente paso sería detectar el choque de la nave enemiga con nuestra nave. Para detectar

Taller de programación de videojuegos con Scratch 17/25

colisiones tenemos elementos en la familia de Sensores. Existe un elemento hexagonal llamado ¿tocando ... ? que precisamente permite indicarle si el objeto en el que se ejecuta la instrucción está tocando otro objeto, o el borde de la pantalla o el puntero del ratón. Para comprobar esto tendremos que utilizar un bloque si...entonces y si se cumple la condición generaremos una explosión. La explosión la representaremos con otro objeto. El medio para comunicarse entre objetos son los mensajes. Los mensajes se pueden enviar y recibir a través de instrucciones que existen en la familia de Eventos. En este caso utilizaremos el bloque enviar. Una vez añadido, podemos desplegar la lista y elegir uno de los mensajes que ya exista (si los hay) o crear uno nuevo. En este caso crearemos uno nuevo que llamaremos explosion, aunque el nombre es lo de menos. Además deenviar el mensaje, destruiremos el clon para que desaparezca. Este será el resultado:

Hemos enviado un mensaje y ahora tenemos que añadir la instrucción necesaria para recibirlo en el objeto u objetos que queremos que hagan algo cuando se emita el mensaje, en este caso el objeto explosion. Podemos recibir mensajes mediante el bloque al recibir.

Nos iremos al área de programas del objeto explosión y añadiremos en primer lugar una instrucción esconder al arrancar el programa y luego un bloque al recibir y las instrucciones necesarias para simular la explosión. Para generar la explosión utilizaremos algunos bloques que nohemos utilizado hasta ahora. En primer lugar el bloque tocar sonido para reproducir un sonido de explosión. Luego tendremos que posicionar el objeto explosion en el lugar en el que esté nuestra nave para que se vea en el lugar correcto, para lo que utilizaremos un bloque ir a de la familia Movimiento. En este bloque en vez de coordenadas podemos elegir de una lista el nombre de un objeto o la posición del ratón. En la familia Apariencia tenemos bloques para cambiar el disfraz. El objeto explosion contiene varios disfraces que representan diferentes fotogramas de una explosión.

Taller de programación de videojuegos con Scratch 18/25

Iremos cambiando sucesivamente entre ellos para generar un efecto de animación. Para que no sea demasiado rápido utilizaremos el bloque esperar de la familia Control que añade al programa un retardo. Por último enviaremos un nuevo mensaje que llamaremos terminar explosión, para que podamos continuar con el juego una vez que la animación termine. La animación de la explosión quedará como sigue:

Cuando se produce la explosión, nuestra nave sigue visible y respondiendo al teclado, cuando debería haber saltado en pedazos. Esto lo solucionamos añadiendo en el objeto halcon dos bloques al recibir para los mensajes explosión y explosión terminada, en los que ocultaremos la nave y cuando termine la explosión la situaremos en el punto de partida y la mostraremos.

Igualmente habrá que hacer desaparecer el clon de la nave enemiga que ha chocado con nosotros.

Ahora mismo el juego es infinito, pero vamos a añadir el número de vidas de la nave, que van a ser 3 y el fin del juego si las perdemos todas. Para almacenar valores que queremos mantener durante el programa existen las variables. Podemos crear o utilizar variables ya creadas en la familia Datos. Para crear una nueva variable haremos clic en el botón Crear una variable e

Taller de programación de videojuegos con Scratch 19/25

indicaremos el nombre de la variable (Vidas). Las variables pueden existir para todos los objetos o sólo para el objeto en el que estamos definiéndola. En este caso interesa que esté para todos los objetos. También podemos crear una variable de tipo Cloud, es decir que esté disponible en el servidor para todos los usuarios conectados a nuestra aplicación. Este tipo de variables se pueden utilizar por ejemplo para almacenar el mayor record de puntos.

En el momento que creamos una variable se activan todos los bloques de la familia Datos que permiten trabajar con ellas:

La variable aparece con su nombre dentro de un bloque ovalado. La casilla que aparece a su izquierda permite indicar si queremos que la variable se muestre en pantalla o no. Si se muestra en pantalla podemos definir la posición en la que queremos que aparezca arrastrándola con el ratón porel área de visualización del programa. Además tenemos los bloques:

• Fijar variable a N. Permite asignar un valor concreto a la variable. Esto lo aprovecharemos

por ejemplo al arrancar el programa para inicializar el número de vidas a 3.

• Cambiar variable por N. Permite sumar el valor N al valor de la variable (o restarlo si el

valor es negativo).

• Mostrar variable. Permite mostrar la variable si está oculta dentro del programa.

• Esconder variable. Permite esconder la variable si está visible dentro del programa.

Taller de programación de videojuegos con Scratch 20/25

Vamos a comenzar inicializando el número de vidas al comienzo del programa. Como es una variable global (disponible en todos los objetos, lo podemos hacer en cualquiera de ellos). Podemos inicializarla, por ejemplo en el programa del escenario:

Ahora tenemos que restar una vida cada vez que haya una explosión. Es tan sencillo como añadir el bloque cambiar variable en cualquiera de los bloques al recibir explosion, como por ejemplo en el bloque halcon:

Si ejecutamos el programa ahora veremos que las vidas se van reduciendo cada vez que hay unaexplosión, pero que cuando llega a 0 continua con números negativos. ¿Qué es lo que falta? Pues indicar al programa que cuando el número de vidas llegue a 0, ha terminado la partida. Esto lo podemos hacer de varias formas. La más sencilla es comprobar el valor del número de vidas cuandotermine una explosión y si es 0 declarar el fin del juego, enviando un nuevo mensaje. Lo podemos realizar en cualquier objeto. En este caso utilizaremos el escenario:

Hemos enviado un mensaje que hemos llamado game over cuando las vidas son 0. Ahora lo queharemos es cambiar el escenario y poner el otro fondo que tenemos definido. Esto lo haremos al recibir el mensaje game over en el área de programas del escenario.

Queda un último punto necesario cualquier juego: la puntuación. Para la puntuación crearemos

Taller de programación de videojuegos con Scratch 21/25

otra variable que llamaremos Puntos. El sistema de puntuación que vamos a utilizar es muy sencillo: cada vez que una nave enemiga desaparezca y no haya chocado con nosotros, incrementaremos en 10 los puntos. En el objeto tiefighter, en la condición si posición en y < -180, antes de borrar este clon, añadiremos una instrucción cambiar Puntos por 10.

El programa quedará así:

Otro cambio que tendríamos que hacer es inicializar el número de puntos a 0 cuando comienza el programa, de la misma manera que el número de vidas, ya que de lo contrario se irían sumando entre una partida y otra. Lo haremos en el área de programa del escenario:

Con esto tendríamos la versión básica del juego. Este sería el aspecto de la pantalla principal del juego:

Taller de programación de videojuegos con Scratch 22/25

Y esta la pantalla de fin de juego:

Taller de programación de videojuegos con Scratch 23/25

Mejoras al proyectoSobre esta versión básica se podrían hacer muchas mejoras con más tiempo:

• Que la dificultad vaya aumentando, estableciendo la velocidad de los enemigos (decremento

de la coordenada Y) como una variable en vez de como un valor fijo. Se podría ir incrementando ese valor cuando se van superando ciertos valores en los puntos, por ejemplosumar 1 a la velocidad cada incremento de 100 puntos.

• Que haya varios tipos de enemigos. Podríamos añadir más objetos que se comporten como

el objeto tiefighter o bien añadir más disfraces y elegir un disfraz al azar, con lo que la variedad de enemigos sería mayor.

• Añadir fondos diferentes que vayan cambiando cuando se supere un valor determinado de

puntos.

• Que ganemos una vida cada 1000 puntos, de manera que se compense un poco la dificultad

añadida de la velocidad.

• También podemos aumentar la dificultad según aumenten los puntos definiendo con una

variable el tiempo máximo aleatorio en el que aparecen naves enemigas y haciendo que cadavez sea más corto, con lo que cada vez habrá más naves enemigas.

• También se podría añadir un objeto disparo y que cuando se pulse una tecla (por ejemplo

espacio) se lance hacia arriba y si toca una nave enemiga que explote, aumentando también los puntos. En este caso cambiaríamos el sistema de puntos que pasaría a ser por enemigo eliminado y no por enemigo esquivado.

Taller de programación de videojuegos con Scratch 24/25

Conocimientos adquiridos• Trabajo con ejes de coordenadas en dos dimensiones con ejes positivos y negativos• Animación básica utilizando varios fotogramas• Estructuras básicas de programación (bucles, condicionales, comparadores y variables)• Formatos de audio• Números aleatorios

Resumen del tallerTras una breve explicación de la herramienta hemos creado el juego haciendo mejoras

incrementales:1. Establecer un fondo2. Añadir la nave protagonista y conseguir que se desplace horizontalmente en respuesta a

eventos del teclado3. Incluir una nave enemiga que viajan en dirección a la nave protagonista.4. Generar la aparición de varias naves enemigas5. Generar una explosión cuando nuestra nave choca contra un enemigo6. Añadir un contador de vidas7. Añadir un contador de puntos8. Establecer una pantalla final cuando terminan las vidas disponibles

Referencias• Agracedimiento a skazdal por el diseño de la nave protagonista.

• Web principal de Scratch. https://scratch.mit.edu

Material de apoyo• Web principal de Scratch. https://scratch.mit.edu

• Editor online de Scratch. https://scratch.mit.edu/projects/editor/

• Tutorial de instalación del editor offline de Scratch:

http://www.eduteka.org/articulos/scratch20descargable

• http://programamos.es/ Web con información sobre Scratch en españo.• Proyecto completo terminado en la web de Scratch

(https://scratch.mit.edu/projects/102397809/)• Proyecto plantilla para este tutorial: https://scratch.mit.edu/projects/103154689/#editor• Videos del curso robots y videojuegos, creado por Marco Antonio Rodríguez Fernández para

el MOOC “Robots y videojuegos en las aulas”. https://www.youtube.com/watch?v=qRzvNVtl1AU&list=PLqEro_vpDCG6FMRc4Qx2qs5tLSQhA9Mvc

Taller de programación de videojuegos con Scratch 25/25