Está en la página 1de 3

PROGRAMACION DE COMPUTADORES

GRUPO 13
Proyecto Final - 2012-I
Introduccin
Las Torres de Hanoi es un juego matemtico o rompecabezas. Consiste en tres
pilotes, y una cantidad n de discos de tamaos diferentes que pueden
encajarse en cualquier pilote. El juego comienza con todos los discos apilados
en orden ascendente de tamao (con el disco ms pequeo en el tope) en el
pilote 1. El objetivo del juego es mover toda la pila de discos al pilote 3.

Configuracin inicial de las Torres de Hanoi


Descripcin del juego
Para cumplir el objetivo del juego, se deben seguir las siguientes reglas:
Slo puede moverse un disco a la vez
Cada movimiento consiste en tomar el disco ubicado en la parte superior
de un pilote y encajarlo en otro pilote, encima de los dems discos
ubicados en el pilote de destino
Un disco no puede ubicarse encima de otro ms pequeo
El rompecabezas puede jugarse con cualquier cantidad de discos, aunque
usualmente este nmero suele restringirse entre 3 y 9 discos. El nmero
mnimo de movimientos requeridos para resolver las Torres de Hanoi con una
cantidad n de discos es 2n-1.
DESCRIPCIN DEL PROYECTO FINAL
El objetivo del proyecto final ser desarrollar un programa que le permita al
usuario jugar las Torres de Hanoi con hasta 6 discos. Se le ofrecern al usuario
dos modos distintos de juego: el primero, en el que se le irn solicitando al
usuario uno a uno los movimientos deseados y se irn desarrollando siempre y
cuando el movimiento sea vlido hasta obtener el resultado requerido; y el
segundo, que ser un modo automtico en el que se le mostrar al usuario
paso a paso cmo se resuelve el juego cuando se tienen 4 discos.

Representacin del escenario de juego


Se definir un nuevo tipo de dato denominado torresHanoi, en la que se
almacenar tanto la cantidad de discos a usar como tres diferentes arreglos de
tamao mximo 6 que representarn cada uno de los pilotes del juego. En
estos arreglos se almacenarn los discos que contiene cada pilote utilizando
nmeros que representarn el tamao de los discos, nmeros que actuarn
tambin como identificadores de cada disco:

Discos en el pilote

Representacin en el arreglo

De acuerdo a los movimientos de los discos que se vayan haciendo a lo largo


del juego, los arreglos deben ir actualizndose en consecuencia. Para llevar un
registro de los movimientos, y as permitir al usuario que pueda deshacer
movimientos previos, se definir un nuevo tipo de dato llamado movimiento
que almacenar un identificador del movimiento, el identificador del disco que
se movi, y los pilotes origen y destino que formaron parte del movimiento. En
el programa, se utilizar entonces un arreglo de hasta 100 elementos de este
tipo de dato, el cual se ir actualizando de acuerdo a cada movimiento
efectuado.
Impresin del escenario de juego en pantalla
En pantalla, debern presentarse los pilotes y los discos dibujados con
caracteres. Se utilizar el caracter 'I' para pintar los pilotes y el caracter 'X'
para pintar cada uno de los discos, as:
III
XXXII
XXXXXII
XXXXXXXII
XXXXXXXXXII
XXXXXXXXXXXII
XXXXXXXXXXXXXII
Con cada movimiento, debe presentarse al usuario la actualizacin del estado
de los pilotes, as:
III
III
XXXXXII
XXXXXXXII
XXXXXXXXXII
XXXXXXXXXXXII
XXXXXXXXXXXXXXXXI

Descripcin de la interfaz de usuario


La interfaz de usuario del programa se basar en mens, en los que se
presentarn al usuario las opciones disponibles y se le permitir escoger
aquella que desee ejecutar.
El men principal presentar al usuario los dos modos de juego, modo
individual y modo automtico, as como la opcin de salir del programa.
Al entrar al modo individual, se le preguntar primero al usuario la cantidad de
discos con los que desea jugar (entre 3 y 6). Una vez identificada la cantidad,
se le presentar al usuario el escenario de juego con los discos apilados en
orden en el pilote 1, listo para empezar a jugar. De forma iterativa, se le pedir
al usuario que indique el disco a mover y a qu pilote desea moverlo. El
programa deber verificar que el disco seleccionado est libre para moverse
(que no est debajo de otros) y que el movimiento sea vlido, es decir, que en
el pilote a donde se quiere llevar el disco no quede debajo un disco de tamao
menor al que se est moviendo. Si el movimiento es vlido, se presentar al
usuario la actualizacin del estado de los pilotes y los discos, y se registrar en
el arreglo de movimientos la informacin del movimiento realizado. Tambin
debe ofrecerse al usuario la posibilidad de deshacer el ltimo movimiento, para
lo cual se utilizar el arreglo que almacena los movimientos realizados. El
proceso debe repetirse iterativamente hasta que se llegue a la configuracin
deseada, es decir, que todos los discos se encuentren en el pilote 3 y en el
orden inicial. En ese momento, se debe indicar el final del juego, y se le debe
solicitar al usuario si desea ver el registro de movimientos en pantalla, o si
desea generar un archivo de texto con el registro de los movimientos.
Dependiendo de la opcin escogida, el contenido del arreglo de movimientos
deber presentarse en pantalla o imprimirse en un archivo de texto de acuerdo
al siguiente formato:
TorresdeHanoiconXdiscos
Movimiento1:disco1delpilote1alpilote3
Movimiento2:...
Finalmente, se regresar al men principal.
En el modo automtico, se le indicar al usuario que se le presentar paso a
paso la solucin de las Torres de Hanoi utilizando 4 discos. Luego, se imprimir
paso a paso la solucin, mostrando el estado de los pilotes y los discos despus
de cada movimiento y adems indicando en una frase de qu pilote a qu
pilote se realiza ese movimiento. Para permitir al usuario que vea cada uno de
los pasos, se har una pausa esperando a que el usuario oprima una tecla
especfica para continuar. Al terminar todos los pasos, se presionar una tecla y
se retornar al men principal.
Al escoger la opcin de salir en el men principal, el programa debe terminar y
cerrarse.

También podría gustarte