Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tiagox/8393209b0b45c632ca43 to your computer and use it in GitHub Desktop.
Save tiagox/8393209b0b45c632ca43 to your computer and use it in GitHub Desktop.

Enunciado

Implementar el método ejecutar de la clase MisionRecolectarCristal considerando un tablero como el que se describe más abajo:

class MisionRecolectarCristal {
    /**
     * post: utiliza una Nave no despegada, y anclada en la Base 
     * para recolectar 100 unidades de CRISTAL, y llevarlas hasta la Base.
     */
    public void ejecutar(Nave nave) { ... }
}

Tablero:

Al ESTE de la Base existe una secuencia vertical de Asteroides. No se conoce cuántos Asteroides están alineados, pero se sabe que existe un Agujero Negro formando parte de la alineación en dirección SUR.

Siete (7) casilleros al ESTE y cinco (5) al NORTE del Agujero Negro existe un Contenedor con Cristal, el mismo está custodiado por naves enemigas (8 naves que rodean el contenedor).

#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
# ###
# #C#
# ###
#
#
#
A
#
#
#
#
#
#
#
#
#
#
#
#
#
#
# A
class MisionRecolectarCristal {
public void ejecutar(Nave nave) {
nave.despegar();
Radar radar = nave.obtenerRadar();
avanzarAlEsteMientrasPueda(nave, radar);
destruirAlEste(nave, radar);
avanzarPasosAlEste(nave, 2);
avanzarAlSurHastaAgujeroNegroAlOeste(nave, radar);
avanzarPasosAlEste(nave, 6);
avanzarPasosAlNorte(nave, 3);
destruirAlNorte(nave, radar);
avanzarPasosAlNorte(nave, 1);
nave.cargarDesdeNorte(Sustancia.CRISTAL, 100);
avanzarPasosAlSur(nave, 4);
avanzarPasosAlOeste(nave, 6);
avanzarAlNorteHastaEspacioVacioAlOeste(nave, radar);
avanzarAlOesteMientrasPueda(nave, radar);
nave.descargarEnOeste(Sustancia.CRISTAL, 100);
}
private void avanzarAlEsteMientrasPueda(Nave nave, Radar radar) {
while (radar.escanearEste() == Espectro.VACIO) {
nave.avanzarAlEste();
}
}
private void avanzarAlOesteMientrasPueda(Nave nave, Radar radar) {
while (radar.escanearOeste() == Espectro.VACIO) {
nave.avanzarAlOeste();
}
}
private void destruirAlEste(Nave nave, Radar radar) {
while (radar.escanearEste() != Espectro.VACIO) {
nave.atacarAlEste();
}
}
private void destruirAlNorte(Nave nave, Radar radar) {
while (radar.escanearNorte() != Espectro.VACIO) {
nave.atacarAlNorte();
}
}
private void avanzarPasosAlNorte(Nave nave, int pasos) {
for (int i = 0; i < pasos; i++) {
nave.avanzarAlNorte();
}
}
private void avanzarPasosAlSur(Nave nave, int pasos) {
for (int i = 0; i < pasos; i++) {
nave.avanzarAlSur();
}
}
private void avanzarPasosAlEste(Nave nave, int pasos) {
for (int i = 0; i < pasos; i++) {
nave.avanzarAlEste();
}
}
private void avanzarPasosAlOeste(Nave nave, int pasos) {
for (int i = 0; i < pasos; i++) {
nave.avanzarAlOeste();
}
}
private void avanzarAlSurHastaAgujeroNegroAlOeste(Nave nave, Radar radar) {
while (radar.escanearOeste() != Espectro.DESCONOCIDO) {
nave.avanzarAlSur();
}
}
private void avanzarAlNorteHastaEspacioVacioAlOeste(Nave nave, Radar radar) {
while (radar.escanearOeste() != Espectro.VACIO) {
nave.avanzarAlNorte();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment