Proy3Sec30+Grupo+No.+9

Universidad del Valle de Guatemala Fundamentos de Programación Sección 30

__Proyecto # 3__ __Salto de Caballo__

Aldo Francisco Rojas 09060 Carlos José Grajeda 09001 Hugo Oliveros

**__1. MANUAL DE USUARIO:__**

Manual del Juego 1. Para poder utilizar este programa usted debe de tener instalado en su computadora Phyton 2.6.2, si usted no cuenta con el programa puede bajarlo de [|www.python.org/download/] 2. Para bajar el programa seleccione el programa que sea compatible con su servidor (Mac, Windows..) 3. Presione ejecutar en el cuadro de Texto que le aparecerá. 4. Cuando el programa termine de descargarse vuelva a presionar ejecutar. 5. Luego se le abrirá el cuadro de SetUp oprima Next para empezar. 6. Ahora escoja en que área del disco duro desea guardarlo y Next nuevamente. 7. Por último presione Finish 8. Guarde el programa proyecto3.py en la carpeta swampy de Python. 9. Ahora que ya tiene instalado el programa abra su IDLE (Python GUI) para poder correr el programa. 10. Ya en el IDLE presione en la esquina superior izquierda FILE, luego OPEN y busca dentro de su computadora el programa para poder abrirlo.

El objetivo de este juego es recolectar todas las monedas, pero ojo porque el caballo podrá moverse únicamente como en un juego de ajedrez, es decir se desplazará en “L”. El movimiento en “L” consiste en mover el caballo dos espacios en línea recta y luego un espacia a un lado, ya sea a la derecha o izquierda del segundo espacio. Debe tener mucha precaución debido a que una vez pasado por un espacio no podrá volver a posicionarse en el mismo por una segunda vez. Es por eso que el jugador debe planear estratégicamente sus movimientos para poder volver al punto del cual partió en un inicio. Debe considerar cada espacio como si fuesen torres muy frágiles las cuales al haber pasado por ellas se derrumbarán por lo que no se encontrarán disponibles luego de ello. El juego cuenta con 13 monedas, por lo tanto el caballo podrá desplazarse por la misma cantidad de espacios sin contar el espacio por el cual el caballo ha comenzado. Si el usuario ha conseguido recolectar las once monedas por completo ha ganado y obtenido el punteo más alto. De lo contrario solo obtendrá el punteo de acuerdo a la cantidad de monedas recolectadas. Si el usuario se ha quedado sin movimientos para regresar al punto del cual ha iniciado entonces perderá ya que no habrá podido cumplir el “objetivo” del juego, por lo que deberá iniciar el juego nuevamente para intentarlo de nuevo. Dudas o preguntas, mejoras: Si quieres contactarnos y saber más sobre nuestro juego, contáctanos a carlosgrajeda_14cardenas@hotmail.com a franko_1890@hotmail.com o a hugooliveros_15@hotmail.com, dejando tu consejo, duda o si deseas reportar un error, te responderemos con gusto.

2. **__ENLACE A VIDEO QUE MUESTRA EL FUNCIONAMIENTO:__**

[]

__**3. INVESTIGACIÓN CORTA:**__ Preguntas Insustituibles: o Meta:
 * Análisis de requerimientos:

§ Crear un juego que despliegue un tablero catorce casillas que contengan una moneda cada una. El caballo empezara en la casilla número doce, el objetivo de este es conseguir el mayor número de fichas y regresar al lugar donde inició, el juego termina cuando el caballo logra regresar a la casilla de inicio sin importar el número de monedas recolectadas. o Datos:

§ Caballo § Monedas <span style="msoansilanguage: ES-GT; msobidifontfamily: Wingdings; msofareastfontfamily: Wingdings; msolist: Ignore;">§ Matriz <span style="msoansilanguage: ES-GT; msobidifontfamily: Wingdings; msofareastfontfamily: Wingdings; msolist: Ignore;">§ Botones <span style="msoansilanguage: ES-GT; msobidifontfamily: Wingdings; msofareastfontfamily: Wingdings; msolist: Ignore;">§ Número de Fichas

o Condiciones o Restricciones:

<span style="msoansilanguage: ES-GT; msobidifontfamily: Wingdings; msofareastfontfamily: Wingdings; msolist: Ignore;">§ El tablero consta de 14 casillas <span style="msoansilanguage: ES-GT; msobidifontfamily: Wingdings; msofareastfontfamily: Wingdings; msolist: Ignore;">§ El caballo solo puede moverse en forma de “L” como en el ajedrez. <span style="msoansilanguage: ES-GT; msobidifontfamily: Wingdings; msofareastfontfamily: Wingdings; msolist: Ignore;">§ El juego termina cuando el caballo regresa a la casilla donde inicio (casilla # 12), sin importar el número de fichas recolectadas. <span style="msoansilanguage: ES-GT; msobidifontfamily: Wingdings; msofareastfontfamily: Wingdings; msolist: Ignore;">§ En cada movimiento el caballero recolecta una moneda. <span style="msoansilanguage: ES-GT; msobidifontfamily: Wingdings; msofareastfontfamily: Wingdings; msolist: Ignore;">§ El usuario no podrá utilizar aquellas casillas en las que no se encuentre una moneda, reduciendo el número de movimientos posibles.

o Procesos: <span style="msoansilanguage: ES-GT; msobidifontfamily: Wingdings; msofareastfontfamily: Wingdings; msolist: Ignore;">§ Al iniciar el programa aparece una interfaz con dos botones, uno para crear un nuevo juego y otro para mover el caballo, también se muestra un label en el cual se pondrá la posición a la que se quiere mover el caballo, el movimiento se realizara siempre y cuando haya una moneda en la casilla, de lo contrario no se realizara ningún movimiento. La partida termina cuando el caballo ya no tiene posibles movimientos o este regresa a la casilla de inicio, al regresar a esta casilla se desplegara una ventana que mostrara las fichas obtenidas y las opciones de jugar de nuevo o salir del juego.

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px;">- Fórmulas utilizadas, valores constantes de la fórmula, funciones matemáticas.

Se utilizó .config para configurar ya sea texto, para configurar las partes y colocar encima de cada pedazo de matriz una imagen. También se utilizó la función int que se encarga de recibir un número en cadena y lo convierte a entero. Por último se utilizó la función str que recibe un parámetro y dicho parámetro lo convierte a cadena.

(a) ¿Cómo llevará a cabo la solución? Variables y objetos a utilizar. Como base para realizar el juego Salto a caballo, se realizaron funciones que permitieran realizar cierta función que se repite durante el juego. Cada función tiene una actividad específica que realiza, como por ejemplo crear una lista, verificar que el movimiento a realizar sea válido o que vaya cambiando lo gráfico cuando se para sobre una ficha. Con lo que respecta a los objetos utilizados, se tiene entrada, para que ingrese la posición a moverse, botones, para realice la opción indicada, labels que muestran texto.
 * Diseño

(b) Descripción del curso lógico de la solución del problema. Cuando se le da la opción correr en el IDLE, el programa despliega una ventana que tiene tres botones: nuevo, que al presionar dicho botón, el programa se reinicia y vuelve a crear un nuevo juego, el juego anterior se destruye y se empieza desde cero. En la parte que aparece fichas, lleva un contador que indica las fichas que se han cogido. Después aparece una entrada para que el usuario ingrese con números la posición a la que se desea mover, esta posición se ingresa (la primera fila contiene posición 1,2,3,4: la segunda fila contiene la posición 5,6,7,8) y al ingresar dicha posición se presiona mover caballo y mueve el caballo a dicha posición. Cuando gana el usuario, recibe un mensaje de que ha ganado. Por último, si desea salirse del programa solamente presiona la X en la parte superior derecha de la ventana.

(c) Módulos de Python utilizados. Cómo se utilizarán en su programa. Para la realización del programa se utilizaron módulos que sirvieron para la creación del juego. Uno de ellos fue el módulo doctest, que se utiliza en las funciones para crear una buena documentación y crear mini test que ayudan al buen funcionamiento de cada función. Al comienzo de cada función aparece una descripción narrativa de qué realiza dicha función. Posteriormente se tiene una prueba de qué realiza cada función, si se le ingresa cierto valor a la función, qué debe de regresar y si no regresa algo, qué es lo que tiene que hacer dentro de ella. Como segundo módulo utilizado y el más importante para la creación del juego, se utilizó el módulo Gui, que es un conjunto de opciones que crea botones, canvas, entradas, labels y demás para una visualización gráfica en Python. Con este módulo se creó principalmente todo el juego ya que de él dependía su buen funcionamiento y apariencia.

(d) Funciones desarrolladas por el programador. Para que se usan, parámetros esperados. Las funciones son: Constructor: esta función no recibe ningún parámetro para empezar, posee un ciclo que crea la matriz en que se va a estar cada botón. Le asigna el valor arbitrario de 100 a la casilla donde va a comenzar el caballo y a las demás le asigna el valor de 1,2,3 etc, al finalizar de realizar esto, la función le asigna valor de cero a los espacios donde no hay número. Nuevo: no recibe ningún parámetro. Esta función tiene la tarea de realizar una invocación a constructor y con esto ya se tiene construida la matriz. Ya construida la matriz, se realiza un ciclo que va a verificar si el número de dicha matriz cumple condiciones. Si el número es cero, ,coloca la imagen nada que es solamente un cuadro, si es un 100 que se definió antes, coloca la imagen del caballo que es la posición inicial, si es diferente de los anteriores se encarga de colocar la ficha. Cumple(pos1,pos2,pos3,pos4): Esta función recibe cuatro parámetros, los primeros dos parámetros que recibe son la pos1 y pos2. Esto significa que es la coordenada de la posición anterior a la que se movió. Pos1 es la posición de la primera fila y pos2 es la columna en que se encuentra. Los siguientes dos parámetros son pos3 y pos4 que son las coordenadas de la nueva posición, así mismo pos3 es la coordenada de fila y pos4 es la de columnas. Esta función evalúa las posibles combinaciones que pueda moverse en L el caballo, si la cumple es verdadero, como final regresa verdadero si se cumple o falso en caso contrario. Anterior(pos1,pos2):Esta función recibe como parámetros la posición en que se está y verifica que sea una posición válida, ya con esto asigna valores a otros y posteriormente verifica si la posición es 100 el caballo es que ya ganó y regresa la invocación de cumple con las nuevas coordenadas. Y si cumple con cumple con las coordenadas y las nuevas, se mueve Move: esta función no recibe parámetro alguno. Verifica ciertos parámetros para moverse y si los cumple, sigue adelante. Si el parámetro es el valor de la primera posición del caballo, tira mensaje de ganó

<span style="font-family: Symbol; font-size: 12pt; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· Aprendimos a manejar con mayor habilidad el modulo Gui y sus componentes, para la elaboración de gráficos y sus opciones. <span style="font-family: Symbol; font-size: 12pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· Aprendimos nuevas técnicas de trabajar con matrices y perfeccionamos las ya conocidas <span style="font-family: Symbol; font-size: 12pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· Aprendimos a elaborar matrices mediante el uso de etiquetas (labels) <span style="font-family: Symbol; font-size: 12pt; line-height: 115%; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; msobidifontfamily: Symbol; msofareastfontfamily: Symbol; msolist: Ignore;">· Los booleanos fueron de mucha importancia en la elaboración de nuestro proyecto para comprobar que los movimientos fueren los especificados por el juego.
 * Conclusiones

<span style="mso-ansi-language: EN-US; mso-fareast-font-family: Arial; msoansilanguage: EN-US; msofareastfontfamily: Arial; msolist: Ignore;">1. Link: http://www.sheppardsoftware.com/braingames/greedy/greedy.htm <span style="mso-ansi-language: EN-US; mso-fareast-font-family: Arial; msoansilanguage: EN-US; msofareastfontfamily: Arial; msolist: Ignore;">2. Link: www.python.org/download/ <span style="font-family: Arial; font-size: 12pt; line-height: 115%; mso-fareast-font-family: Arial; msofareastfontfamily: Arial; msolist: Ignore;">3. Python para todos. http://docs.python.org/library/ <span style="font-family: Arial; font-size: 12pt; line-height: 115%; mso-ansi-language: EN-US; mso-fareast-font-family: Arial; msoansilanguage: EN-US; msofareastfontfamily: Arial; msolist: Ignore;">4. Think python. http://docs.python.org/library/ <span style="font-family: Arial; font-size: 12pt; line-height: 115%; mso-ansi-language: EN-US; mso-fareast-font-family: Arial; msoansilanguage: EN-US; msofareastfontfamily: Arial; msolist: Ignore;">5. [] __**4. PROGRAMA FUENTE
 * Bibliografía

**__