Aprender Java creando un juego (Parte 3)


Hola y buen día a todos mis lectores, esta es la tercera parte del proyecto para desarrollar el inicio de un juego para PC en lenguaje Java utilizando el entorno Greenfoot, (Parte1, Parte 2) aquí les va...
¿Qué comen las tortugas? ¡Pizza!
Lo siguiente, queremos dar a la tortuga algo que hacer: recolectar algo de comida y comerla. Para hacer esto, necesitamos algunos nuevos objetos en nuestro mundo: rebanadas de pizza.  (Así es, nuestra tortuga come pizza. Ésta no es una lección de biologíaEs un juego de computadora.)

¿De dónde vienen los objetos? De una clase. Así que primero, necesitamos crear una clase Pizza.
Damos click derecho en la clase Actor y seleccionar la función New Subclass. En la caja de dialogo resultante, ingresa Pizza como el nombre de la clase, y busca la imagen de la rebanada de pizza en la categoría food. Da click en OK.

Tan pronto como las clases son compiladas de nuevo, puedes añadir unas cuantas rebanadas de pizza (al igual que tortugas) a tu mundo.

Inténtalo. Deja a tu tortuga correr alrededor para recolectar pizza. Te darás cuenta, sin embargo, que la tortuga no come la pizza (aún). Solamente atraviesa la pizza. Arreglaremos eso ahora.

Dos tips
Si estás trabajando y experimentando en Greenfoot un poco, te habrás dado cuenta que necesitas re-crear todos los objetos en el mundo después de cada compilación. Esto se puede volver un poco tedioso después de un tiempo, especialmente si tenemos muchos objetos.

Aquí hay dos tips rápidos para hacer tu vida en Greenfoot un poco más fácil.
  • Puedes dar click + shift en el mundo. Éste es un atajo para crear un objeto de la clase que esté actualmente seleccionada en el diagrama de clase a la derecha.
  • Cuando todos los objetos están en el mundo como quieres que estén al inicio de tu juego, puedes dar click derecho en el fondo del mundo y seleccionar Save the World para guardar este estado del mundo. Este estado va entonces a ser re-creado automáticamente después de cada compilación o reset.


Detección de colisión
OK, tenemos pizza. Tenemos una tortuga. La tortuga está hambrienta.
La última parte qué hacer por hoy es hacer que la tortuga se dé cuenta cuando pasa por alguna pizza y hacer a la tortuga comer la pizza. Para esto vamos a necesitar lo que se llama collision detection (detección de colisión) para detectar cuando hemos pasado por alguna rebanada de pizza. El código completo para hacer esto se encuentra a continuación:



Este código debería ser agregado al final del método act en la clase Turtle. Hay varios nuevos elementos en este segmento de código. Vamos a verlos uno por uno.
La primera línea llama a un método Greenfoot: getOneIntersectingObject(Pizza.class). Este método revisa donde la tortuga interseca un objeto de la clase pizza (o, en otras palabras, pregunta, “¿Estamos tocando una rebanada de pizza?”). Si estamos tocando una rebanada de pizza, este método regresa el objeto pizza que encontramos. Si no, regresa un valor especial, null, que nos dice que no estamos tocando nada.
El símbolo de igual ( = ) en la primera línea es un operador de asignación. Almacena el resultado de nuestra revisión de colisión (el objeto pizza o null) en una variable. Una variable es una parte de almacenamiento donde podemos guardar objetos. En nuestro caso, la variable ha sido declarada usando la siguiente sentencia al inicio de la primera línea:


Esto declara una variable llamada pizza que puede sostener objetos Actor (objetos que viven en el mundo Greenfoot).


Después de la primera línea, la variable pizza sostiene el objeto pizza sobre el que pasamos, o sostiene null si no hemos pasado sobre una rebanada de pizza en este paso.
Ahora sigue otro ejemplo de una sentencia if. En pseudocódigo, el estado de las siguientes líneas sería el siguiente:


La revisión de condición es hecha con la siguiente expresión:

El símbolo !=  significa no igual. Por lo tanto, aquí estamos diciendo, “Si nuestra variable pizza no es igual a null…” El efecto es que la instrucción en el cuerpo de la sentencia if es ejecutada sólo si la variable pizza no es igual a null, eso es, si hemos pasado sobre alguna pizza.

La siguiente línea entonces elimina el objeto pizza del mundo. Se muestra a continuación la versión completa de nuestro método act en esta etapa.

Inténtalo. Una vez que hayas escrito este código, tu tortuga puede caminar alrededor y comer pizza:


Conclusión
En este artículo, aprendiste un poco más sobre escribir código Java, y acerca de algunos métodos útiles de Greenfoot.
  • Las sentencias if pueden ser usadas para ejecutar una acción solo bajo cierta condición.
  • Las sentencias if tienen una condición y un cuerpo. El cuerpo es ejecutado solamente si la condición es true.
  • El método Greenfoot.isKeyDown puede ser usado para revisar presiones de tecla.
  • El método Greenfoot.isKeyDown puede ser usado como la condición en una sentencia if.
  • La detección de colisión puede ser usada para revisar donde un objeto toca a otro.
  • Las variables son usadas para almacenar objetos.
  • El valor especial null es usado para indica que no tenemos un objeto.


Bien, eso es todo por ahora, pero próximamente tendremos mucho más de este interesante proyecto, no se lo pierdan porque pondremos a nuestra tortuga en la mira de un predador. No olviden comentar, compartir, hacer peticiones, plantear sus dudas o criticas abajo, con gusto daré respuesta, saludos.

Traducción: El Blog De Baro.
Escrito por: Michael Kölling.

Comentarios