Skip to content

Instantly share code, notes, and snippets.

@migueldiab
Last active August 29, 2015 14:18
Show Gist options
  • Save migueldiab/47e52a85cb0792dd288f to your computer and use it in GitHub Desktop.
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
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