www.iplacex.cl
PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº I
OBJETOS EN EL MUNDO
www.iplacex.cl 2
Desarrollo
Introducción
Antes de empezar este curso, es necesario que tengas una pequeña introducción a la
programación.
Programación:
Es un lenguaje para que te entiendas con la máquina, imagínate que vas a otro
país que habla otro idioma, sería necesario que supieras algunas reglas del idioma
para poder comunicarte y se genere algún entendimiento común.
El proceso comienza por el programador, quien se encarga de crear un código
fuente. Este código es revisado por un Compilador y cuando es correcto, se produce
un Programa o Software.
Formas de Programar
Existen 3 grandes formas que un programador utiliza para crear un código.
1. Programación Estructurada:
Es un paradigma de programación orientado a mejorar la claridad,
calidad y tiempo de desarrollo de un programa de computadora, utilizando
únicamente subrutinas y 3 estructuras: secuencia, selección e iteración.
2. Programación Funcional:
Es un paradigma de programación declarativo basado en el uso de
funciones matemáticas.
3. Programación Orientada a Objetos:
Es un paradigma que busca representar objetos observables
tangibles o intangibles mediante su comportamiento y estados.
SEMANA 1
www.iplacex.cl 3
Paradigma Orientado a Objetos
En esta asignatura nos dedicaremos a representar la programación mediante el
enfoque de los paradigmas orientado a objetos.
Observar los objetos:
La observación de objetos se basa en identificar que representa y darle un
nombre, por ejemplo, Perro y tiene características tales como color, tipo de pelaje, a
este conjunto cuando cambia de valor en el tiempo se le llama estado, por ejemplo, el
color del perro cambia cuando está limpio.
Representar los comportamientos:
Los objetos tienen formas de actuar, por lo que asociar un verbo a partir de lo
que hace, crea la representación de su comportamiento.
Programar plantillas de objetos (Clases):
Cuando uno quiere representar esto en un programa, esto se hace mediante
archivos que declaran todo lo observado del objeto, a este archivo de le llama “Clase”.
Greenfoot
Greenfoot es un ambiente interactivo de desarrollo Java para propósitos educacionales.
Permite la creación de aplicaciones gráficas en dos dimensiones, como simulaciones y
juegos.
Lo primero que debes hacer, es instalar Greenfoot en tu computador. Podrás
descargarlo en el siguiente link
https://www.greenfoot.org/download
Puedes hacer click en el ícono de Windows para descargarlo y seguir las instrucciones
de instalación.
https://www.greenfoot.org/download
www.iplacex.cl 4
Interfaz de usuario de Greenfoot
Para comenzar a usar el programa, debes hacer doble click en el ícono de
Greenfoot que apareció en tu escritorio.
También puedes ir a Windows y escribir Greenfoot para buscar el programa y
abrirlo. Esta es la interfaz de Greenfoot que verás una que el programa este abierto.
www.iplacex.cl 5
Lo primero que debes hacer es crear un nuevo escenario. Para eso, debes hacer
click en la parte superior izquierda, en la pestaña Scenario
.
Se desplegará la pestaña y podrás hacer click en donde dice new Java Scenario.
www.iplacex.cl 6
Aparecerá esta ventana, en donde debes escribir el nombre de tu archivo, y
presionar el botón create.
Se abrirá tu nuevo proyecto y podrás ver lo siguiente:
www.iplacex.cl 7
Veamos una descripción de algunas de las partes de la interfaz de Greenfoot:
Clases: En este espacio se encuentran las clases de tu juego. En
ellas podrás crear a tus personajes y sus comportamientos, así como
cambiar el tamaño, apariencia y características del fondo.
Mundo: Este espacio en blanco que aparece al centro de
la interfaz se llama mundo, y es el lienzo en el que podrás
colocar las piezas de tu videojuego y verlo funcionar.
Botón Act: Este botón te permitirá ver un paso a paso de lo que está
ocurriendo en tu juego, y comprobar cómo está funcionando.
Botón Run: El botón Run hace que corra el juego, es decir, lo inicia
para que puedas jugarlo y ver su funcionamiento. A diferencia del
botón Act, no se verá el paso a paso.
Botón Reset: Este botón hará que el juego regrese a su estado inicial.
Speed: Con este control deslizante podrás
aumentar o disminuir la velocidad a la que corre tu
juego.
www.iplacex.cl 8
¿Qué es paradigma orientado a objetos?
Es una forma de codificación que se popularizó a mediados de los 80´.
Es una representación del mundo real a través de objetos prediseñados.
Estos objetos ofrecen funcionalidades particulares para resolver un problema.
¿Qué es un objeto?
Un objeto es una entidad, que tiene sus propias características y comportamientos.
Aquí tenemos algunos ejemplo:
¿Qué es una clase?
Es una serie de atributos y métodos que definen comportamientos en los objetos.
Es decir, es un diseño, un molde, que puede producir uno o muchos objetos.
¿Qué es un método?
Es un comportamiento que tiene un objeto.
Una clase puede tener muchos métodos.
Se pueden activar en el momento y orden deseado para controlar el comportamiento
del objeto.
www.iplacex.cl 9
Pensemos en un ejemplo:
Imagina que tenemos la clase Vehículo. Sus características (atributos) podrían
ser que tiene ruedas y pedales. Sus comportamientos (métodos) pueden ser acelerar o
frenar.
A partir de esta descripción, podrías crear varios vehículos diferentes, que
compartan estas características. Por ejemplo, un auto, una camioneta o un furgón.
Crear clases en Greenfoot
Ahora que ya sabes lo que son los Objetos, Clases y Métodos, vamos a crearlos y ver
cómo funcionan en Greenfoot para comenzar a hacer tu propio videojuego.
Para crear una nueva clase en Grennfoot, debes hacer click derecho en la clase Actor
que ya viene por defecto al crear tu proyecto. Al desplegarse un ventana, debes elegir
la opción New subclass. Al elegir esta opción, crearás una subclase de la clase Actor.
Esto significa, que tu nueva clase será una extensión de Actor y heredará sus métodos.
www.iplacex.cl 10
Luego verás una ventana en que podrás colocarle un nombre a tu clase y elegir una
imagen de ícono. Recuerda que en Java, los nombres de las clases deben escribirse
siempre con la primera letra mayúscula.
www.iplacex.cl 11
Una vez este creada tu clase, podrás verla de esta forma:
Ya que la clase ha sido creada, ahora podrás instanciarla en el escenario. Esto
quiere decir que puedes colocar a tu personaje en el mundo de Greenfoot para
observarlo y ver su comportamiento, pero además, ya que es una instancia, puedes
copiarlo las veces que quieras, y tener a muchos personajes en el escenario.
Para instanciar la clase, primero debes hacer click derecho sobre la clase que creaste y
seleccionar la opción new persona(). Al hacer esto, aparecerá el ícono que
seleccionaste para tu clase, y podrás arrastrarlo con el mouse y dejarlo en el mundo,
en la posición que desees.
www.iplacex.cl 12
Veamos el código
Pasaremos a ver el código fuente que se encuentra
dentro de nuestro personaje, con el que podremos
controlar su comportamiento.
Para entrar al código de la clase que haz creado,
debes hacer doble click sobre la clase.
Al hacerlo, se abrirá otra ventana con el código que
contiene esta clase.
www.iplacex.cl 13
Este código aparece por defecto al crear una clase. Si te fijas, ya existe un método que
se encuentra vacío, llamado act(). Este método es el encargado principal de controlar el
comportamiento de esta clase, y es aquí en donde podrás escribir todas las acciones
que deseas que realice. El método act se ejecuta automáticamente al momento de que
le pongas play al juego, y se repite una y otra vez de forma cíclica.
www.iplacex.cl 14
www.iplacex.cl
PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº I
OBJETOS EN EL MUNDO
www.iplacex.cl 2
Desarrollo
¿Qué es el código fuente?
Es el código escrito por un programador.
El código debe ser traducido posteriormente a lenguaje binario para ser entendido por
la máquina.
En Greenfoot, utilizaremos el lenguaje de programación Java.
Tipos de Código Fuente
El término código fuente se utiliza para describir el tipo de codificación. Dependerá del
lenguaje de programación que se use, como por ejemplo, HTML, Php, JavaScript o
Java
¿Cómo se organiza el código?
Los códigos en Java son organizados en orden, generalmente por bloques de código.
Los bloques de código inician y finalizan con una llave { }
SEMANA 2
www.iplacex.cl 3
Importe de paquetes de clases
Comentarios
Cáscara de la clase
Definición de atributos
Definición de métodos
www.iplacex.cl 4
Frames
Como haz visto, el código de Greenfoot se encuentra dividido en bloques o frames de
diferentes colores, verde, amarillo y blanco.
Esto nos ayudará a mantener el
código ordenado y entenderlo
rápidamente.
El frame blanco cubre el área de
instrucciones.
El frame verde cubre el área de la
clase.
El frame amarillo cubre el área de los
métodos.
www.iplacex.cl 5
Método act
Como ya hemos visto, en Greenfoot el método act() aparece por defecto al crear una
clase.
Act() es un método con la particularidad de que se repita una y otra vez al momento de
correr tu juego, de forma cíclica.
Observa este código. Se ha agregado el código move(5); dentro del método act.
Lo que se ha indicado aquí es que el personaje al que pertenece este código se mueva
con una velocidad de 5.
Lo que ocurrirá aquí será que, una vez instancies el personaje en el Mundo y corras el
juego, verás que este se mueve hacia la derecha, hasta chocar contra el borde del
Mundo. El método act() se está repitiendo de forma cíclica, es decir, cada vez vuelve a
repetirse el código que está dentro de él, por lo que el personaje se mueve
continuamente, hacia la derecha a la velocidad indicada.
www.iplacex.cl 6
Uso de parámetros
El parámetro es un dato que puede o no venir entre paréntesis en un método. Por
ejemplo, puede ser un nombre, o una cantidad, de la que podremos disponer al
momento de usar el método.
Si te fijas, el método act tiene un paréntesis al final ( ). Todos los métodos tienen ese
paréntesis, que a veces puede estar vacío (cuando hablamos de un método sin
parámetros) o puede contener uno o varios datos (en ese caso, hablamos de un
método con parámetros).
Método sin parámetros
Método con parámetro
El parámetro que se encuentra en el método, tiene primero la palabra int. Cuando
colocamos un parámetro, lo primero que debemos hacer es señalar qué tipo de dato
es. Si es un número entero, se llama int. Si es un valor de tipo alfanumérico, como un
nombre, se llama string. Luego, puedes agregar el nombre del dato, que en este caso,
se llama distancia.
Lo que vemos aquí, es que el dato distancia es de tipo numérico, y que ha sido
utilizado dentro del método para señalar la velocidad a la que se moverá este objeto.
www.iplacex.cl 7
Cuidados de sintaxis e indentación
Es común equivocarse al momento de escribir el código, y encontrarnos con que éste
no funciona.
Puede encontrar incompleto (que falte un punto y coma al final, o que no se encuentra
una llave de cierre).
Para mantener ordenado el código, se coloca una tabulación entre la clase y el método,
o entre el método y la instrucción, como se ve en la imagen. Estos espacios son
llamados indentación.
www.iplacex.cl 8
Compilación
Cuando haz terminado de escribir un código, debes presionar el botón Compilar que
se encuentra en la parte superior izquierda en Greenfoot.
Inmediatamente después, podrá ver en la parte inferior un mensaje que dirá que el
código ha compilado correctamente o que hay un error.
www.iplacex.cl 9
Detalla la Idea
Proceso de compilación
El código fuente escrito por un programador genera un archivo .java
Al compilarlo y estar correcto, se genera el Bitecode archivo .class
Luego, archivo.class es interpretado por la máquina en código binario.
www.iplacex.cl 10
Orden del código fuente
Importación de paquetes de clases:
En la primera línea, vemos un import que permite acceder a clases del sistema
de Greenfoot. Esto significa, como veremos en detalle más adelante, que podremos
colocar métodos en nuestro código que ya se encuentran preparados en Greenfoot y
que nos permitirán lograr nuestros objetivos de manera más rápida y eficiente.
Comentarios de la clase:
En todo código fuente, existe la posibilidad de colocar comentarios. Estos son
indicaciones que deja el programador para mantener el código ordenado y usarlos
como una guía, pero realmente, no producen cambios en el comportamiento de los
objetos, como si no fueran parte del código.
Cáscara de la clase:
La cáscara de la clase es el nombre que se la da a esta línea de código en la
que se encuentra escrito el nombre de la clase, en donde inicia el código para esta
clase.
Atributos de la clase:
Los atributos son datos o variables pertenecientes a esta clase. Al igual que
cuando colocamos un parámetro, se escribe primero qué tipo de dato es (int o string
por ejemplo), y luego se coloca el nombre de la variable. Más adelante, en el código, se
le da el valor a esta variable.
Métodos de la clase:
Finalmente, se encontrarán los métodos, dentro de los frames de color amarillo.
Pueden ser todos los que sean necesarios, y definirán el comportamiento del objeto.
Los métodos pueden ser agregados al código, pero no necesariamente producirán un
efecto. Para eso, es necesario activar o llamar al método. En Greenfoot, el método act()
es el único que se activa automáticamente al correr el juego. Por lo tanto, todo lo que
coloques dentro de act() será lo que ocurra en el juego. Para mantener un orden en el
código, lo que hacemos es crear métodos fuera de act(), y luego, dentro de act()
colocamos una llamada a esos métodos, lo que hará que se activen y comiencen a
funcionar.
www.iplacex.cl 11
Código por defecto y código agregado
Cuando hablamos de código por defecto, nos referimos al código que ya viene en
Greenfoot, el cual nos ayuda a trabajar más rápido que si hiciéramos todo desde cero.
Por ejemplo, el método act() ya viene al momento de crear tus clases. También lo son
los códigos que vienen en el importe de paquetes de clases.
Pero también podemos crear un código desde cero. Cuando queremos agregar
funcionalidad, es necesario agregar nuestro propio código. Instrucciones, atributos,
métodos o llamadas a métodos son códigos que es posible agregar.
Herencia
public class Abeja extends Actor
¿Recuerdas esta línea de código? Esta es la cáscara de la clase que hemos
mencionado anteriormente. Si te fijas, dice extends Actor. Lo que nos está diciendo
esta línea es que la clase Abeja es una clase que extiende de Actor.
Esto señala que la clase Abeja es una especialización de la clase Actor, Abeja
es un tipo de Actor. Significa que Abeja tiene acceso a todos los métodos que se
encuentren dentro de Actor. Por ejemplo, cuando agregamos el código move(5); este
es un método que hace que la Abeja se mueva, pero el código específico se encuentra
en la clase Actor, y solamente lo llamamos desde Abeja. Es decir, cuando escribimos
move(5); solamente estamos activando un método que ya existe, pero que podemos
llamar desde las subclases de Actor.
Actor es una superclase y Abeja es una subclase.
En la imagen, vemos la flecha que señala que
Abeja es una subclase de Actor.
Abeja también es un Actor, que hereda todos los
métodos que provee la superclase Actor.
www.iplacex.cl 12
Llamadas a métodos
En programación, es normal crear nuevos métodos y hacer que a su vez, estos sean
llamados desde otro método.
Esto mejora la calidad del código, haciéndolo más ordenado y legible. Nos da la
posibilidad de utilizar un mismo método varias veces si es que es necesario, en vez de
tener que escribirlo de nuevo cada vez que sea necesario realizar una acción.
Métodos privados y métodos públicos
Los métodos de una clase pueden ser públicos o privados.
El término privado o público se denomina modificador de acceso
Método público:
Significa que quedan disponibles para otras clases del proyecto. Los
métodos pueden ser llamados de una clase a otra.
Ejemplo:
public void girarAbeja()
{
}
Método privado:
Corresponde a los métodos que solo son accesibles dentro de la misma
clase.
Ejemplo:
Private void girarAbeja()
{
}
www.iplacex.cl 13
Demuestra
Ahora veremos de forma práctica lo que hemos aprendido a hacer en Greenfoot.
Cómo crear un escenario nuevo en Greenfoot.
Para crear una escena nueva en Greenfoot, lo primero que debes hacer, una vez
abierto el programa, es click en la pestaña Scenario, que se encuentra en la parte
superior izquierda de la interfaz. Al desplegarse la pestaña, debes elegir la opción New
Java Scenario Aparecerá una ventana nueva, en la que deberás elegir en dónde se
guardará tu nuevo archivo y podrás colocarle un nombre.
www.iplacex.cl 14
Cómo setear la imagen de fondo.
Al crear tu proyecto, lo primero que verás será lo siguiente.
Puedes ver que la clase MyWorld aparece creada por defecto. Si queremos, por
ejemplo, cambiar la imagen de fondo de nuestro escenario, debemos modificarlo dentro
de esta clase, la que está representando el Mundo. Para eso, debes hacer click
derecho sobre MyWorld y seleccionar la opción set Image. Aparecerá una ventana en
la que podrás elegir una imagen. Ya que estamos hablando del fondo del escenario,
deberías seleccionar la imagen de la carpeta que dice Backgrounds.
Crear nuevos actores (clases)
www.iplacex.cl 15
Para crear una clase nueva de tipo actor, que serán los personajes del videojuego,
debes hacer click derecho en la clase Actor . Luego debes elegir la opción New
sublcass. Con esto, estarás creando una clase nueva, que sea una subclase de Actor.
Luego aparecerá una ventana en la que podrás ingresar el nombre de la clase, y
seleccionar una imagen.
www.iplacex.cl 16
Cómo hacer que un objeto se mueva
Lo primero que debes hacer es ingresar al objeto que quieres que se mueva. Para eso,
debes hacer doble click sobre la clase. En una ventana nueva se abrirá el código por
defecto que tiene el objeto.
Para que el objeto se mueva, simplemente debes colocar el siguiente código dentro del
método act()
move(5);
El número que aparece dentro del paréntesis indica la velocidad a la que se
moverá el objeto. Si quieres que se mueva más rápido, debes ingresar un número
mayor. Si quieres que se mueva más lento, debes ingresar un número menor.
En Greenfoot, el movimiento de los objetos está definido por el eje x (horizontal )
y el y (vertical). El eje x comienza al inicio del mundo del lado izquierdo, lo que significa
que irá aumentando hacia la derecha. Por esto, en este caso, el personaje se mueve
hacia la derecha del mundo, aumentando en el eje x. Si por ejemplo, cambiamos el
código a move(-5); el objeto se movería a la misma velocidad hacia el lado izquierdo
del mundo, hasta chocar con el borde.
www.iplacex.cl 17
Cómo hacer que un objeto gire
El código para que un objeto gire es similar al código para que un objeto se mueva:
turn(5);
Al igual que en el anterior, el número en el paréntesis se puede cambiar para elegir la
velocidad a la que gira el objeto. Si es un número positivo, el objeto girará hacia la
derecha, si es un número negativo, el objeto gira hacia la izquierda.
Instanciar un objeto en el escenario
Para crear un objeto en el escenario, simplemente debes hacer click derecho sobre la
clase que quieres colocar en el mundo y elegir la opción new. Verás que en el cursor
del mouse aparece la imagen que haz elegir para tu personaje. Debes mover el mouse
hasta el lugar el mundo en donde quieres dejar a tu personaje y hacer click ahí. Esto
significa que haz instanciado a tu personaje en el mundo. Puedes instanciar a tu
personaje la cantidad de veces que quieras.
Luego puedes hacer click en Run y verás el comportamiento que tiene el
personaje que haz instanciado.
Ahora observa el siguiente código:
www.iplacex.cl 18
isAtEdge() es una función que tiene Greenfoot. Significa “está al borde”. Lo que este
código quiere decir, es que si el objeto está al borde del mundo, se cumple una
condición y entrará al código dentro de ésta, que es girar. Pero si no se cumple la
condición, solamente continuará moviéndose.
Lo que veremos a correr este código es que el objeto se mueve continuamente hacia la
derecha, en una velocidad constante. Pero en el momento en que toca el borde el
mundo, el objeto cambia de dirección. Luego continuar avanzando a una velocidad
constante. Al chocar con otro borde del mundo, volverá a girar, y seguirá repitiendo
este ciclo continuamente.
Esta es una forma de usar las condiciones en programación, logrando que el objeto
tenga diferentes comportamientos de acuerdo a lo que sucede en el juego.
www.iplacex.cl 19
[Escribir texto]
PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II
COMPORTAMIENTO DE OBJETOS
www.iplacex.cl
Desarrollo
Organiza la idea
¿Qué es una conducta aleatoria?
Proceso de cálculo: Una conducta aleatoria comienza con un proceso de cálculos
de una fórmula predeterminada.
Datos aleatorios: Los resultados arrojan valores numéricos al azar.
Reflejado en comportamientos: Los valores al azar pueden ser canalizados hacia
un objeto causando diferentes comportamientos.
¿En qué utilizamos la conducta aleatoria?
Los datos aleatorios son producidos por fórmulas matemáticas.
Estos resultados servirán para establecer diversidad en el comportamiento de los
objetos en Greenfoot.
Métodos para generar conducta aleatoria
En los videojuegos es frecuente visualizar objetos moviéndose al azar.
Greenfoot tiene un método llamado: getRandomNumber() que permite obtener
valores aleatorios para usar en el comportamiento de los objetos.
Clase Métodos con datos aleatorios
Objetos
SEMANA 3
www.iplacex.cl
Qué son los métodos estáticos
Un método estático es accesible sin necesidad de instanciar su clase.
Basta con escribir el nombre de la clase donde reside, punto y el método.
Este tipo de método siempre está disponible para usar en cualquier momento.
Se utiliza este método de tipo estático para obtener el número random:
www.iplacex.cl
Qué son los métodos dinámicos
Un método dinámico es accesible solo al crear o instanciar un objeto de la clase.
Recordemos que la palabra new permite instanciar un nuevo objeto.
Probabilidad en una
conducta aleatoria
Pueden calcular una
probabilidad de acción en un
actor.
Un valor 100 en getRandomNumber arroja un valor aleatorio.
Al especificar menor que 10, la probabilidad es de 10%.
www.iplacex.cl
Refactorización
Código claro: escribir código con nombres y variables entendibles.
Funcionalmente bien diseñados: Que cumplan la tarea completa.
Métodos breves: Esta técnica también se llama Cohesión.
www.iplacex.cl
Detalla la idea
Conducta aleatoria
seleccionando
comportamientos:
Recordemos que un bloque if
ejecuta entre llaves cuando
la condición es verdadera.
Un método estático aleatorio
getRandomNumber puede
seleccionar un
comportamiento.
El código dice que si el número aleatorio es menor al valor 10, se ejecutará un giro
de valor 5. Si no, entonces no ocurrirá nada.
De esta forma, podemos
seleccionar un movimiento de
manera aleatoria.
Otro caso de selección de
comportamiento
Nota que la conducta aleatoria
ahora tiene otro comportamiento
adicional.
Si la condición es verdadera, el objeto Abeja girará. Si no lo es, se moverá.
www.iplacex.cl
Creando una probabilidad
con conducta aleatoria
La probabilidad de veces que se
ejecute un bloque de código
dependerá de nuestra condición.
Considerar que getRandomNumber incluye número enteros entre. Si es 100,
considera entre 0 a 99.
Si la condición indica menor (
www.iplacex.cl
Refactorizando código
Observa el siguiente código:
La clase puede contener otros métodos que sean invocados.
Este tipo de técnica se conoce como una refactorización del código.
El método act hace una llamada al método girarAbeja.
Con eso se logra una mejora en el desarrollo del código.
www.iplacex.cl
Demuestra
Observa este código para que
veamos de manera más práctica lo
que hemos aprendido. Lo que
estamos haciendo aquí es crear
una variable, cuyo valor es
aleatorio. Luego le indicamos al
objeto que gire de acuerdo a ese
valor aleatorio.
int numero: es el nombre de la
variable que creamos. Primero
indicamos de es de tipo número
entero (int), luego indicamos que
se llama numero. Cada vez que
llamemos a esta variable, será por
su nombre, numero.
Greenfoot.getRandomNumber(50): Luego indicamos que la variable numero es
igual a este valor. Lo que nos dará esto será un número aleatorio, entre 0 a 49.
turn(numero);: lo que indicamos aquí es que el objeto gire(turn), pero en vez de
ingresar un número entero como lo hemos hecho otras veces, hacemos un
llamado a nuestra variable aleatoria.
Como la variable ha sido creada dentro del método act, veremos que cada vez
que el método act se repite, la variable obtiene un nuevo valor, de 0 a 49, ya que
vuelve a sacar un número aleatorio. Si por ejemplo, creáramos nuestra variable
antes del método act, obtendría su valor aleatorio una sola vez al momento de
reproducir el juego. Pero como está dentro de act, el valor vuelve a cambiar cada
que act se repite. Por esta razón, podemos saber que el movimiento del objeto no
será completamente constante.
www.iplacex.cl
Ahora observa este código que ha
sido modificado:
Lo que vemos ahora es que el
comportamiento del objeto cambia de
acuerdo a una probabilidad.
Se ha agregado una condición, en la
que indicamos que solo si el numero
es menor a 10, ocurrirá una acción. Si
no, ocurrirá otra. Usamos una
condición if para tener un 10% de
probabilidad de que se active la
acción de girar.
www.iplacex.cl
Observa este código: Tiene
una pequeña diferencia con el
anterior.
Hemos movido todo nuestro
código fuera del método act, y
le hemos dado un nuevo
nombre al método. Se llama
probabilidadGirar().
Como se encuentra el código
ahora, al momento de correr
el juego, no ocurrirá nada, ya que no hay nada que esté activando nuestro nuevo
método. Sólo se reproducirá lo que se encuentra en act, pero ya que está vacío,
no veremos ningún comportamiento en el objeto.
www.iplacex.cl
Para activar nuestro método, debemos hacer una llamada a él desde act. Para
hacerlo, solamente escribimos el nombre del método y ; dentro de act
La siguiente imagen tiene una refactorización un poco más compleja:
Observa que desde el método act se hace una llamada al método
comportamientoCompleto(), y a su vez, desde este método se hace una llamada al
método probabilidad().
www.iplacex.cl
www.iplacex.cl
PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II
COMPORTAMIENTO DE OBJETOS
www.iplacex.cl 2
Desarrollo
Colisión en los juegos
Existe colisión cuando dos objetos tienen la misma coordenada x e y.
Ambas coordenadas pueden producir un nuevo comportamiento.
Por ejemplo: “Cerdo come manzana”
Comentarios
Muchas veces es necesario comentar nuestro propio código fuente.
Con el fin de describir cuál es la funcionalidad de los componentes de la clase.
Esto servirá para que otros programadores comprendan mejor el código. Incluso a
nosotros mismos.
o Comentarios de línea múltiple
Utilizamos este formato cuando queremos escribir varias líneas de
comentarios:
/**
*Este es el comentario
*de línea múltiple
*/
o Comentarios de línea simple
SEMANA 4
www.iplacex.cl 3
Utilizamos este formato cuando queremos escribir una sola línea de comentario:
//Este es un comentario de línea simple
Planificar programación
o Top-Down
Una estrategia de programación es comenzar de lo más general a lo más particular.
A esta forma de programar se le conoce como Top-Down.
Este diseño consiste en una serie de descomposiciones sucesivas del problema inicial.
o Bottom-Up
Esta estrategia de programación considera diseñar con detalle y luego enlazar
componentes mayores.
A esta forma de programar se le conoce como: Bottom-Up.
www.iplacex.cl 4
Reutilización del código
La reutilización considera invocar los métodos que ya se encuentran escritos.
Si un programa o clase requiere ejecutar el mismo código, sólo se invoca al método
que lo contiene.
Ahorra trabajo y tiempo formando parte de un buen diseño.
El ejemplo muestra como la ClaseA y ClaseC reutilizan el métodoHacer de la ClaseB.
www.iplacex.cl 5
Usuarios
El término usuario hace mención a la persona que utiliza el producto aplicación.
El usuario es la persona final que hará uso de la herramienta.
Normalmente, no tiene acceso al código de programación del lenguaje.
Entrada corresponde al ingreso de datos de parte del usuario hacia la aplicación.
Salida, será los datos procesados por la aplicación produciendo la “información”.
La información ayuda a los usuarios a tomar mejores decisiones dependiendo del
contexto de la aplicación.
www.iplacex.cl 6
Método act
Como hemos visto anteriormente, en Greenfoot el método Act() aparece por defecto al
crear una clase.
Act() es un método con la particularidad de que se repite una y otra vez al momento de
correr tu juego, ejecutándose de forma cíclica.
www.iplacex.cl 7
Detalla la Idea
Detectar colisiones
Como se mencionó, Greenfoot utiliza coordenadas para establecer ubicación de los
objetos.
Podemos generar colisión de los objetos y hacer que produzca un nuevo
comportamiento.
www.iplacex.cl 8
Colisiones en Greenfoot
Observemos este código.
Vemos un método comer(), el cual es invocado desde el método act() de Cerdo.
Utilizando el método getOneObjectAtOffset() señala que las coordenadas de
Cerdo con respecto a la manzana son 0,0 de distancia.
De ser así, entrega el objeto Manzana.
Por otra parte, mundo corresponde a una subclase de World.
Finalmente, se remueve (usando el método removeObject()) el objeto manzana
del mundo.
Este evento hace que se produzca un nuevo comportamiento entre los actores.
www.iplacex.cl 9
Comentarios en Greenfoot
Los comentarios nos permiten documentar nuestro código.
Esto permite aclarar más la codificación.
Los comentarios pueden ir en la cabecera de la firma del método, como líneas
múltiples.
O bien, puedes ser de línea simple con //
www.iplacex.cl 10
Comentarios Javadoc
Como hemos visto, los comentarios nos permiten documentar nuestro código.
Los comentarios javadoc permiten la documentación del código cuando lo agregamos
sobre la firma del método.
Note que son comentarios de línea múltiple.
www.iplacex.cl 11
Visualizar documentación
En el lenguaje Java, existe un archivo llamado Javadoc, el cual se hace a partir de los
comentarios que dejamos en el código, transformándolos en un documento.
En Greenfoot, al hacer click en la parte superior derecha generamos la documentación
Javadoc.
Nuestros comentarios se convierten automáticamente en un documento de nuestro
proyecto.
Este documento nos servirá para futuras consultas técnicas del proyecto.
www.iplacex.cl 12
Planificar Top-Down
Si ponemos la planificación de programación Top-Down en greenfoot, comenzando
desde lo más general a lo particular, iniciaríamos el Fondo desde la clase World.
Posteriormente, comenzaríamos por los actores y sus detalles.
www.iplacex.cl 13
Planificar Bottom-Up
Al contrario, si ponemos la planificación de programación Bottom-Up en Greengoot,
desde lo particular a lo general, comenzaríamos por los actores con detalle.
Posteriormente hasta al código de World.
www.iplacex.cl 14
Reutilizar el código
Reutilizar código permite ahorrar tiempo y trabajo.
Si el código está en un método este puede ser invocado las veces que sea necesario.
De esta manera se evita reescribir nuevamente código que ya existe.
www.iplacex.cl 15
Detectar teclado
En un videojuego, necesitamos detectar el teclado o mouse, que utilizará el jugador
para interactuar.
En la documentación o API de Greentoo existen métodos que facilitan la lectura de las
teclas y click del mouse.
El método isKeyDown() puede leer casi cualquier tecla del teclado estándas.
El método mouseClicked(); en cambio, leerá los click que hagamos en el proyecto.
www.iplacex.cl 16
Leer teclado
El método isKeyDown() puede leer inclusa las flechas de dirección del teclado
(derecha, izquierda, arriba, abajo).
El método mouseClicked(); en cambio, lee mediante el mouse cuando hacen un click
sobre “este” (this) objeto.
De esta forma, podemos darle al jugador el control del personaje.
www.iplacex.cl 17
Este código nos indica que si una tecla
es presionada, la flecha derecha, el
personaje se moverá “5” hacia la
derecha.
En este caso, se indica lo mismo, pero
en dirección a la izquierda al presionar
la flecha a la izquierda.
En este código, se indica que el
personaje se moverá hacia arriba en el
eje Y al presionar la tecla hacia arriba.
Aquí también podemos ver que se
indica lo mismo, pero en dirección hacia
abajo, al presionar la flecha hacia abajo
en el teclado.
En este último código, podemos ver que
se indica que el personaje se moverá al
ocurrir un click en el mouse.
Finalizar un juego
www.iplacex.cl 18
Finalizar un juego requiere utilizar el método estático stop() de Greenfoot.
Al pasar la ejecución del proyecto por esa línea, se detendrá en forma automática.
En el ejemplo, el if pregunta si el
objeto manzana tiene un valor
(distinto de null).
De ser así, se detendrá el juego.
www.iplacex.cl 19
Leer documentación
Al igual que nuestras clases, hemos visto que Greenfoot posee sus propias clases y
métodos.
Pueden ser consultadas en Internet y revisar tanto clases y métodos a las cuales
tenemos acceso a utilizar en nuestros proyectos.
La API de Greenfoot es la documentación oficial de la herramienta.
www.iplacex.cl 20
Demuestra
Vamos a practicar lo que hemos aprendido.
Comenzaremos por crear un nuevo proyecto de Greenfoot, con un Fondo. En este
caso, crea 2 actores, para que podamos hacerlos colisionar entre sí.
Como se ve en la imagen, hemos creado la clase Abeja, y la clase Flor como Actores.
También está la clase Fondo, para el escenario.
Lo primero que debes hacer es entrar al código de la clase Abeja, haciendo doble click
en la clase.
El siguiente es el código que hemos usado para que exista colisión entre la Abeja y la
Flor, haciendo que esta última desaparezca del escenario al momento de ocurrir la
colisión:
www.iplacex.cl 21
Observémoslo paso a paso:
En primer lugar, hemos
agregado este código en
el método act.
En las dos primeras
líneas simplemente le
hemos dado movimiento
(move (1)) y giro (turn(1))
a la clase Abeja, para
que se mueva al momento de correr el juego. En la tercera línea, llamamos a un
método que será creado por nosotros en el código que continúa, el cual es el
encargado de la colisión de los dos objetos.
En segundo lugar, vemos el método que hemos creado, llamado
comportamientoColisión()
Lo que hacemos aquí es llamar a otro método que ya existe en Greenfoot, llamado
getOneIntersectingObject(), que es el encargado de saber cuándo dos objetos han
www.iplacex.cl 22
intersectado. Ya que nos encontramos dentro de la clase Abeja, lo que queremos saber
es si la Abeja ha intersectado con otro objeto, el cual debe indicarse dentro de los
paréntesis, al final del método, en donde dice Flor.class. Es decir, aquí indicamos que
queremos saber si Abeja ha intersectado con la clase Flor.
El método getOneIntersectingObject de Greenfoot nos dará una respuesta, verdadero o
falso. Lo que quiere decir que Actor Flor es igual a verdadero o a falso.
Actor flor = True/false
Por lo que, en la siguiente línea de código, lo que colocamos es una acción que
depende de esta respuesta.
Lo que hacemos aquí es pregunta si Actor flor es nulo (falso). Al colocar el signo de
exclamación ! , indicamos lo opuesto a lo que dice. Es decir, esta línea pregunta si flor
no es igual a nulo. En caso de que no sea nulo, es decir, en caso de que sea
verdadero, ingresaremos a este código.
Lo que indica la siguiente parte del código es que se remueva al objeto flor del
escenario si es que flor no es nulo.
www.iplacex.cl 23
Observando el código de la clase Abeja, nos damos cuenta de que la programación
comienza desde el método act.
Luego, invoca otros métodos, es decir, ejecuta desde aspectos generales a
particulares.
A este concepto se le conoce como Top-Down.
www.iplacex.cl 24
Comentarios
Los cometarios Javadoc son
una manera de documentar
nuestro código de
programación. Para ellos,
escribimos sobre la firma del
método. Se escribe /** luego
presionamos enter y el resto de
los símbolos aparecen por sí
solos.
Es código es ignorado por el
compilador de Java, por lo cual
no se ejecuta.
www.iplacex.cl 25
Para ver nuestros comentarios en un documento o informe, debemos hacer en la parte
superior derecha del código, en donde dice Source Code y elegir la opción
Documentation.
Al elegir esta opción, podremos ver el siguiente documento:
www.iplacex.cl 26
Ahora observa el siguiente código. Hemos agregado un nuevo método con el que
podemos controlar el movimiento usando el teclado.
Con este código,
indicamos que la Abeja
avance hacia adelante
solamente al presionar la
tecla derecha del teclado.
También hemos hecho un
llamado a este método
desde el método act. De
esta forma, podemos
hacer que el personaje
sea controlado por el
jugador.
www.iplacex.cl 27
Por último, vamos a agregar un código para que el juego se detenga al momento de
que la Abeja se coma a la Flor.
Observa el código. Hemos agregado al
final la siguiente línea:
Greenfoot.stop();
Este es un método estático que tiene
Greenfoot, por eso escribimos la palabra
Greenfoot antes del punto. Esto hará que
el juego se detenga. Lo colocamos
después de que se ha removido la Flor del
mundo, para que el juego termine cuando
el jugador se ha comido a la Flor.
www.iplacex.cl 28
www.iplacex.cl
PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº III
ESTRUCTURAS DE CONTROL
www.iplacex.cl 2
Desarrollo
Organiza la Idea
Métodos constructores
Un método constructor tiene por finalidad inicializar atributos de una clase.
Se escribe exactamente igual a la clase.
Es el primer método que se ejecuta en una clase.
Un constructor en ocasiones podría recibir un valor. De ser así, tiene un parámetro de
entrada.
Los parámetros se declaran en el paréntesis.
El parámetro de entrada servirá para entregar el valor al atributo, estos tienen el mismo
nombre.
La palabra this indica que es el atributo de esta clase y que recibe el valor del
parámetro.
Constructor sin parámetros
Constructor con parámetros
SEMANA 5
www.iplacex.cl 3
Estado inicial de un objeto
Un método constructor inicializa el estado de un objeto.
El estado del objeto es el valor que tienen sus atributos en ese momento.
Esto puede ser muy útil para tener un mejor control inicial de los atributos de nuestra
clase.
Por ejemplo, observa este código. Tiene los atributos girar y
velocidad.
En la parte azul del código, estos atributos inicializan en un
estado. En este caso, girar inicia con valor 10, velocidad inicia
con valor 5.
Add object en Greenfoot
Para agregar un objeto al escenario de Greenfoot utilizamos el método addObject();
Indicamos el objeto y las coordenadas donde queremos que aparezca.
www.iplacex.cl 4
Animar imágenes en Greenfoot
La animación de imágenes permite dar más realismo al personaje.
La técnica clásica de colocar varias imágenes con diferentes posiciones.
En videojuego, el conjunto de imágenes recibe el nombre de: Sprite.
Se crea un objeto de un sprite y luego se actualiza con el método setImage();
Variables de instancia
Una variable de instancia también es llamada miembro de dato.
Está relacionada con la instancia de una clase.
El objeto lleva consigo estas variables que determinan su “estado”.
www.iplacex.cl 5
Private o public
Un atributo y un método pueden presentar un modificar de acceso: público o privado.
Public será cuando creemos que este método debe ser accedido por otros desde otras
clases.
Private cuando consideramos que solo la clase a la que pertenece tiene acceso.
Variables de objetos
Una variable de objeto es producida a partir de una clase.
La palabra new está asociada a esta nueva variable.
El objeto y punto accede a los métodos que generan el comportamiento.
Detalla la idea
Como crear una variable de instancia
www.iplacex.cl 6
Una variable de instancia se declara fuera de un método, a continuación de la cáscara
de la clase.
Las variables son declaradas con visibilidad privada de manera que para cambiar el
valor se hará dentro de un método.
Esto conlleva el concepto llamado “Encapsulamiento”.
Variable de instancia
www.iplacex.cl 7
Encapsulamieno
Normalmente, las variables de instancia permanecen encapsuladas.
Definidas como privadas en la clase y
ocultas dentro de métodos.
La idea es ocultar los detalles de la
clase frente a las demás.
Como ventaja da al programar más
libertad en la implementación de los
detalles de un sistema.
Constructor de la clase.
Como sabemos, los constructores inicializan el estado de un objeto.
Es el primer método en ejecutar al
momento de instanciar.
Un constructor se escribe público y
con el mismo nombre de la clase.
En la imagen apreciamos como las
variables de instancia son
inicializadas.
Métodos constructores
www.iplacex.cl 8
Hemos visto que los constructores
inicializan el estado de un objeto.
Cuando instanciamos un objeto
podemos hacerlo con datos
iniciales en un constructor sin
parámetros.
Cuando necesitamos instanciar un
objeto con datos ingresados
agregamos parámetros en el
paréntesis del constructor.
Intercalar imágenes
Greenfoot incluye código que hace
posible trabajar las imágenes para dar el efecto de movimiento.
Para ello necesitamos algunas imágenes secuenciales también llamadas “sprite”.
Estas imágenes las agregamos en la carpeta image de nuestro proyecto.
Para intercalar las imágenes debemos definirlas como variables de instancia.
Luego instanciar objetos de cada imagen.
www.iplacex.cl 9
Para mostrarla, debemos invocar el método setImage();
En el ejemplo, un if pregunta si la tecla flecha a la derecha ha sido presionada, de ser
así, moverla (velocidad 5), con la imagen 2,
El comportamiento del objeto Iron irá cambiando de acuerdo a la tecla presionada.
Define variables de imágenes
Instancia objetos con las imágenes
Muestra la imagen
www.iplacex.cl 10
Variable de objeto en la imagen
Para intercalar las imágenes debemos definirlas como variables de instancia
Estas variables son llamadas también como variables de objetos.
Variables de objetos debido a que en el método constructor utiliza la palabra new para
instanciar un objeto de la imagen.
www.iplacex.cl 11
Demuestra
Vamos a practicar lo que hemos aprendido.
Comienza por crear un nuevo escenario de java en greenfoot, con un fondo y un actor.
Ahora, entremos al código del actor para comenzar a modificarlo.
Observa el siguiente código:
Una variable de instancia contiene un valor que define el estado del objeto.
Un método puede definir y recibir un parámetro de entrada y luego pasar el valor a la
variable de instancia.
Una variable de instancia puede ser usada en todos los métodos de la clase que lo
requieran.
Ahora observa lo que ocurre cuando
instancias la clase en el escenario.
Aparece una ventana, en la que debes
ingresar un número.
www.iplacex.cl 12
Observemos el código nuevamente.
Encontramos que existe un constructor. Un constructor es un método que se escribe
con el mismo nombre de la clase.
Un método
constructor sólo se
ejecuta una vez y al
inicio de la ejecución
puede recibir uno,
muchos o ningún
parámetro.
Los parámetros, como
hemos visto, son
asignados a las variables de instancia marcadas con this.
www.iplacex.cl 13
Ahora veamos cómo hacer un personaje, cuyos movimientos sean animados.
Para comenzar, necesitamos buscar un grupo de imágenes que funcionen como una
animación. Debes estar recortadas en formato png y debes agregarlas a la carpeta
“images” de tu proyecto de Greenfoot. Así estarán listas para usarlas.
Para crear a tu personaje animado, lo siguiente que debes hacer es crear una nueva
clase. Esta vez, debes
elegir una de las imágenes
que ha guardado al
momento de crearlo, y
darle un nuevo nombre.
www.iplacex.cl 14
Ya que haz creado a tu personaje, entra al código haciendo doble click en la clase.
Lo primero que haremos, será
crear 3 variables antes del
método act, con los nombres
imagen1, 2 y 3. Estas variables
serán las que contendrán las 3
imágenes que queremos que
tenga el personaje.
Luego, dentro del
método act,
indicamos cuáles
serán las
imágenes que
estarán
contenidas en las
variables que ya
creamos. Esto es
lo que se ve en las 3 primeras líneas de código.
En la línea siguiente, indicamos que el personaje aparecerá con la imagen1 primero.
Y por último, hacemos un llamado al método mover, que se explica más adelante.
www.iplacex.cl 15
En el método mover, primero se coloca una if, indicando que el código sólo se activará
al presionar la flecha derecha del teclado.
Luego, al entrar al
if, lo primero es que
el personaje tiene
un movimiento de
velocidad 5. Lo
siguiente, es que la
imagen del
personaje cambia
por la segunda
imagen. Luego,
llamamos a un
método delay, que
hace una espera antes de cambiar a la imagen siguiente. Y así es como las imágenes
se van alternando con una pequeña pausa entre sí.
Esto hace el efecto de un personaje animado.
Este es el código completo.
www.iplacex.cl 16
www.iplacex.cl
PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº III
ESTRUCTURAS DE CONTROL
www.iplacex.cl 2
Desarrollo
Estado en Greenfoot
El estado es un concepto que está relacionado con el valor que tiene el objeto.
Las variables de instancia son las que toman el valor y dan el estado al objeto.
Estado complementado con comportamiento
El comportamiento de un objeto puede ir variando en el transcurso de la ejecución del
proyecto.
El estado-el valor del objeto- puede afectar el comportamiento.
Veamos el siguiente ejemplo.
Un parámetro con el mismo nombre de la variable de instancia es evaluada. Si cumple
la condición mayor que cero, se suma a la velocidad actual.
La palabra this hace referencia a la variable de instancia declarada al principio de la
clase.
SEMANA 6
www.iplacex.cl 3
Diferencias entre = y ==
Existen diferencias notorias entre = y ==
En java, usamos = para asignar un valor a una variable.
El primer recuadro asigna 5 a
la variable velocidad.
Por otra parte, el signo ==
significa igualdad.
Por otra parte, el signo ==
significa igualdad.
En el ejemplo del segundo
recuadro, la condicionante if
pregunta si velocidad es igual
a 0.
Usando código if –else de Java, es posible cambiar el flujo de la ejecución de un
proyecto.
El if hace una pregunta (si velocidad es mayor que cero) si la respuesta es verdadera,
ejecuta un bloque de código.
www.iplacex.cl 4
Si la respuesta del if es false, ejecuta el bloque else.
Con esto, el flujo de bifurcación afectará
comportamiento dependiendo de una
condicionante.
Flujo de bifurcación con if-else
Al llevar la lámina anterior al código, apreciamos
que existe una bifurcación del flujo a seguir.
Dependerá de la respuesta que genere el if
Si la respuesta es verdadera, ejecuta el primer
bloque de código entre llaves.
Si la respuesta es falsa ejecuta el bloque else
restando 1 a velocidad.
Desde una subclase de World
podemos codificar métodos que
permitan el conteo de elementos del
escenario. comerManzana aparece
como una variable de instancia de
una clase Fondo.
Si encuentra un objeto de la clase
Manzana, invoca el método comer y
suma 1 a la variable comerManzana.
www.iplacex.cl 5
Detalla la idea
Creando un contador
En este ejemplo, un contador es una variable que nos permitirá contabilizar las
manzanas a comer.
Un contador es declarado como variable de instancia de esta manera, para ser usada
en los métodos de la clase.
El if evalúa presionar la tecla flecha derecha, mueve 5 y luego invoca al método
comer().
www.iplacex.cl 6
Agregar contador
Continuando el código anterior, manzana obtiene un objeto si las coordenadas 0, 0
coinciden.
Luego if pregunta si es distinto de null, es decir, si manzana tiene un valor asignado.
De ser así, remueve el objeto manzana, ejecuta un sonido con el método playSound.
Suma 1 al contador. La idea que cuenta el número de manzanas que come el
personaje (clase Cerdo).
El signo = en el contador significa asignación donde contador es actualizado con la
suma +1.
Un segundo if pregunta si contador es igual (==) a 10. De ser así, ejecuta un archivo de
sonido “felicitaciones.wav” al método comer().
www.iplacex.cl 7
Flujo de bifurcación
Revisemos los if del método comer.
Las estructuras if pueden presentar bifurcación en el flujo del código.
El primer if como hemos revisado, pregunta si la variable actor de manzana tiene un
valor.
Si tiene un valor remueve el objeto manzana.
El segundo if pregunta si la variable contador es igual a 10. Si la respuesta es
verdadera, ejecuta el archivo de audio felicitaciones.wav y luego detiene la ejecución.
Si l respuesta del if es falsa, ejecuta el bloque else acciona un archivo de audio
comer.wav y suma 1 al contador.
Con esto, confirmamos que la estructura if varía la bifurcación del flujo de la ejecución.
www.iplacex.cl 8
Contar objetos del mundo
Contar objetos puede ser de utilidad si pensamos en que puede afectar el
comportamiento de objetos.
Tal como revisamos en el ejemplo anterior, una variable contador suma 1 por cada
“manzana” comida.
Por lo tanto, es el contador que nos indica la cantidad de objetos.
www.iplacex.cl 9
Mostrar puntajes
Desde una subclase de World instanciar (new) objeto de una clase Contador.
Luego agregarlo al fondo con el método addObject en las coordenadas 100, 40
www.iplacex.cl 10
Mostrar datos de puntaje
La clase Contador como subclase de Actor tiene una variable puntaje.
El método setImage muestra el título Puntaje con el tamaño y color.
Null significa que el texto no tendrá color de fondo.
Para usar estos parámetros descritos se debe importar el paquete de clases java.awt
en la cabecera del archivo.
www.iplacex.cl 11
Demuestra
Vamos a practicar lo que hemos aprendido.
Para comenzar, crea un escenario nuevo en Greenfoot, con una Fondo y una Clase.
Luego, entra al código de la clase que hayas creado.
Lo primero que haremos será crear un Contador. Para esto comenzamos agregando el
código public int contarDistancia antes del método act, en la clase, como se ve en la
siguiente imagen.
Con esto, hemos creado una variable que usaremos para contar.
www.iplacex.cl 12
Ahora, vamos a crear el método avanzar, para darle movimiento al personaje y,
además, contar la distancia que avanza, usando el contador. Así debe ser el código:
Con esto, hemos creado el método avanzar y le hemos hecho un llamado desde el
método act,, para activarlo.
www.iplacex.cl 13
Sólo nos falta una cosa. Debemos crear un constructor el cual le dará un estado inicial
a la variable contarDistancia que habíamos creado. Recuerda que la variable existe,
pero el programa aún no sabe cuál es su valor. Con el siguiente código, le indicamos
que el valor de la variable comienza en 0.
Fíjate que hemos agregado el
constructor arriba del método
act, y ya le hemos dado un
valor inicial a la variable
contarDistancia.
Observemos de cerca el código
que hemos creado. Ya
sabemos que creamos la
variable, y que le dimos un valor
de inicio. Lo siguiente que nos
indica el código, es que cada
vez que el jugador presiona la
tecla derecha, el personaje
avanzará con velocidad 5 y,
además, la variable
contarDistancia tendrá un
aumento de 1.
Cuando tengas tu código listo, presiona el botón compile y asegúrate de que está
escrito correctamente. Luego, haz una prueba de tu juego. Lo que debe ocurrir, es que
el personaje se mueva cada vez que presiones la tecla derecha en el teclado. Aún no
podemos ver el contador, aunque ya lo hemos creado.
Lo siguiente que debemos hacer, es agregar un contador en pantalla, para que
podamos ver el avance del personaje. Para eso, entra de nuevo al código de la clase.
Necesitamos cambiar un pequeño detalle del código.
www.iplacex.cl 14
Para poder usar la variable contarDistancia que ya creamos en otras clases, la
cambiaremos por una variable de tipo estática. Para eso, solamente debes cambiar el
código public int contarDistancia por public static int contarDistancia.
Ahora que nuestra variable es de tipo estática, compila ese código y abre el código de
la clase MyWorld o la que hayas creado para el Fon del escenario.
Verás que esta clase, a diferencia de los actores, no tiene un código act por defecto.
Pero eso no importa, ya que puedes crear el tuyo propio.
Luego, colocaremos el código para que mostrar texto en pantalla, como se ve en la
siguiente imagen
www.iplacex.cl 15
Ahora puedes compilar tu código, y hacer una prueba de nuevo de cómo está
funcionando tu juego. Verás que, al momento de mover a tu personaje, aparece un
contador, sumando la distancia que avance.
www.iplacex.cl 16
Top Related