Advertisement
KaiserRego

AyP1 - Guía de ejercicios Nº 1

Jan 25th, 2015
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.82 KB | None | 0 0
  1. // Algoritmos y Programación 1 - Guía de ejercicios Nº 1 - Usando objetos
  2.  
  3. // Ejercicio 1
  4. public class Ejercicio1 {
  5.    
  6.     /*1. Llevar una Nave desde la Base hasta el Contenedor más cercano a su posición. */
  7.    
  8.     private Nave naveSygma;
  9.    
  10.     public Ejercicio1 (Nave naveSygma){
  11.        
  12.         this.naveSygma = naveSygma;
  13.     }
  14.    
  15.     public void ejecutar (){
  16.        
  17.         despegarYAvanzarAlNorte ();
  18.        
  19.         irHaciaContenedorMasCercano ();
  20.        
  21.     }
  22.  
  23.     private void despegarYAvanzarAlNorte() {
  24.        
  25.         naveSygma.despegar();
  26.         naveSygma.avanzarAlNorte();
  27.        
  28.     }
  29.    
  30.     private void irHaciaContenedorMasCercano() {
  31.        
  32.         for (int i = 0; i < 2; i++){
  33.            
  34.             naveSygma.avanzarAlOeste();
  35.         }
  36.        
  37.         for (int i=0; i < 2; i++){
  38.            
  39.             naveSygma.avanzarAlSur();
  40.            
  41.         }
  42.        
  43.     }
  44.  
  45. }
  46.  
  47.  
  48. // Ejercicio 2
  49. public class Ejercicio2 {
  50.    
  51.     /* 2. Llevar a la Nave hasta una posición contigua a la Base. */
  52.    
  53.     private Nave naveSygma;
  54.    
  55.     public Ejercicio2 (Nave naveSygma){
  56.        
  57.         this.naveSygma = naveSygma;
  58.     }
  59.    
  60.     public void ejecutar (){
  61.        
  62.         despegarYAvanzarAlNorte();
  63.        
  64.         moverseAlrededorDeLaBase();
  65.     }
  66.    
  67.     private void despegarYAvanzarAlNorte (){
  68.        
  69.         naveSygma.despegar();
  70.         naveSygma.avanzarAlNorte();
  71.        
  72.     }
  73.    
  74.     private void moverseAlrededorDeLaBase (){
  75.        
  76.         naveSygma.avanzarAlOeste();
  77.        
  78.         for (int i = 0; i < 2; i++){
  79.            
  80.             naveSygma.avanzarAlSur();
  81.         }
  82.        
  83.         for (int i = 0; i < 2; i++){
  84.            
  85.             naveSygma.avanzarAlEste();
  86.         }
  87.        
  88.         for (int i = 0; i < 2; i++){
  89.            
  90.             naveSygma.avanzarAlNorte();
  91.         }
  92.        
  93.         naveSygma.avanzarAlOeste();
  94.     }
  95.  
  96. }
  97.  
  98.  
  99. // Ejercicio 3
  100.  
  101. public class MisionDesdeBaseHastaContenedorCercano {
  102.  
  103.  /*
  104.  
  105.  * Ejecuta la misión, llevando una Nave desde la Base en la
  106.  
  107.  * en la que se encuentra hasta el Contenedor más cercano
  108.  
  109.  */
  110.    
  111.     private Nave naveSygma;
  112.    
  113.     public MisionDesdeBaseHastaContenedorCercano (Nave naveSygma){
  114.        
  115.         this.naveSygma = naveSygma;
  116.     }
  117.    
  118.     public void ejecutar (){
  119.        
  120.         despegarYAvanzarAlNorte ();
  121.        
  122.         irHaciaContenedorMasCercano ();
  123.        
  124.     }
  125.  
  126.     private void despegarYAvanzarAlNorte() {
  127.        
  128.         naveSygma.despegar();
  129.         naveSygma.avanzarAlNorte();
  130.        
  131.     }
  132.    
  133.     private void irHaciaContenedorMasCercano() {
  134.        
  135.         for (int i = 0; i < 2; i++){
  136.            
  137.             naveSygma.avanzarAlOeste();
  138.         }
  139.        
  140.         for (int i=0; i < 2; i++){
  141.            
  142.             naveSygma.avanzarAlSur();
  143.            
  144.         }
  145.        
  146.     }
  147.  
  148.  
  149.  
  150. }
  151.  
  152.  
  153. // Ejercicio 4
  154. /* Nota: no se recolecta 101 de ANTIMATERIA, sino que se recolecta una cantidad superior a ésta. El error estaría al invocar el método
  155.  * nave.cargarDesdeSur(Sustancia, int) que no cargaría la cantidad indicada que se le pasa como parámetro. */
  156.  
  157. public class MisionRecolectarAntimateria {
  158.  
  159.  /*
  160.  
  161.  * Utiliza una Nave para recolectar 101 de ANTIMATERIA y
  162.  
  163.  * llevarla hasta la Base.
  164.  
  165.  */
  166.     private Nave naveSygma;
  167.     private Radar radarSygma;
  168.    
  169.     public MisionRecolectarAntimateria (Nave naveRecibida){
  170.        
  171.         naveSygma = naveRecibida;
  172.        
  173.         radarSygma = naveSygma.obtenerRadar();
  174.     }
  175.    
  176.     public void ejecutar() {
  177.        
  178.         despegarYAvanzarAlNorte ();
  179.        
  180.         avanzarRecolectarAntimateriaContenedorUnoYDescargar ();
  181.        
  182.         int cantidadDeAntimateriaFaltante = 101 - (radarSygma.buscarAlSur(Sustancia.ANTIMATERIA));
  183.        
  184.         avanzarRecolectarAntimateriaContenedorDosYDescargar(cantidadDeAntimateriaFaltante);
  185.     }
  186.    
  187.     private void despegarYAvanzarAlNorte() {
  188.        
  189.         naveSygma.despegar();
  190.         naveSygma.avanzarAlNorte();
  191.        
  192.     }
  193.    
  194.     private void avanzarRecolectarAntimateriaContenedorUnoYDescargar () {
  195.        
  196.         int pasosAlOeste = 0;
  197.         int pasosAlSur = 0;
  198.        
  199.         // Avanzar hacia el Contenedor de ANTIMATERIA
  200.         for (int i = 0; i < 2; i++){
  201.            
  202.             naveSygma.avanzarAlOeste();
  203.             pasosAlOeste++;
  204.         }
  205.        
  206.         for (int i=0; i < 2; i++){
  207.            
  208.             naveSygma.avanzarAlSur();
  209.             pasosAlSur++;
  210.         }
  211.        
  212.         // Recolectar ANTIMATERIA
  213.         int cantidadDeAntimateriaARecolectar = radarSygma.buscarAlSur(Sustancia.ANTIMATERIA);      
  214.         naveSygma.cargarDesdeSur(Sustancia.ANTIMATERIA, cantidadDeAntimateriaARecolectar);
  215.        
  216.         // Regresar a la base y descargar
  217.         for (int i=0; i < pasosAlSur; i++){
  218.            
  219.             naveSygma.avanzarAlNorte();
  220.         }
  221.        
  222.         for (int i=0; i < pasosAlOeste; i++){
  223.            
  224.             naveSygma.avanzarAlEste();
  225.         }
  226.        
  227.         naveSygma.descargarEnSur(Sustancia.ANTIMATERIA, cantidadDeAntimateriaARecolectar);
  228.        
  229.     }
  230.    
  231.     private void avanzarRecolectarAntimateriaContenedorDosYDescargar (int  cantidadDeAntimateriaFaltante) {
  232.        
  233.         int pasosAlEste = 0;
  234.         int pasosAlNorte = 0;
  235.        
  236.         // Avanzar hacia el Contenedor de ANTIMATERIA
  237.         for (int i = 0; i < 2; i++){
  238.            
  239.             naveSygma.avanzarAlEste();
  240.             pasosAlEste++;
  241.         }
  242.        
  243.         for (int i=0; i < 2; i++){
  244.            
  245.             naveSygma.avanzarAlNorte();
  246.             pasosAlNorte++;
  247.         }
  248.        
  249.         // Recolectar la cantidad de ANTIMATERIA necesaria para alcanzar 101
  250.        
  251.         naveSygma.cargarDesdeNorte(Sustancia.ANTIMATERIA, cantidadDeAntimateriaFaltante);
  252.        
  253.         // Regresar a la Base
  254.        
  255.         for (int i=0; i < pasosAlNorte; i++){
  256.            
  257.             naveSygma.avanzarAlSur();
  258.         }
  259.        
  260.         for (int i=0; i < pasosAlEste; i++){
  261.            
  262.             naveSygma.avanzarAlOeste();
  263.         }
  264.        
  265.         naveSygma.descargarEnSur(Sustancia.ANTIMATERIA, cantidadDeAntimateriaFaltante);
  266.        
  267.     }
  268.    
  269.    
  270. }
  271.  
  272.  
  273. // Ejercicio 5
  274. public class MisionRecolectarAntimateriaEnEquipo {
  275.    
  276. /*
  277. * Utiliza 3 (tres) Naves para recolectar 30 de ANTIMATERIA y
  278. * llevarla hasta la Base (10 por Nave).
  279. */
  280.    
  281.     private Nave naveUno;
  282.     private Nave naveDos;
  283.     private Nave naveTres;
  284.    
  285.     public MisionRecolectarAntimateriaEnEquipo (){
  286.        
  287.         naveUno = new Nave();
  288.         naveDos = new Nave();
  289.         naveTres = new Nave();
  290.     }
  291.    
  292.     /* pre: se asume como precondición que el Contenedor de ANTIMATERIA más cercano posee 30 o más de esta sustancia.
  293.      * post: cada Nave recolectará 10 de ANTIMATERIA y descargará en la Base; al finalizar el método la Base tendrá 30 de ANTIMATERIA.
  294.      */
  295.    
  296.     public void ejecutar() {
  297.        
  298.         recolectarYDescargarNaveUno();
  299.         recolectarYDescargarNaveDos();
  300.         recolectarYDescargarNaveTres();
  301.        
  302. }
  303.  
  304.     private void recolectarYDescargarNaveTres() {
  305.        
  306.         naveTres.despegar();
  307.        
  308.         for (int i=0; i < 2; i++){
  309.             naveTres.avanzarAlSur();
  310.         }
  311.        
  312.         naveTres.avanzarAlOeste();
  313.        
  314.         naveTres.cargarDesdeOeste(Sustancia.ANTIMATERIA, 10);
  315.        
  316.         naveTres.avanzarAlEste();
  317.        
  318.         for (int i = 0; i < 2; i++){
  319.             naveTres.avanzarAlNorte();
  320.         }
  321.        
  322.         Radar radarTres = naveTres.obtenerRadar();
  323.         if (radarTres.escanearNorte() == Espectro.BASE){
  324.             naveTres.descargarEnNorte(Sustancia.ANTIMATERIA, 10);
  325.         }
  326.        
  327.     }
  328.  
  329.     private void recolectarYDescargarNaveDos() {
  330.            
  331.         naveDos.despegar();
  332.         naveDos.avanzarAlOeste();
  333.  
  334.         for (int i = 0; i < 2; i++){
  335.             naveDos.avanzarAlSur();
  336.         }
  337.        
  338.         naveDos.cargarDesdeOeste(Sustancia.ANTIMATERIA, 10);
  339.        
  340.         for (int i = 0; i < 2; i++){
  341.             naveDos.avanzarAlNorte();
  342.         }
  343.        
  344.         Radar radarDos = naveDos.obtenerRadar();
  345.         if (radarDos.escanearEste() == Espectro.BASE){
  346.             naveDos.descargarEnEste(Sustancia.ANTIMATERIA, 10);    
  347.         }
  348.        
  349.     }
  350.  
  351.     private void recolectarYDescargarNaveUno() {
  352.        
  353.         naveUno.despegar();
  354.         naveUno.avanzarAlNorte();
  355.        
  356.         for (int i = 0; i < 2 ; i++){
  357.             naveUno.avanzarAlOeste();
  358.         }
  359.        
  360.         for (int i = 0; i < 2; i ++){
  361.             naveUno.avanzarAlSur();
  362.         }
  363.        
  364.         naveUno.cargarDesdeSur(Sustancia.ANTIMATERIA, 10);
  365.        
  366.         for (int i = 0; i < 2; i++){
  367.             naveUno.avanzarAlNorte();
  368.         }
  369.        
  370.         for (int i = 0; i < 2; i ++){
  371.             naveUno.avanzarAlEste();
  372.         }
  373.        
  374.         Radar radarUno = naveUno.obtenerRadar();
  375.         if (radarUno.escanearSur() == Espectro.BASE){
  376.             naveUno.descargarEnSur(Sustancia.ANTIMATERIA, 10);     
  377.         }
  378.        
  379.     }
  380. }
  381.  
  382.  
  383. // Ejercicio 6
  384. public class MisionDestruirAsteroideCercano {
  385. /*
  386. * Lleva una Nave hasta el Asteroide
  387. * más cercano, lo destruye y regresa a la Base.
  388. *
  389. */
  390.     private Nave naveSygma;
  391.     private Radar radarSygma;
  392.    
  393.     public MisionDestruirAsteroideCercano(Nave naveRecibida){
  394.        
  395.         naveSygma = naveRecibida;
  396.         radarSygma = naveSygma.obtenerRadar();
  397.     }
  398.  
  399.     public void ejecutar() {
  400.        
  401.         naveSygma.despegar();
  402.         naveSygma.avanzarAlNorte();
  403.        
  404.         for (int i=0; i < 2; i++){
  405.             naveSygma.avanzarAlOeste();
  406.         }
  407.        
  408.         while (radarSygma.escanearOeste() == Espectro.ASTEROIDE){
  409.            
  410.             naveSygma.atacarAlOeste();
  411.         }
  412.        
  413.         for (int i=0; i < 2; i++){
  414.             naveSygma.avanzarAlEste();
  415.         }
  416.     }
  417. }
  418.  
  419.  
  420. // Ejercicio 7:
  421. public class MisionPatrullarBase {
  422.    
  423.     /* 7. Implementar la clase MisionPatrullarBase para que una Nave despegue y haga un recorrido
  424. alrededor de la Base a por lo menos 3 casilleros de distancia de la misma. */
  425.    
  426.     private Nave naveSygma;
  427.     private Radar radarSygma;
  428.    
  429.     public MisionPatrullarBase(Nave naveRecibida){
  430.        
  431.         naveSygma = naveRecibida;
  432.         radarSygma = naveSygma.obtenerRadar();
  433.     }
  434.    
  435.     public void ejecutar(){
  436.        
  437.         naveSygma.despegar();
  438.         naveSygma.avanzarAlNorte();
  439.        
  440.         for (int i = 0; i < 3; i++){
  441.            
  442.             naveSygma.avanzarAlNorte();
  443.         }
  444.         AyP1 - Guía de ejercicios Nº 1
  445.         // Patrullar 3 veces
  446.         for (int j = 0; j < 3; j++){
  447.            
  448.             for (int i = 0; i < 3; i++){
  449.                 escanearYDestruirAlEste();
  450.                
  451.             }
  452.            
  453.             for (int i = 0; i < 6; i++){
  454.                 escanearYDestruirAlSur();
  455.             }
  456.            
  457.             for (int i = 0; i < 6; i++){
  458.                 escanearYDestruirAlOeste();
  459.             }
  460.            
  461.             for (int i = 0; i < 6; i++){
  462.                 escanearYDestruirAlNorte();
  463.             }
  464.            
  465.             for (int i = 0; i < 3; i++){
  466.                 escanearYDestruirAlEste();
  467.                
  468.             }      
  469.         }
  470.        
  471.        
  472.     }
  473.    
  474.     private void escanearYDestruirAlEste (){
  475.        
  476.         while (radarSygma.escanearEste() != Espectro.VACIO){
  477.             naveSygma.atacarAlEste();
  478.         }
  479.        
  480.         naveSygma.avanzarAlEste();
  481.     }
  482.    
  483.     private void escanearYDestruirAlSur (){
  484.        
  485.         while (radarSygma.escanearSur() != Espectro.VACIO){
  486.             naveSygma.atacarAlSur();
  487.         }
  488.        
  489.         naveSygma.avanzarAlSur();
  490.     }
  491.    
  492.     private void escanearYDestruirAlOeste (){
  493.        
  494.         while (radarSygma.escanearOeste() != Espectro.VACIO){
  495.             naveSygma.atacarAlOeste();
  496.         }
  497.        
  498.         naveSygma.avanzarAlOeste();
  499.     }
  500.    
  501.     private void escanearYDestruirAlNorte (){
  502.        
  503.         while (radarSygma.escanearNorte() != Espectro.VACIO){
  504.             naveSygma.atacarAlNorte();
  505.         }
  506.        
  507.         naveSygma.avanzarAlNorte();
  508.     }
  509. }
  510.  
  511.  
  512. // Ejercicio 8
  513. public class MisionPatrullarContenedor {
  514.    
  515.     /* 8. Implementar la clase MisionPatrullarContenedor para que una Nave despegue y haga un recorrido
  516. alrededor del Contenedor más cercano y luego regrese a la Base. */
  517.    
  518.     private Nave naveSygma;
  519.    
  520.     public MisionPatrullarContenedor (Nave naveRecibida){
  521.        
  522.         naveSygma = naveRecibida;
  523.     }
  524.    
  525.     public void ejecutar(){
  526.        
  527.         naveSygma.despegar();
  528.         naveSygma.avanzarAlOeste();
  529.        
  530.         naveSygma.avanzarAlOeste();
  531.         naveSygma.avanzarAlSur();
  532.        
  533.        
  534.         patrullarContenedor();
  535.        
  536.         naveSygma.avanzarAlNorte();    
  537.         naveSygma.avanzarAlEste();
  538.     }
  539.  
  540.     private void patrullarContenedor() {
  541.        
  542.         naveSygma.avanzarAlEste();
  543.        
  544.         for (int i = 0; i < 2; i++){
  545.             naveSygma.avanzarAlSur();
  546.         }
  547.        
  548.         for (int i = 0; i < 2; i++){
  549.             naveSygma.avanzarAlOeste();
  550.         }
  551.        
  552.         for (int i = 0; i < 2; i++){
  553.             naveSygma.avanzarAlNorte();
  554.         }
  555.        
  556.         naveSygma.avanzarAlEste();
  557.        
  558.     }
  559. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement