Last active
August 29, 2015 14:18
-
-
Save migueldiab/47e52a85cb0792dd288f to your computer and use it in GitHub Desktop.
Un programa simple para tomar café! Para enseñar a niños a programar
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.company; | |
import com.company.Main.Cuchara.TamanoCuchara; | |
import com.company.Main.Taza.TipoContenido; | |
import java.util.ArrayList; | |
import java.util.List; | |
import java.util.Random; | |
import java.util.logging.Logger; | |
public class Main { | |
public static Logger log = Logger.getLogger(Main.class.getName()); | |
public static void main(String[] args) { | |
Taza unaTazaDeCafe = new Taza(); | |
unaTazaDeCafe.agregarContenido(TipoContenido.CAFE, 10); | |
unaTazaDeCafe.agregarContenido(TipoContenido.LECHE, 20); | |
unaTazaDeCafe.agregarContenido(TipoContenido.AZUCAR, 5); | |
Cuchara cuchara = new Cuchara(); | |
cuchara.tamano = TamanoCuchara.CAFE; | |
unaTazaDeCafe.cuchara = cuchara; | |
unaTazaDeCafe.revolver(5); | |
unaTazaDeCafe.tomar(15); | |
unaTazaDeCafe.tomar(15); | |
unaTazaDeCafe.tomar(15); | |
} | |
static class Taza { | |
private List<TipoContenido> contenidoTaza = new ArrayList<TipoContenido>(max_contenido); | |
private static final int max_contenido = 250; | |
public Cuchara cuchara; | |
public void tomar(int mlATomar) { | |
if (contenidoTaza.size() < mlATomar) { | |
log.warning("No hay tanto contenido para tomar"); | |
return; | |
} | |
int tomado = contenidoTaza.size() - mlATomar; | |
for (TipoContenido tipoContenido : contenidoTaza.subList(tomado, contenidoTaza.size())) { | |
System.out.println("Tomado " + tipoContenido); | |
} | |
contenidoTaza = contenidoTaza.subList(0, tomado); | |
System.out.println("Queda en la taza " + contenidoTaza.size() + " ml de bebida"); | |
} | |
enum TipoContenido { | |
CAFE, | |
LECHE, | |
AZUCAR, | |
AGUA | |
} | |
public boolean revolver(int giros) { | |
if (null != cuchara) { | |
System.out.println("Revolviendo"); | |
cuchara.girar(contenidoTaza, giros); | |
} else { | |
log.warning("No tengo cuchara."); | |
return false; | |
} | |
return true; | |
} | |
boolean agregarContenido(TipoContenido tipoContenido, int mililitros) { | |
if (contenidoTaza.size() + mililitros > max_contenido) { | |
log.warning("No se puede agregar tanto " + tipoContenido + " sin volcarse"); | |
return false; | |
} | |
for (int i = 0; i < mililitros; i++) { | |
contenidoTaza.add(tipoContenido); | |
System.out.println("Se agregó " + tipoContenido); | |
} | |
return true; | |
} | |
} | |
static class Cuchara { | |
enum TamanoCuchara { | |
CAFE(5), | |
POSTRE(10), | |
SOPA(20), | |
CUCHARON(50); | |
int tamano; | |
TamanoCuchara(int tamano) { | |
this.tamano = tamano; | |
} | |
public int getTamano() { | |
return tamano; | |
} | |
} | |
TamanoCuchara tamano = null; | |
Random randGen = new Random(); | |
boolean girar(List<TipoContenido> contenido, int giros) { | |
for (int i = 0; i < giros; i++) { | |
for (int j = 0; j < this.tamano.getTamano(); j++) { | |
System.out.print("."); | |
int x = randGen.nextInt(contenido.size()); | |
TipoContenido revuelto = contenido.get(x); | |
contenido.remove(revuelto); | |
contenido.add(revuelto); | |
} | |
System.out.println("|"); | |
} | |
return true; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment