Proy2Sec10+Grupo+No.+8

diseño**Universidad del Valle de Guatemala ** 09073 De Leon Coosemans, Carlos Efrain 09071 Mendizabal Frances, Juan Carlos 09153 McGauran Ros, Bryan Joseph Sección 10 Grupo 8
 * Fundamentos de Programación **

**Preguntas Insustituibles **
 * Meta: **Diseñar un juego en el que el usuario pueda mover cierto número de aros de un lugar a otro siguiendo las reglas, teniendo el juego varios niveles de dificultad (La cantidad de aros)

Números de aros que el jugador escoja. Numero de movimientos. El tiempo en que el jugador logra mover los aros completamente.
 * Datos: **

El jugador solo puede mover un aro a la vez. No se puede colocar un aro más grande sobre otro más pequeño.
 * Condiciones: **


 * Proceso: **Con el uso de Python realizaremos un programa en el cual por medio de funciones definiremos los parámetros y las acciones que el jugador puede tomar. Así como una serie de instrucciones para que el jugador pueda jugar sin tener ningún problema. A cada función se le pondrá un docstring para definirla, así como un doctest o pruebas unitarias para cada una de las mismas. Para representar gráficamente utilizaremos una interfaz grafica para mostrar, representar y ser al mismo tiempo más amigable e interactivo con el usuario.

**__MANUAL DE USUARIO __** El juego Torre de Hanoi consiste en que el usuario traslade los discos de una torre hasta la última torre respetando que solo se puede mover un disco a la vez y que no se puede colocar un disco más grande dentro de otra. Así también se puede escoger el nivel de dificultad, eligiendo un numero de discos con los que se desea jugar.
 * __El programa Torre de Hanoi __**

Para usar y jugar el programa de Torre de Hanoi tienes que tener python en tu computo, si no lo tienes debes descargar Python versión 2.6. El programa se puede descargar de la página apachando en el link: __ http://www.python.org/download/ __   . Para correr y usar Python, después de instalar Python, ábralo y en file, Open… de allí busque el archivo en donde está guardador el programa. Al encontrarlo y tener el código abierto apache el boto F5 y allí correrá el GUI. Asi ya puedes empezar a jugar Torre de Hanoi.
 * __Instrucciones para instalar Python __**


 * __<span style="color: black; font-family: 'Arial','sans-serif'; font-size: 10pt; line-height: 115%;">El juego __**<span style="color: black; font-family: 'Arial','sans-serif'; font-size: 10pt; line-height: 115%;"> Dentro del juego se abrirá la ventana de inicio en donde pregunta si el usuario desea jugar o no, al seleccionar la opción jugar despliega la ventana de instrucciones en donde explica las condiciones del juego y la manera en que se juega. Al darle la opción siguiente muestra la ventana en donde se escoge el nivel de dificultad poniendo el número de discos con los que se desea jugar. Por último muestra la ventana del juego en donde se muestra botones para ingresar los movimientos que el usuario desea, si no se ingresa una opción correcta o un carácter que no identifica el programa despliega una ventana de error.

Si el usuario tiene algún problema, duda o sugerencias le puede escribir un correo a los creadores del programa:
 * __<span style="color: black; font-family: 'Arial','sans-serif'; font-size: 10pt; line-height: 115%; mso-ansi-language: ES-GT; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin;">Problema con el juego __**<span style="color: black; font-family: 'Arial','sans-serif'; font-size: 10pt; line-height: 115%; mso-ansi-language: ES-GT; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin;">

<span style="font-family: 'Arial','sans-serif'; font-size: 10pt; line-height: 115%; mso-ansi-language: ES-GT; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; msoansilanguage: ES-GT; msoasciithemefont: minor-latin; msobidifontfamily: 'Times New Roman'; msobidilanguage: AR-SA; msobidithemefont: minor-bidi; msofareastfontfamily: Calibri; msofareastlanguage: EN-US; msofareastthemefont: minor-latin; msohansithemefont: minor-latin;">bryan_mcgauran@hotmail.com <span style="color: black; font-family: 'Arial','sans-serif'; font-size: 10pt; line-height: 115%; mso-ansi-language: ES-GT; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; msoansilanguage: ES-GT; msobidilanguage: AR-SA; msofareastfontfamily: Calibri; msofareastlanguage: EN-US; msofareastthemefont: minor-latin; msospacerun: yes;"> <span style="font-family: 'Arial','sans-serif'; font-size: 10pt; line-height: 115%; mso-ansi-language: ES-GT; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; msoansilanguage: ES-GT; msoasciithemefont: minor-latin; msobidifontfamily: 'Times New Roman'; msobidilanguage: AR-SA; msobidithemefont: minor-bidi; msofareastfontfamily: Calibri; msofareastlanguage: EN-US; msofareastthemefont: minor-latin; msohansithemefont: minor-latin;">fefa_deleon@hotmail.com <span style="color: black; font-family: 'Arial','sans-serif'; font-size: 10pt; line-height: 115%; mso-ansi-language: ES-GT; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; msoansilanguage: ES-GT; msobidilanguage: AR-SA; msofareastfontfamily: Calibri; msofareastlanguage: EN-US; msofareastthemefont: minor-latin; msospacerun: yes;"> <span style="font-family: 'Arial','sans-serif'; font-size: 10pt; line-height: 115%; mso-ansi-language: ES-GT; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; msoansilanguage: ES-GT; msoasciithemefont: minor-latin; msobidifontfamily: 'Times New Roman'; msobidilanguage: AR-SA; msobidithemefont: minor-bidi; msofareastfontfamily: Calibri; msofareastlanguage: EN-US; msofareastthemefont: minor-latin; msohansithemefont: minor-latin;">elguanaco12@hotmail.com <span style="color: black; font-family: Arial; font-size: 10pt; line-height: 115%; mso-ansi-language: ES-GT; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; msoansilanguage: ES-GT; msobidilanguage: AR-SA; msofareastfontfamily: Calibri; msofareastlanguage: EN-US; msofareastthemefont: minor-latin;">

TORRE HANOI http://www.youtube.com/watch?v=iadpPNlJut8 ERRORES http://www.youtube.com/watch?v=bjiYa5uFAKc <span style="color: #244061; font-family: 'Arial','sans-serif'; font-size: 18pt;">

ANALISIS DE REQUERIMIENTOS <span style="font-family: 'Arial','sans-serif';">


 * <span style="color: black; font-family: 'Arial','sans-serif';">Meta: **<span style="color: black; font-family: 'Arial','sans-serif';">Diseñar un juego en el que el usuario pueda mover cierto número de aros de un lugar a otro siguiendo las reglas, teniendo el juego varios niveles de dificultad (La cantidad de aros)

Números de aros que el jugador escoja. Numero de movimientos. El tiempo en que el jugador logra mover los aros completamente.
 * <span style="font-family: 'Arial','sans-serif';">Datos: **

El jugador solo puede mover un aro a la vez. No se puede colocar un aro más grande sobre otro más pequeño.
 * <span style="font-family: 'Arial','sans-serif';">Condiciones: **

<span style="font-family: 'Arial','sans-serif';"> · <span style="color: black; font-family: 'Arial','sans-serif'; font-size: 7pt;"> <span style="color: black; font-family: 'Arial','sans-serif';">Breve descripción del programa (Narrativa): El programa empieza desplegando un menú, el cual le da la opcion al usuario de escoger si se quiere salir o jugar.En esta ventana se despliega la torre con los discos, los cuales fueron colocados por medio de coordenadas al igual que se definieron los colores de las letras, las figuras y el fondo. Si escoge la opcion de salir, el programa destruye la ventana para cerrar el juego (con juego.destroy). Por el otro lado si el jugador escoge la opcion de jugar, se llama a la funcion de instrucciones, para que se despliegue en la ventana las instrucciones del juego, para que el usuario comprenda como jugar.
 * <span style="font-family: 'Arial','sans-serif';">Proceso: **Con el uso de Python realizaremos un programa en el cual por medio de funciones definiremos los parámetros y las acciones que el jugador puede tomar, por medio de programación por eventos. Así como una serie de instrucciones para que el jugador pueda jugar sin tener ningún problema. A cada función se le pondrá un docstring para definirla, así como un doctest o pruebas unitarias para cada una de las mismas. Para representar gráficamente utilizaremos una interfaz grafica para mostrar, representar y ser al mismo tiempo más amigable e interactivo con el usuario. Se desplegaran mensajes de error si el usuario toma una decisión o acción incorrecta. El fin es pasar todos los bloques de la torre A a la torre C.

Luego de desplegar las instrucciones, se procede a desplegar la ventana en donde el usuario escoge el nivel de dificultad, la cantidad de discos, para que comience el juego. El juego consiste en pasar todos los discos de la primera torre a la tercera.

Para pasar los discos de una torre a otra, primero se borran dibujando un rectangulo del color del fondo y se vuelve a dibujar la linea. Luego para desplegar el disco escogido en la torre determinada, se dibuja por medio de coordenadas. Si el usuario trata de colocar un disco grande encima de uno pequeño, se despliega un mensaje de error en una ventana. Cuando se logra el objetivo de pasar todos los discos a la ultima torre, se despliega una ventana con la opción de volver a jugar o terminar el programa.

> Funciones: menuprincipal, instrucciones, ventananumdiscos,ventananumdiscos2, ventanajuego, colocar, borrar y opcionesmenu. <span style="color: black; font-family: 'Arial','sans-serif';"> <span style="color: black; font-family: 'Arial','sans-serif';"> <span style="color: black; font-family: 'Arial','sans-serif'; font-size: 14pt;"> Conclusiones <span style="color: black; font-family: 'Arial','sans-serif';"> · La interfaz grafica es útil para poder crear programas mas detallados y mas interactivos para el usuario. <span style="color: black; font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="color: black; font-family: 'Arial','sans-serif';">Por medio de repeticiones se puede crear un programa, que pueda seguir las mismas instrucciones una y otra vez dependiendo de la opción escogida por el usuario. <span style="color: black; font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="color: black; font-family: 'Arial','sans-serif';">La programación por eventos es útil, ya que el usuario escoge que es lo que quiere hacer, lo cual se hace definiendo comandos que tiene que seguir el programa según lo que haga el usuario (por ejemplo al presionar un botón). <span style="color: black; font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· <span style="color: black; font-family: 'Arial','sans-serif';">El modulo TKinter es importante para poder lograr crear toda la parte grafica del programa. <span style="color: black; font-family: 'Arial','sans-serif'; font-size: 7pt; msospacerun: yes;"> <span style="color: black; font-family: 'Arial','sans-serif';">
 * <span style="font-family: 'Arial','sans-serif';"> Formulas utilizadas, valores constantes de la formula, funciones matemáticas, etc.
 * <span style="font-family: 'Arial','sans-serif';">Variables: C, boton, entrada, solicitud, opcion, a, b, c, cont, boton1, boton 2, boton 3, boton 4,I, menú, juego, titulo, A,posi,ey,jugador,ini,fin,disco,cont,agarrar,discosA,discosB,discosC,a,posicionini,ent2,boton5,posicionfinal,ent3,boton6,boton7.
 * <span style="font-family: 'Arial','sans-serif';">Modulos utilizados:
 * <span style="font-family: 'Arial','sans-serif';">En este proyecto se utilizo el modulo TKinter, el cual sirve para realizar interfaces graficas, para poder ser mas interactivo con el usurio (botones, ventanas,etc.)
 * <span style="font-family: 'Arial','sans-serif';">Proposito de funciones:
 * <span style="font-family: 'Arial','sans-serif';">menuprincipal:esta funcion despliega el menú principal, en donde el usuario tiene la opcion de escoger si quiere jugar o salirse del programa, se colocan botones, labels y entrys.
 * <span style="font-family: 'Arial','sans-serif';">instrucciones:esta funcion despliega las instrucciones del juego para que el usuario comprenda como jugar.
 * <span style="font-family: 'Arial','sans-serif';">ventananumdiscos:esta funcion le da la opcion al usuario de escoger el numero de discos con los que quiere jugar.
 * <span style="font-family: 'Arial','sans-serif';">ventananumdiscos2:esta funcion le da la opcion al usuario de escoger el numero de discos con los que quiere jugar, cuando el usuario escoge la opcion de jugar otra vez al terminar un juego.
 * <span style="font-family: 'Arial','sans-serif';">ventanajuego:despliega el comienzo del juego, muestra la ventana del juego, con las tres torres y el numero de discos elegidos.
 * <span style="font-family: 'Arial','sans-serif';">colocar:esta funcion es la que determina los movimientos de discos que elige realizar el usuario. Dibuja el disco determinado en la posición o torre que elige el usuario, lo cual se realiza por medio de coordenadas.
 * <span style="font-family: 'Arial','sans-serif';">borrar:esta funcion dibuja un disco o rectangulo del color del fondo y vuelve a dibujar todo lo que estaba anteriormente, para lograr “borrar” el disco elegido.
 * <span style="font-family: 'Arial','sans-serif';">opcionesmenu:esta funcion define lo que hace el programa dependiendo de la opcion que elija el usuario.