Está en la página 1de 4

Introduccion a la programacion - Grupo 2

MLBC - 05.05.05
PROBLEMA
Escribe un programa que permita simular los saltos de una rana, dado que la rana conoce sus
posiciones iniciales y un impulso de altura.

Esta altura siempre es la que imprime en el primer salto, en el segundo salto la altura se ve
disminuida en 1 y asi sucesivamente. Es claro que esta altura como su nombre dice indica cuan
alto salta la rana en cada salto, pero tambien es importante saber cual es la distancia de cada
salto, y esta distancia esta dada por tres valores que son generados por ambientes externos a la
rana, sin embargo la rana responde dando saltos de la siguiente Iorma: Sean p, s y t los tres
valores ingresados que gobiernan el patron de salto de la rana, entonces la distancia que la rana
salte en un primer salto esta dada por la suma de p y t, el siguiente salto esta dado por la
distancia anterior alcanzada s y asi sucesivamente hasta que la rana ya no tenga aliento de
altura.

Realiza el modelo que te permita simular este comportamiento. Nos interesa saber las distancias
que recorre la rana en su camino.

QU NECESITAMOS?

Clase Rana Clase prueba
Tiene pos X
Tiene pos Y
Tiene alto de salto
Sabe dibujarse Sabe dibujar una rana (con la ayuda de)
Sabe Despintarse
Sabe saltar de acuerdo a un patron


Clase Pantalla
Que permita dibujar los elementos necesarios de una rana

MODELO

Clase pantalla no se muestra en mi modelo, ya que usaremos la clase Graphics de java

ESPECIFICACIN
Como se dibuja una rana? por ahora la dibujamos como un ovalo verde de 20 de base y 10 de
altura.
Como salta una rana? Teniendo en cuenta la descripcion del problema, se requieren tres datos de
entrada para que la rana pueda saltar, llamemosles y , entonces la distancia se llamara
eso quiete decir que la rana recorre en el eje X unidades, este valor que hemos conseguido
no se debe perder ya que se requiere para el proximo salto, si y solo si aun la rana puede saltar.
Introduccion a la programacion - Grupo 2
MLBC - 05.05.05
Entonces necesitamos guardar el valor de para el siguiente intento. Si nos Iijamos la
distancia del siguiente intento se consigue sumando el y el anterior . Entonces tenemos
una relacion asi:

Datos de primer salto p s t
Calculo de primer salto p t salto

Datos de segundo salto p s t exsalto1
Calculo segundo salto s exsalto 1 salto

Datos de tercer salto p s t exsalto1 exsalto2
Calculo tercer salto t exsalto2 salto



Si nos ponemos a pensar esta relacion de salto con no sabemos hasta cuando sera. Es
mas cada vez requerimos de nuevas variables que crecen en la medida que tenga aliento de salto
(altura) la rana

Pero tambien se puede ver que la relacion se repite, siempre calcula el valor del nuevo salto en
base a tres numeros anteriores, no se necesitan mas, entonces podriamos hacer un corrimiento
de contenidos de modo que quede asi

Datos de primer salto p s t
Calculo de primer salto p t salto

Datos de segundo salto p s t
Calculo segundo salto p t salto


Datos de tercer salto p s t
Calculo tercer salto p t salto

Y asi sucesivamente...

Entonces viene a ser la distancia que la rana recorre y que se desplaza en el eje X, cada
vez entonces la posicion X de la rana debe cambiar, cada que la rana salta debe moverse de
coordenada X, y para eso simularemos este movimiento sencillamente ocultando los anteriores
dibujos de la rana.

PROGRAMA

import java.awt.*;
/**
* Rana que salta en base a la realcion de una
* progresion serial numerica basada en tres valores
* p, s, t y que los nuevos valores de salto se generan
* de acuerdo a p + t.
* La rana salta tantas veces como aliento le quede. este aliento
* es dado por la altura que alcanza en el primer salto, esta altura
* a su vez decrece en una unidad cada vez que la rana salta
*
Introduccion a la programacion - Grupo 2
MLBC - 05.05.05
* @author MLBC
* @version 05.05.05
*/
public class Rana
{
int posX, posY;
int alto;
Rana(int x, int y, int s){
posX=x; posY=y; alto=s;
}
void saltar(int p, int s, int t, Graphics g){
//mientras mas largo es el salto mas bajo salta
//hasta que lleg un momento que sus fuerzas decaen
int salto, largo;
salto = alto;
for(salto =salto; salto > 0; salto--){
largo = p + t;
retardo();
despintar(g);
posX = posX + largo;
dibujar(g);
p = s;
s = t;
t = largo;
}
}
void despintar(Graphics g){
Color color = g.getColor();
g.setColor(Color.white);
g.fillOval(posX, posY, 20, 10);
g.setColor(color);
}

void dibujar(Graphics g){
Color color = g.getColor();
g.setColor(Color.green);
g.fillOval(posX, posY, 20, 10);
g.setColor(color);
}
void retardo(){
//int esta entre [-2147483648,2147483647]
for(int i = 0; i < 214748364; i++);
}
}


import javax.swing.JApplet;
import javax.swing.JRootPane;
import java.awt.Graphics;

/**
* Class Prueba - que prueba el comportamiento
* de la rana saltarina.
*
* @author MLBC
* @version 05.05.05
*/
public class Prueba extends JApplet
{
public void paint(Graphics g){
Rana rene = new Rana(10,10,10);
Introduccion a la programacion - Grupo 2
MLBC - 05.05.05
rene.dibujar(g);
rene.saltar(5,2,1, g);
rene.saltar(-2,-5,-1,g);
}
}

También podría gustarte