Solicitamos su permiso para obtener datos estadísticos de su navegación en esta web, en cumplimiento del Real Decreto-ley 13/2012. Si continúa navegando consideramos que acepta el uso de cookies. OK | Más información

Scratch - Enemigos que disparan y variables booleanas

En este tutorial de Scratch aprenderemos a hacer que nuestros juegos sean mucho más emocionantes pues conseguiremos que los enemigos disparen al jugador intentando impedir que éste logre su objetivo.

Antes de empezar, recuerda que este programa es sólo un ejemplo y eres tú el que debes adaptarlo, ampliarlo y mejorarlo para que case perfectamente en tu juego.

Para explicar cómo se puede programar que los enemigos disparen, he preparado cuatro objetos para este pequeño juego de ejemplo. Ojo, hay muchas formas de conseguir este objetivo, todo depende de cuál es, realmente, el comportamiento que quieres para los enemigos, cómo van interactuar con el escenario y los demás personajes y, por supuesto, cómo va a afectar todo esto al jugador.

Antes de comenzar a explicar el código es necesario que entiendas que vamos a utilizar un nuevo tipo de variables llamado variables booleanas. Estas variables sólo pueden tener dos valores true o false. En Scratch no podemos poner estas palabras en el valor de las variables por lo que utilizaremos los números ‘0’ y ‘1’ para indicar que una variable activa un proceso (el del disparo del enemigo, en este caso) o lo desactiva.

¡Comenzamos! En primer lugar, para nuestro programa de ejemplo, he diseñado un pequeño juego en el que una bruja pasea constantemente por la parte superior de la pantalla lanzando rayos a una pequeña criatura situada en la parte inferior que intentará derribar a la bruja tirándole lo primero que ha encontrado: naranjas.

Así pues, al comenzar el juego, el personaje debe mostrarse y, para guardar la proporción con el entorno, debe estar al 30% de su tamaño y situarse en la parte inferior de la pantalla. Le diremos, a continuación, que esté ‘escuchando’ qué pasa en el juego y cómo se comunica el jugador con él, por lo tanto, programaremos que se mueva a derecha e izquierda si el jugador pulsa esas flechas de dirección con el teclado. También le enseñaremos a que verifique si uno de los rayos que lanza la bruja impacta con él. En tal caso, cambiará el valor de la variable booleana ‘atacando’ a ‘1’ (esta variable booleana define cómo se comportará, durante todo el juego, el programa del rayo). La variable ‘atacando’ va a determinar si hay disparos en pantalla o no. Si su valor es igual a ‘0’ permitirá que la bruja ataque, si es ‘1’, no; lo veremos en un momento. Además, el objeto se esconderá (puesto que habrá muerto) y enviará el mensaje ‘yanodispara’ a todos los demás objetos pues queremos que ese mensaje sirva para que no haya más disparos en pantalla una vez que se ha acabado el juego. No sería lógico que uno de los personajes que está oculto siga disparando. Por último, vamos a programar un aviso. Si recibe el mensaje que lanza la bruja al morir, nuestro personaje mostrará un texto de victoria en pantalla. El código para todo esto es el siguiente:

Es el turno de hacer el programa para el enemigo. Nuestra bruja comenzará el juego mostrándose en la parte superior de la pantalla, apuntando hacia la izquierda y con el tamaño reducido a la mitad para que no ocupe mucho espacio en pantalla y sea más difícil derribarla. Vamos a indicarle que, durante todo el juego, esté volando por la pantalla de derecha a izquierda y que, si toca un borde, cambie de sentido. Lo interesante viene ahora porque si una de las naranjas que tira nuestro personajillo consigue impactar con la bruja, ésta se va a esconder y va a desactivar su disparo porque fijará el valor de la variable booleana a ‘1’, veremos realmente cómo funciona todo esto en el programa del rayo. Además, enviará el mensaje ‘yanodispara’ y ‘labrujamuere’ para que el juego termine. Este mensaje ‘yanodispara’ puede parecer que no tiene mucho sentido porque lo recibe este mismo objeto pero como también puede enviar dicho mensaje el personaje controlado por el jugador, hemos querido unificar procesos, así que, envíe quien lo envíe, la bruja gritará que le ha ganado la partida al jugador.

Vamos a programar ahora cómo se comportarán los proyectiles que lanzaremos a la bruja. En primer lugar, al comenzar, van a permanecer escondidos y, para nuestro juego (que, quizá, no para el tuyo), siempre van a ir hacia arriba. Cuidado ahora en cómo conformamos el código porque no queremos que el disparo haga cosas raras. Si el jugador pulsa la tecla ‘espacio’, el objeto de la naranja se va a mostrar en la posición en la que esté nuestro personaje, sin importar dónde sea y, una vez hecho esto, va a comenzar su trayectoria vertical. Es muy importante saber que si ponemos que se mueva muy rápido (por ejemplo, 20 o 30 pasos) puede ser que el proyectil no impacte con la bruja a pesar de que parezca que ha pasado por encima. Esto es así porque, realmente, no se ha producido la colisión, sino que se la ha saltado al dar los pasos tan grandes. Una vez que ha finalizado su trayectoria se esconderá.

Y vamos con lo realmente nuevo e interesante de todo esto: la influencia de una variable booleana en un programa como el nuestro. Dijimos que mientras su valor fuera ‘0’, la bruja estaría disparando de forma indiscriminada y continua, si fuese ‘1’ dejaría de hacerlo. Así pues, al comenzar el programa, en el programa del rayo, se fija el valor a ‘0’, es decir, que el disparo de la bruja está activo. Comenzará el juego oculto y con un tamaño menor para que guarde la proporción con la bruja.

Queremos que la bruja dispare continuamente hasta que la variable ‘atacando’ tenga un valor igual a ‘1’, por suerte, tenemos una ficha en Scratch que sirve justo para eso: ‘Repetir hasta que’. En el menú operadores cogemos la ficha de igual, en el menú variables seleccionamos y arrastramos la ficha ‘atacando’ (la variable que hemos creado para este programa) hasta el primer término. En definitiva, habrá disparos enemigos mientras el valor de ‘atacando’ sea ‘0’ y dejará de haberlos cuando cambie a ‘1’.

Si pusiéramos directamente el código para que apareciese el disparo de la bruja, la pantalla se llenaría de rayos y no nos interesa eso, el jugador juega para divertirse y odia que se produzcan situaciones injustas que no podrá superar por mucha pericia que tenga. De este modo, vamos a hacer que el disparo sea aleatorio. En nuestro juego, la bruja disparará de forma frecuente e intensa pero invitamos al programador a que experimente cambiando estos valores. Le indicamos al rayo que elija durante todo el juego un número al azar comprendido entre ‘1’ y ‘3’, si el número obtenido es el ‘3’, lanzará el programa dibujará, en pantalla, un rayo enemigo en movimiento. Al igual que pasaba con la naranja, el rayo irá a la posición en la que está la bruja, se mostrará, apuntará hacia nuestro personaje para darle más emoción y comenzará su recorrido de descenso, tras el cual, se desactivará.

Todo, como ves, es muy sencillo y, nuevamente, te invito a que experimentes con el código y que lo adaptes a tus juegos mejorándolo con todo lo que se te ocurra.

Coméntalo en: Twitter Facebook Google +