1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
/** * Proyecto: 9x01-Torres de Hanoi * Fichero: Torre.java * Fecha: 25/04/2012 */ package torresDeHanoi; public class Torre { // PROPIEDADES private int ultPosLibre; // Indica la primera posicion libre de la tabla que almacena los Discos en la Torre: private Disco tablaDiscos[]; // Tabla de Discos que almacena N Discos. // CONSTRUCTOR /** * <p>El constructor establece el numero de Discos de la Torre.<br> * -- Si el numero de discos recibido es igual a la capacidad que tiene la Torre, se instanciaran los Discos para esa torre.<br> * -- En caso contrario se dejan a null</p> * * @param capDiscos <i>Indica el numero de Discos que debera de poder guardar la Torre.</i> * @param numDiscos <i>Indica el numero de Discos inicial que tendra la torre. El valor debera de ser de 0 o N Discos.</i> */ public Torre( int capDiscos, int numDiscos ) { tablaDiscos = new Disco[capDiscos]; ultPosLibre = numDiscos; if( numDiscos == capDiscos ) { int tamDisco = 1; for( int i = numDiscos - 1; i >= 0; i-- ) { tablaDiscos[i] = new Disco(tamDisco); tamDisco += 2; } } }; // METODOS /** * <p>Inserta un Disco en la posicion libre que indica la Torre.</p> * * @param d <i>El Disco a insertar en al Torre.</i> */ public void ponerDisco( Disco d ) { tablaDiscos[ultPosLibre] = d; ultPosLibre++; }; /** * <p>Extrae el Disco que indica la posicion libre -1 de la Torre.<br> * -- Despues de extraerlo se borra poniendolo a null</p> * * @return <i>Devuelve el Disco mas arriba de la Torre.</i> */ public Disco quitarDisco() { ultPosLibre--; Disco temp = tablaDiscos[ultPosLibre]; tablaDiscos[ultPosLibre] = null; return temp; }; /** * <p>Devuelve el tamaño del disco indicado.</p> * * @param com <i>El numero de Disco del cual se quiere su tamaño.</i> * @return <i>Se devuelve 0 si el Disco no existe en la posicion indicada, o el tamaño que tanga el disco si si existiese.</i> */ public int getTamanioDisco( int com ) { if( tablaDiscos[com] == null ) return 0; else return tablaDiscos[com].getTamanio(); } }; |