clase Cubo

fichero Cubo.java:

/**
 * Cubo.java Definición de la clase Cubo
 * 
 * @author Luis José Sánchez
 */
public class Cubo {
    // atributos ////////////////////////////
    int capacidad; // capacidad máxima en litros
    int contenido; // contenido actual en litros
    // métodos //////////////////////////////
    // constructor

    Cubo(int c) {
        this.capacidad = c;
    }

    // métodos getter
    int getCapacidad() {
        return this.capacidad;
    }

    int getContenido() {
        return this.contenido;
    }

    // método setter
    void setContenido(int litros) {
        this.contenido = litros;
    }

    // otros métodos
    void vacia() {
        this.contenido = 0;
    }

    /**
     * Llena el cubo al máximo de su capacidad.
     */
    void llena() {
        this.contenido = this.capacidad;
    }

/**
* Pinta el cubo en la pantalla.
* Se muestran los bordes del cubo con el carácter # y el
* agua que contiene con el carácter ~.
*/

void pinta() {
    for (int nivel = this.capacidad; nivel > 0; nivel--) {
        if (this.contenido >= nivel) {
            System.out.println("#~~~~#");
        } else {
            System.out.println("#    #");
        }
    }
    System.out.println("######");
}

    /**
     * Vuelca el contenido de un cubo sobre otro. Antes de echar el agua se
     * comprueba cuánto le cabe al cubo destino.
     */
    void vuelcaEn(Cubo destino) {
        int libres = destino.getCapacidad() - destino.getContenido();
        if (libres > 0) {
            if (this.contenido <= libres) {
                destino.setContenido(destino.getContenido() + this.contenido);
                this.vacia();

            } else {
                this.contenido -= libres;
                destino.llena();
            }
        }
    }
}

Juego: Usar dos cubos, pedir sus capacidades y llenar/vaciar/volcar los dos cubos sucesivamente hasta dejar 1 litro en uno de los cubos. Hay que contar el número de operaciones realizadas.

Fichero EjemploCubo.java:

import java.util.Scanner;

class EjemploCubo {

    public static void main(String args[] ) {
        Cubo cubo1;
        Cubo cubo2;
        int numero;
        Scanner scanner = new Scanner(System.in);
        boolean continuar = true;
        int intentos = 0;

        do {
            System.out.println("Introduzca la capacidad del 1º cubo ( > 0 ): ");
            numero = scanner.nextInt();
        } while (numero < 1);
        cubo1 = new Cubo(numero);

        do {
            System.out.println("Introduzca la capacidad del 2º cubo ( > 0 ): ");
            numero = scanner.nextInt();
        } while (numero < 1);
        cubo2 = new Cubo(numero);

        do {
            System.out.println("1- Llenar cubo 1");
            System.out.println("2- Llenar cubo 2");
            System.out.println("3- Vaciar cubo 1");
            System.out.println("4- Vaciar cubo 2");
            System.out.println("5- Volcar cubo 1 en cubo 2");
            System.out.println("6- Volcar cubo 2 en cubo 1");

            do {
                System.out.println("Introduzca la operación a realizar: ");
                numero = scanner.nextInt();
            } while (numero < 1 || numero > 6);

            switch (numero) {
                case 1:
                    cubo1.llena();
                    break;
                case 2:
                    cubo2.llena();
                    break;
                case 3:
                    cubo1.vacia();
                    break;
                case 4:
                    cubo2.vacia();
                    break;
                case 5:
                    cubo1.vuelcaEn(cubo2);
                    break;
                case 6:
                    cubo2.vuelcaEn(cubo1);
                    break;                
            }

            intentos ++;

            if (cubo1.getContenido() == 1 || cubo2.getContenido() == 1) {
                continuar = false;
            } else {
                System.out.println("Cubo 1: " + cubo1.getCapacidad() + " / " + cubo1.getContenido());
                System.out.println("Cubo 2: " + cubo2.getCapacidad() + " / " + cubo2.getContenido());
            }
        } while (continuar);
        
        scanner.close();
        System.out.println("Enhorabuena, lo has conseguido en " + intentos + " intentos");
        System.out.println("Cubo 1: " + cubo1.getCapacidad() + " / " + cubo1.getContenido());
        cubo1.pinta();
        System.out.println("Cubo 2: " + cubo2.getCapacidad() + " / " + cubo2.getContenido());
        cubo2.pinta();
    }
}

 

Deja una respuesta