Ranas Saltarinas Java

download Ranas Saltarinas Java

of 4

Transcript of Ranas Saltarinas Java

Introduccion a la programacion -Grupo 2 MLBC-05.05.05 PROBLEMA Escribeunprogramaquepermitasimularlossaltosdeunarana,dadoquelaranaconocesus posiciones iniciales y un impulso de altura. Estaalturasiempreeslaqueimprimeenelprimersalto,enelsegundosaltolaalturaseve disminuida en 1 y asi sucesivamente. Es claro que esta altura como su nombre dice indica cuan altosaltalaranaencadasalto,perotambienesimportantesabercualesladistanciadecada salto, y esta distancia esta dada por tres valores que son generados por ambientes externos a la rana,sinembargolaranarespondedandosaltosdelasiguienteIorma:Seanp,sytlostres valores ingresados que gobiernan el patron de salto de la rana, entonces la distancia que la rana salteenunprimersaltoestadadaporlasumadepyt,elsiguientesaltoestadadoporla distanciaanterioralcanzadasyasisucesivamentehastaquelaranayanotengaalientode 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 RanaClase prueba Tiene pos X Tiene pos Y Tiene alto de salto Sabe dibujarseSabe 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 verdede 20 debase 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, llamemoslesy , entonces la distancia se llamaraeso quiete decir que la rana recorre en el eje Xunidades, 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 Entoncesnecesitamosguardarelvalordeparaelsiguienteintento.SinosIijamosla distancia del siguiente intento se consigue sumando ely el anterior . Entonces tenemos una relacion asi: Datos de primer salto pst Calculo de primer saltoptsalto Datos de segundo saltopstexsalto1 Calculo segundo saltosexsalto 1salto Datos de tercer saltopstexsalto1exsalto2 Calculo tercer saltotexsalto2salto Sinos ponemos a pensaresta 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 baseatresnumerosanteriores,nosenecesitanmas,entoncespodriamoshaceruncorrimiento de contenidos de modo que quede asi Datos de primer salto pst Calculo de primer saltoptsalto Datos de segundo saltopst Calculo segundo saltoptsalto Datos de tercer saltopst Calculo tercer saltoptsalto Y asi sucesivamente... Entoncesviene a serla distancia que la rana recorre y quesedesplaza en el eje X, cada vezentonceslaposicionXdelaranadebecambiar,cadaquelaranasaltadebemoversede coordenada X, y para eso simularemoseste movimiento sencillamenteocultando 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); } }