- Obtener enlace
- X
- Correo electrónico
- Otras aplicaciones
- Obtener enlace
- X
- Correo electrónico
- Otras aplicaciones
El
juego que continuamos creando en previas entradas se acerca más y más a estar
completo, pero algunas partes siguen perdidas. Hoy, te mostraré como terminar
el juego y—lo
más importante—como compartirlo con tus amigos. Si no nos has acompañado en
este proyecto, revisa cada una de sus partes en este blog (links arriba),
descarga Greenfoot y únete a la diversión.
Finalizando el juego
Actualmente, no
hay forma de ganar este juego. Comes todas las rebanadas de pizza, y nada pasa.
No hay trompeteo, ni un gran anuncio de “¡GANASTE!”. Igualmente, cuando las
serpientes te atrapan, el juego solamente sigue corriendo en silencio. Queremos arreglar
ambas situaciones. Vamos a decir que cuando logres comer 12 rebanadas de pizza,
ganas. El juego se detiene, y oímos un victorioso trompeteo. De todas formas,
cuando las serpientes te atrapan, pierdes. Obtenemos de igual forma un sonido,
y el juego se detiene. El segundo escenario (perder) es fácil de hacer—tenemos
casi todo para eso ya. Así que haremos eso primero, y entonces mirar a la
funcionalidad necesaria para ganar.
Perder (Ser comido por las
serpientes)
Tenemos
ya un efecto de sonido para cuando la serpiente se come a la tortuga (en el
método eat de la serpiente),
el cual usa el método Greenfoot playSound. La primera cosa que haremos es solo cambiar el
sonido a un nuevo archivo de sonido (el cual puedes descargar aquí) nombrado
trombone.wav.
Entonces
añade una nueva línea: una llamada al método Greenfoot stop para detener el juego en este punto. Juntos, el código se ve así:
Nota
que ambos métodos son métodos estáticos de la clase Greenfoot, así que tenemos que escribir el nombre de la clase Greenfoot y un punto antes del nombre del método en la llamada
al método.
Otra alternativa es, usar code
completion. Por ejemplo, después de escribir Greenfoot. (eso es, después del punto), presiona Ctr-Space en tu teclado, y verás una lista de todos los métodos que
puedas llamar hasta ese punto, como se muestra a continuación:
Para descubrir que otros métodos ofrece la clase Greenfoot, elige Greenfoot Class Documentation del menú Help.
Al empezar a escribir un nombre de un método va a reducir las opciones. Entonces elige
cualquiera de los métodos de la lista. Implementar este fin del juego fue
bastante fácil. Hacer una cosa similar para ganar es un poco más de trabajo.
Ganando (Terminando tu pizza)
Queremos
que nuestra funcionalidad de ganar (trompeteo y detener el juego) ocurra cuando
hayamos comido toda nuestra pizza (12 rebanadas). Escogiendo este criterio,
tenemos dos problemas. Primero, actualmente tenemos solo 7 rebanadas de pizza
en nuestro juego. Podemos, por supuesto, simplemente poner 12 rebanadas desde
el inicio, pero eso haría el juego demasiado fácil. En su lugar, quiero hacer
que aparezca una nueva rebanada cada vez que una es comida.
Y
segundo, ahora necesitamos contar cuando hemos comido, de manera que sepamos
cuando parar. Nosotros no sabemos aún como hacer eso.
Haremos
estas dos cosas.
La pizza que aparece
mágicamente
Las rebanadas de pizza que se comen en la clase Turtle—para ser
específico, en el método eat de la tortuga. Así que ahí es donde comenzamos a trabajar. Para
mantener el código limpio, ponemos las instrucciones para crear una nueva
rebanada de pizza en un método separado y llamar a ese método desde aquí. Así
que ponemos una llamada a placeNewPizza() en nuestro método eat, justo debajo de
la reproducción del sonido:
El método placeNewPizza() va a poner una nueva rebanada en el mundo cada
vez que otra rebanada es comida. Este método no existe—vamos a tener que
escribirlo ahora.
El código completo para este método se muestra a continuación:
Veremos que el método eat() llama al método placeNewPizza() y la definición para este nuevo método. Vamos a analizar esto línea por línea.
Para poner una nueva rebanada de pizza al azar
en el mundo, tenemos que lograr tres cosas:
- Crear un nuevo objeto pizza.
- Generar coordenadas al azar.
- Poner la pizza en esas coordenadas en el mundo.
La primera línea en nuestro nuevo método pone:
Hemos visto antes que la llamada a getWorld() nos da una referencia a nuestro objeto mundo actual. Esta vez, vamos a declarar una variable local llamada myWorld (es de tipo World) y almacena el objeto mundo en sí. Esto, por su cuenta, no logra mucho todavía, a parte del hecho de que ahora podemos usar la variable myWorld para “hablar” con nuestro mundo.
En las siguientes dos líneas, vamos a generar las coordenadas al azar y
almacenarlas en dos variables locales de tipo enteras (int):
Hemos visto antes que la llamada a getWorld() nos da una referencia a nuestro objeto mundo actual. Esta vez, vamos a declarar una variable local llamada myWorld (es de tipo World) y almacena el objeto mundo en sí. Esto, por su cuenta, no logra mucho todavía, a parte del hecho de que ahora podemos usar la variable myWorld para “hablar” con nuestro mundo.
Hemos visto ya antes llamadas a los métodos getRandomNumber, getWidth, y getHeight. Aquí, vamos a generar un número aleatorio entre 0 y el ancho del mundo y almacenarlo en la variable x. Entonces haremos
lo mismo para y usando el alto del mundo como límite. Esto nos da coordenadas x y y
al azar que concuerdan con el tamaño exacto del mundo.
La última línea hace la magia:
Aquí, ponemos el nuevo objeto pizza en el mundo. Para hacer esto, estamos usando el método del
mundo addObject. Este método espera tres parámetros: el objeto a ser ubicado, la
coordenada x, y la coordenada y.
Podemos
escribir new Pizza() para crear un nuevo objeto de tipo Pizza, y podemos usar
éste en el lugar del objeto para ser ubicado en el mundo. Entonces podemos usar
nuestras variables x y y (las cuales acabamos de llenar con nuestros valores aleatorios)
en el lugar de las coordenadas.
Lee el código de arriba completo (el que
incluye el método eat y placeNewPizza) nuevamente y asegúrate de
entenderlo. Entones inténtalo por ti mismo.
Contando
la pizza
La funcionalidad hasta ahora nos da un
suministro sin fin de rebanadas de pizza. La siguiente tarea que se debe hacer
es contar cuando hemos comido. Hacemos esto creando un campo (también conocido como una variable instancia) nombrada slices (rebanadas) que se usarán para contar. (Aún
estamos trabajando en la clase Turtle.)
Así es como se ve:
La declaración de campo consiste de la palabra clave private, seguida por el tipo y el nombre para nuestra variable, y un valor
opcional de inicialización. El tipo y nombre (int slices) es el mismo que
hemos visto para una variable local. La inicialización (= 0) asigna cero a la
variable para empezar. Poner esta línea es importante. Las declaraciones de
campo deben hacerse fuera de las definiciones de métodos, así que escribimos
esta línea inmediatamente después de la cabecera de clase (antes de nuestro
método act).
El campo slices puede almacenar enteros (eso es, números
enteros). Actualmente almacena cero. Podemos ahora usar este campo para contar
nuestras rebanadas de pizza. Cada vez que comemos algo de pizza, incrementamos
este campo en 1. Cuando hayamos llegado a 12, reproducimos el trompeteo (el
archivo de sonido fanfare.wav, el cual puedes descargar aquí) y detenemos el
juego.
A continuación se muestra la implementación completa:
Vamos brevemente a examinar los aspectos interesantes.
Tenemos adjunta la siguiente línea: El operador ++, escrito después de una variable int, incrementa (eso es, contar hacia arriba) esta variable en 1. Así que podemos ver que estamos contando hacia arriba cada vez después de eliminar una rebanada de pizza del mundo.
Tenemos adjunta la siguiente línea: El operador ++, escrito después de una variable int, incrementa (eso es, contar hacia arriba) esta variable en 1. Así que podemos ver que estamos contando hacia arriba cada vez después de eliminar una rebanada de pizza del mundo.
A continuación, tenemos las siguientes líneas (con
algunas instrucciones en el lugar de los tres puntos):
Este código revisa si la variable slices es ahora igual a 12 y, si lo es, ejecuta las instrucciones entre el
primer par de llaves. De otra forma (si la variable no es igual a 12),
las instrucciones después de la palabra clave else son ejecutadas. Nota que necesitamos usar un símbolo
de igual doble (==) para revisar si hay igualdad.
Para subir tu propio juego, da click en el botón Share en la parte superior derecha de la ventana principal de
Greenfoot. Al dar click aparece una caja de dialogo que nos permite especificar
algunos detalles para subirlo como se muestra en la siguiente imagen:
Lee el código completo de arriba con cuidado (donde
está el método eat completo). Verás
que este código es usado para reproducir nuestro sonido de sorber y pone una
nueva rebanada de pizza mientras no se hayan comido 12 rebanadas aún. Entonces
reproduce el sonido de las trompetas y termina el juego cuando hayamos comido
12 rebanadas. Intenta el código en tu propia versión del juego.
Compartiendo
tu juego
Ahora que nuestro juego está “completo” en
algún sentido—por
su puesto, ningún juego está realmente terminado nunca—sería grandioso si pudiéramos
hacer que todos nuestros amigos lo probaran. Afortunadamente, podemos.
Greenfoot tiene una función llamada “share” (compartir) que
nos permite subir nuestro programa al sitio web de Greenfoot, donde otros
usuarios pueden jugarlo y darte algo de retroalimentación.
Tú puedes ver todos los scenarios
que otros usuarios Greenfoot han creado dirigiéndote al sitio Greenfoot y
mirando alrededor.
Para poder subir tu juego, debes tener una
cuenta en el sitio Greenfoot. (Si no la tienes, da click en el link Create account.) Puedes explorar y
jugar juegos de otras personas sin registrarte, pero para subir tu propio
juego, necesitas una cuenta.
Una vez que tengas una cuenta, esta caja de
dialogo te deja añadir un título, una descripción, un ícono, y algunas
etiquetas, y entonces puedes subir tu juego. Cuando subes un juego, puedes
elegir si quieres subir el código fuente también. Si lo haces, otros pueden
mirar el código fuente y posiblemente aprender de él o modificarlo por ellos
mismos.
Tu proyecto tendrá una URL única en el sitio
web Greenfoot. ¡Envía ésta a tus amigos para mostrarles las cosas ‘chidas’ (cool) que has hecho!
Pues bien, se terminaron las entradas sobre el proyecto
de la tortuga en Greenfoot, pero quizá vengan algunos otros diferentes, espero
que hayan disfrutado de estas entradas tanto como yo disfrute subiéndolas, ya
saben, pueden suscribirse en la parte superior derecha con solo poner su email
y les llegarán las noticias de mi blog a su bandeja de entrada, los
comentarios, peticiones, dudas o criticas van abajo, saludos :D.
Traducción: El Blog De Baro.
Escrito por: Michael Kölling.
Fuente: Java Magazine.
Entradas Relacionadas:
Aprender Java creando un juego (Parte 5)
Aprender Java creando un juego (Parte 4)
Entradas Relacionadas:
Aprender Java creando un juego (Parte 5)
Aprender Java creando un juego (Parte 4)
aprender java creando un juego
Greenfoot
java
Java Greenfoot
Java magazine
java poo
Juegos
Juegos en java
poo
Principiantes java
Programación
Video juegos
Video juegos Greenfoot
- Obtener enlace
- X
- Correo electrónico
- Otras aplicaciones
Comentarios
Publicar un comentario