La Tortuga y La Liebre

SIMULACION CARRERA CONEJO Y LIEBRE Ing. José Luis García Morales 14 DE JULIO DE 2018 Martin Anastacio Cruz – Emmanuel M

Views 97 Downloads 3 File size 821KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

SIMULACION CARRERA CONEJO Y LIEBRE Ing. José Luis García Morales

14 DE JULIO DE 2018 Martin Anastacio Cruz – Emmanuel Maya García

Liebre y Tortuga

Martin Anastacio Cruz – Emmanuel Maya García

Planteamiento del problema

En este problema usted recreará la clásica carrera de la tortuga y la liebre. Utilizará la generación de números aleatorios para desarrollar una simulación de este memorable suceso. Nuestros competidores empezarán la carrera en la posición 1 de 70 posiciones. Cada posición representa a una posible posición a lo largo del curso de la carrera. La línea de meta se encuentra en la posición 70. El primer competidor en llegar a la posición 70 recibirá una cubeta llena con zanahorias y lechuga frescas. El recorrido se abre paso hasta la cima de una resbalosa montaña, por lo que ocasionalmente los competidores pierden terreno. Un reloj hace tictac una vez por segundo. Con cada tic del reloj, su aplicación debe ajustar la posición de los animales de acuerdo con las reglas de la figura 7.34. Use variables para llevar el registro de las posiciones de los animales (los números son del 1 al 70). Empiece con cada animal en la posición 1 (la “puerta de inicio”). Si un animal se resbala hacia la izquierda antes de la posición 1, regréselo a la posición 1. Genere los porcentajes en la figura 7.34 produciendo un entero aleatorio i en el rango 1 ≤ i ≤ 10. Para la tortuga, realice un “paso pesado rápido” cuando 1 ≤ i ≤ 5, un “resbalón” cuando 6 ≤ i ≤ 7 o un “paso pesado lento” cuando 8 ≤ i ≤ 10. Utilice una técnica similar para mover a la liebre. Empiece la carrera imprimiendo el mensaje ¡¡¡PUM!!! ¡¡¡Y ARRANCAN!!! Luego, para cada tic del reloj (es decir, cada repetición de un ciclo) imprima una línea de 70 posiciones, mostrando la letra T en la posición de la tortuga y la letra H en la posición de la liebre. En ocasiones los competidores se encontrarán en la misma posición. En este caso, la tortuga muerde a la liebre y su aplicación debe imprimir: ¡¡¡¡OUCH!!! empezando en esa posición. Todas las posiciones de impresión distintas de la T, la H o el mensaje: ¡¡¡OUCH!!! (en caso de un empate) deben estar en blanco.

Página 1 de 7

Liebre y Tortuga

Martin Anastacio Cruz – Emmanuel Maya García

Después de imprimir cada línea, compruebe si uno de los animales ha llegado o se ha pasado de la posición 70. De ser así, imprima quién fue el ganador y termine la simulación. Si la tortuga gana, imprima: ¡¡¡LA TORTUGA GANA!!! YAY!!! Si la liebre gana, imprima La liebre gana. Que mal. Si ambos animales ganan en el mismo tic del reloj, tal vez usted quiera favorecer a la tortuga (la más débil) o tal vez quiera imprimir Es un empate. Si ninguno de los dos animales gana, ejecute el ciclo de nuevo para simular el siguiente tic del reloj. Cuando esté listo para ejecutar su aplicación, reúna a un grupo de aficionados para que vean la carrera. ¡Se sorprenderá al ver lo participativa que puede ser su audiencia! Algoritmo

Comparar los datos obtenidos para la liebre: Variable posicionL. valorL == 1 && valorL == 2 posicionL no avanza; valorL == 3 && valorL == 4 posicionL avanza 9; valorL == 5 posicionL retrocede 12; valorL >= 6 && valorL = 1 && valor >> posicionT avanza 3; valor >= 6 && valor >> posicionT retorcede 6; valor >= 8 && valor >> posicionT avanza 1; posicionT >> posicionT = 1.

Comparamos la distancia de Tortuga y liebre. posicionL == posicionT; Muestra OUCH. posicionL >= 70 reloj.stop(); Muestra Liebre gano posicionT >= 70 reloj.stop(); Muestra Tortuga gano posicionL >= 70 && posicionT >= 70; Empate. FrmCarreraTortugaLiebre.java

import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; import javax.swing.JOptionPane; import javax.swing.Timer; public class FrmCarreraTortugaLiebre extends javax.swing.JFrame { int posicionT = 1; int posicionL = 1; String[] pistaTortuga = new String[71]; String[] pistaLiebre = new String[71]; Timer reloj; int segundos = 0; int delay = 500;

//Codigo del botón ActionListener taskPerformer = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { lblConteo.setText("" + segundos); segundos++; if (posicionL == 1 && posicionT == 1) { JOptionPane.showMessageDialog(null, "PUM!!! \nARRANCAN!!!"); }

Página 3 de 7

Liebre y Tortuga

Martin Anastacio Cruz – Emmanuel Maya García

//Tortuga for (int i = 1; i = 70) { JOptionPane.showMessageDialog(null, "La tortuga gana!! YAY!!"); } if (posicionL >= 70 && posicionT >= 70) { JOptionPane.showMessageDialog(null, "Ouch!"); JOptionPane.showMessageDialog(null, "Empate!"); } } }; reloj = new Timer(delay, taskPerformer); reloj.start(); }

Pantalla de salida

Página 5 de 7

Liebre y Tortuga

Martin Anastacio Cruz – Emmanuel Maya García

Pantalla inicial

Muestra el mensaje de inicio

Pantalla de la carrera

Página 6 de 7

Liebre y Tortuga

Martin Anastacio Cruz – Emmanuel Maya García

Muestra quien gana

Página 7 de 7