Robot

[aux_code language=»javascript» theme=»tomorrow» title=»Robot» extra_classes=»»]
package com.ikasgela;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    private static int g = 0;
    private static int v = 3;
    private static int h = 3;

    public static void main(String[] args) {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int e;
        do {
            System.out.println("Elige las opciones:\n1.Girar\n2.Avanzar\n3.Visualizar\n4.Salir");
            try {
                e = Integer.parseInt(br.readLine());
                if (e == 1) {
                    System.out.println("Intro los grados a girar (0, 90, 180, 270) :");
                    int gg = Integer.parseInt(br.readLine());
                    if (gg == 0 || gg == 90 || gg == 180 || gg == 270) {
                        girar(gg);
                        System.out.println("Giro completado.");
                    } else {
                        System.out.println("Giro no válido.");
                    }
                } else if (e == 2) {
                    System.out.println("Intro la coordenada horizontal:");
                    int x = Integer.parseInt(br.readLine());
                    if (x > 0) {
                        avanzar(x);
                    } else {
                        System.out.println("Avance no válido.");
                    }
                } else if (e == 3) {
                    visualizar();
                } else if (e == 4) {
                    System.out.println("Me despido.");
                } else {
                    System.out.println("Opción no válida.");
                }
            } catch (IOException | NumberFormatException ex) {
                System.out.println("Opción no válida.");
                e = -1;
            }
        } while (e != 4);
    }

    private static void girar(int gg) {
        g += gg;
        if (g >= 360) {
            g -= 360;
        }
    }

    private static void avanzar(int pp) {
        switch (g) {
            case 0:
                v = mover(v, -pp);
                break;
            case 90:
                h = mover(h, pp);
                break;
            case 180:
                v = mover(v, pp);
                break;
            case 270:
                h = mover(h, -pp);
                break;
        }
    }

    private static int mover(int x, int y) {
        if ((x + y) >= 0 && (x + y) < 10) {
            x += y;
            System.out.println("Avance completado.");
        } else {
            System.out.println("Avance no válido.");
        }
        return x;
    }

    private static void visualizar() {
        char orientacion = 0;
        switch (g) {
            case 0:
                orientacion = 8593;
                break;
            case 90:
                orientacion = 8594;
                break;
            case 180:
                orientacion = 8595;
                break;
            case 270:
                orientacion = 8592;
                break;
        }
        StringBuilder tab = new StringBuilder();
        tab.append("   0 1 2 3 4 5 6 7 8 9\n");
        for (int x = 0; x < 10; x++) {
            tab.append(" ").append(x).append(" ");
            for (int y = 0; y < 10; y++) {
                if (x == v && y == h) {
                    tab.append(orientacion).append(" ");
                } else {
                    tab.append(". ");
                }
            }
            tab.append("\n");
        }
        System.out.println(tab);
    }
}

[/aux_code]
Etiquetas: Sin etiquetas

Añadir un comentario

Debes estar conectado para publicar un comentario