Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Algoritmos y Programación 1 - Guía de ejercicios Nº 1 - Usando objetos
- // Ejercicio 1
- public class Ejercicio1 {
- /*1. Llevar una Nave desde la Base hasta el Contenedor más cercano a su posición. */
- private Nave naveSygma;
- public Ejercicio1 (Nave naveSygma){
- this.naveSygma = naveSygma;
- }
- public void ejecutar (){
- despegarYAvanzarAlNorte ();
- irHaciaContenedorMasCercano ();
- }
- private void despegarYAvanzarAlNorte() {
- naveSygma.despegar();
- naveSygma.avanzarAlNorte();
- }
- private void irHaciaContenedorMasCercano() {
- for (int i = 0; i < 2; i++){
- naveSygma.avanzarAlOeste();
- }
- for (int i=0; i < 2; i++){
- naveSygma.avanzarAlSur();
- }
- }
- }
- // Ejercicio 2
- public class Ejercicio2 {
- /* 2. Llevar a la Nave hasta una posición contigua a la Base. */
- private Nave naveSygma;
- public Ejercicio2 (Nave naveSygma){
- this.naveSygma = naveSygma;
- }
- public void ejecutar (){
- despegarYAvanzarAlNorte();
- moverseAlrededorDeLaBase();
- }
- private void despegarYAvanzarAlNorte (){
- naveSygma.despegar();
- naveSygma.avanzarAlNorte();
- }
- private void moverseAlrededorDeLaBase (){
- naveSygma.avanzarAlOeste();
- for (int i = 0; i < 2; i++){
- naveSygma.avanzarAlSur();
- }
- for (int i = 0; i < 2; i++){
- naveSygma.avanzarAlEste();
- }
- for (int i = 0; i < 2; i++){
- naveSygma.avanzarAlNorte();
- }
- naveSygma.avanzarAlOeste();
- }
- }
- // Ejercicio 3
- public class MisionDesdeBaseHastaContenedorCercano {
- /*
- * Ejecuta la misión, llevando una Nave desde la Base en la
- * en la que se encuentra hasta el Contenedor más cercano
- */
- private Nave naveSygma;
- public MisionDesdeBaseHastaContenedorCercano (Nave naveSygma){
- this.naveSygma = naveSygma;
- }
- public void ejecutar (){
- despegarYAvanzarAlNorte ();
- irHaciaContenedorMasCercano ();
- }
- private void despegarYAvanzarAlNorte() {
- naveSygma.despegar();
- naveSygma.avanzarAlNorte();
- }
- private void irHaciaContenedorMasCercano() {
- for (int i = 0; i < 2; i++){
- naveSygma.avanzarAlOeste();
- }
- for (int i=0; i < 2; i++){
- naveSygma.avanzarAlSur();
- }
- }
- }
- // Ejercicio 4
- /* 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
- * nave.cargarDesdeSur(Sustancia, int) que no cargaría la cantidad indicada que se le pasa como parámetro. */
- public class MisionRecolectarAntimateria {
- /*
- * Utiliza una Nave para recolectar 101 de ANTIMATERIA y
- * llevarla hasta la Base.
- */
- private Nave naveSygma;
- private Radar radarSygma;
- public MisionRecolectarAntimateria (Nave naveRecibida){
- naveSygma = naveRecibida;
- radarSygma = naveSygma.obtenerRadar();
- }
- public void ejecutar() {
- despegarYAvanzarAlNorte ();
- avanzarRecolectarAntimateriaContenedorUnoYDescargar ();
- int cantidadDeAntimateriaFaltante = 101 - (radarSygma.buscarAlSur(Sustancia.ANTIMATERIA));
- avanzarRecolectarAntimateriaContenedorDosYDescargar(cantidadDeAntimateriaFaltante);
- }
- private void despegarYAvanzarAlNorte() {
- naveSygma.despegar();
- naveSygma.avanzarAlNorte();
- }
- private void avanzarRecolectarAntimateriaContenedorUnoYDescargar () {
- int pasosAlOeste = 0;
- int pasosAlSur = 0;
- // Avanzar hacia el Contenedor de ANTIMATERIA
- for (int i = 0; i < 2; i++){
- naveSygma.avanzarAlOeste();
- pasosAlOeste++;
- }
- for (int i=0; i < 2; i++){
- naveSygma.avanzarAlSur();
- pasosAlSur++;
- }
- // Recolectar ANTIMATERIA
- int cantidadDeAntimateriaARecolectar = radarSygma.buscarAlSur(Sustancia.ANTIMATERIA);
- naveSygma.cargarDesdeSur(Sustancia.ANTIMATERIA, cantidadDeAntimateriaARecolectar);
- // Regresar a la base y descargar
- for (int i=0; i < pasosAlSur; i++){
- naveSygma.avanzarAlNorte();
- }
- for (int i=0; i < pasosAlOeste; i++){
- naveSygma.avanzarAlEste();
- }
- naveSygma.descargarEnSur(Sustancia.ANTIMATERIA, cantidadDeAntimateriaARecolectar);
- }
- private void avanzarRecolectarAntimateriaContenedorDosYDescargar (int cantidadDeAntimateriaFaltante) {
- int pasosAlEste = 0;
- int pasosAlNorte = 0;
- // Avanzar hacia el Contenedor de ANTIMATERIA
- for (int i = 0; i < 2; i++){
- naveSygma.avanzarAlEste();
- pasosAlEste++;
- }
- for (int i=0; i < 2; i++){
- naveSygma.avanzarAlNorte();
- pasosAlNorte++;
- }
- // Recolectar la cantidad de ANTIMATERIA necesaria para alcanzar 101
- naveSygma.cargarDesdeNorte(Sustancia.ANTIMATERIA, cantidadDeAntimateriaFaltante);
- // Regresar a la Base
- for (int i=0; i < pasosAlNorte; i++){
- naveSygma.avanzarAlSur();
- }
- for (int i=0; i < pasosAlEste; i++){
- naveSygma.avanzarAlOeste();
- }
- naveSygma.descargarEnSur(Sustancia.ANTIMATERIA, cantidadDeAntimateriaFaltante);
- }
- }
- // Ejercicio 5
- public class MisionRecolectarAntimateriaEnEquipo {
- /*
- * Utiliza 3 (tres) Naves para recolectar 30 de ANTIMATERIA y
- * llevarla hasta la Base (10 por Nave).
- */
- private Nave naveUno;
- private Nave naveDos;
- private Nave naveTres;
- public MisionRecolectarAntimateriaEnEquipo (){
- naveUno = new Nave();
- naveDos = new Nave();
- naveTres = new Nave();
- }
- /* pre: se asume como precondición que el Contenedor de ANTIMATERIA más cercano posee 30 o más de esta sustancia.
- * post: cada Nave recolectará 10 de ANTIMATERIA y descargará en la Base; al finalizar el método la Base tendrá 30 de ANTIMATERIA.
- */
- public void ejecutar() {
- recolectarYDescargarNaveUno();
- recolectarYDescargarNaveDos();
- recolectarYDescargarNaveTres();
- }
- private void recolectarYDescargarNaveTres() {
- naveTres.despegar();
- for (int i=0; i < 2; i++){
- naveTres.avanzarAlSur();
- }
- naveTres.avanzarAlOeste();
- naveTres.cargarDesdeOeste(Sustancia.ANTIMATERIA, 10);
- naveTres.avanzarAlEste();
- for (int i = 0; i < 2; i++){
- naveTres.avanzarAlNorte();
- }
- Radar radarTres = naveTres.obtenerRadar();
- if (radarTres.escanearNorte() == Espectro.BASE){
- naveTres.descargarEnNorte(Sustancia.ANTIMATERIA, 10);
- }
- }
- private void recolectarYDescargarNaveDos() {
- naveDos.despegar();
- naveDos.avanzarAlOeste();
- for (int i = 0; i < 2; i++){
- naveDos.avanzarAlSur();
- }
- naveDos.cargarDesdeOeste(Sustancia.ANTIMATERIA, 10);
- for (int i = 0; i < 2; i++){
- naveDos.avanzarAlNorte();
- }
- Radar radarDos = naveDos.obtenerRadar();
- if (radarDos.escanearEste() == Espectro.BASE){
- naveDos.descargarEnEste(Sustancia.ANTIMATERIA, 10);
- }
- }
- private void recolectarYDescargarNaveUno() {
- naveUno.despegar();
- naveUno.avanzarAlNorte();
- for (int i = 0; i < 2 ; i++){
- naveUno.avanzarAlOeste();
- }
- for (int i = 0; i < 2; i ++){
- naveUno.avanzarAlSur();
- }
- naveUno.cargarDesdeSur(Sustancia.ANTIMATERIA, 10);
- for (int i = 0; i < 2; i++){
- naveUno.avanzarAlNorte();
- }
- for (int i = 0; i < 2; i ++){
- naveUno.avanzarAlEste();
- }
- Radar radarUno = naveUno.obtenerRadar();
- if (radarUno.escanearSur() == Espectro.BASE){
- naveUno.descargarEnSur(Sustancia.ANTIMATERIA, 10);
- }
- }
- }
- // Ejercicio 6
- public class MisionDestruirAsteroideCercano {
- /*
- * Lleva una Nave hasta el Asteroide
- * más cercano, lo destruye y regresa a la Base.
- *
- */
- private Nave naveSygma;
- private Radar radarSygma;
- public MisionDestruirAsteroideCercano(Nave naveRecibida){
- naveSygma = naveRecibida;
- radarSygma = naveSygma.obtenerRadar();
- }
- public void ejecutar() {
- naveSygma.despegar();
- naveSygma.avanzarAlNorte();
- for (int i=0; i < 2; i++){
- naveSygma.avanzarAlOeste();
- }
- while (radarSygma.escanearOeste() == Espectro.ASTEROIDE){
- naveSygma.atacarAlOeste();
- }
- for (int i=0; i < 2; i++){
- naveSygma.avanzarAlEste();
- }
- }
- }
- // Ejercicio 7:
- public class MisionPatrullarBase {
- /* 7. Implementar la clase MisionPatrullarBase para que una Nave despegue y haga un recorrido
- alrededor de la Base a por lo menos 3 casilleros de distancia de la misma. */
- private Nave naveSygma;
- private Radar radarSygma;
- public MisionPatrullarBase(Nave naveRecibida){
- naveSygma = naveRecibida;
- radarSygma = naveSygma.obtenerRadar();
- }
- public void ejecutar(){
- naveSygma.despegar();
- naveSygma.avanzarAlNorte();
- for (int i = 0; i < 3; i++){
- naveSygma.avanzarAlNorte();
- }
- AyP1 - Guía de ejercicios Nº 1
- // Patrullar 3 veces
- for (int j = 0; j < 3; j++){
- for (int i = 0; i < 3; i++){
- escanearYDestruirAlEste();
- }
- for (int i = 0; i < 6; i++){
- escanearYDestruirAlSur();
- }
- for (int i = 0; i < 6; i++){
- escanearYDestruirAlOeste();
- }
- for (int i = 0; i < 6; i++){
- escanearYDestruirAlNorte();
- }
- for (int i = 0; i < 3; i++){
- escanearYDestruirAlEste();
- }
- }
- }
- private void escanearYDestruirAlEste (){
- while (radarSygma.escanearEste() != Espectro.VACIO){
- naveSygma.atacarAlEste();
- }
- naveSygma.avanzarAlEste();
- }
- private void escanearYDestruirAlSur (){
- while (radarSygma.escanearSur() != Espectro.VACIO){
- naveSygma.atacarAlSur();
- }
- naveSygma.avanzarAlSur();
- }
- private void escanearYDestruirAlOeste (){
- while (radarSygma.escanearOeste() != Espectro.VACIO){
- naveSygma.atacarAlOeste();
- }
- naveSygma.avanzarAlOeste();
- }
- private void escanearYDestruirAlNorte (){
- while (radarSygma.escanearNorte() != Espectro.VACIO){
- naveSygma.atacarAlNorte();
- }
- naveSygma.avanzarAlNorte();
- }
- }
- // Ejercicio 8
- public class MisionPatrullarContenedor {
- /* 8. Implementar la clase MisionPatrullarContenedor para que una Nave despegue y haga un recorrido
- alrededor del Contenedor más cercano y luego regrese a la Base. */
- private Nave naveSygma;
- public MisionPatrullarContenedor (Nave naveRecibida){
- naveSygma = naveRecibida;
- }
- public void ejecutar(){
- naveSygma.despegar();
- naveSygma.avanzarAlOeste();
- naveSygma.avanzarAlOeste();
- naveSygma.avanzarAlSur();
- patrullarContenedor();
- naveSygma.avanzarAlNorte();
- naveSygma.avanzarAlEste();
- }
- private void patrullarContenedor() {
- naveSygma.avanzarAlEste();
- for (int i = 0; i < 2; i++){
- naveSygma.avanzarAlSur();
- }
- for (int i = 0; i < 2; i++){
- naveSygma.avanzarAlOeste();
- }
- for (int i = 0; i < 2; i++){
- naveSygma.avanzarAlNorte();
- }
- naveSygma.avanzarAlEste();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement