Proy1Sec30+Grupo+No.+4


 * __INTEGRANTES__**:

CARLOS JOSÉ GRAJEDA CÁRDENAS 09001

CARLOS RANDOLFO MONZÓN 09296


 * __SECCIÓN__**:

30

__**JUEGO**__:

TRES NÚMEROS


 * __1. MANUAL DE USUARIO__**


 * **Comenzando**: Para empezar, tienes que descargar el programa llamado Python, que se encuentra en []. En esta página encontrarás que existen varias versiones versiones de dicho programa. La versión a descargar es la 2.6.2. Instalas el programa, según las indicaciones que te de.
 * **Descargando el archivo**: Ya instalado Python en tu computadora, necesitas descargar el juego llamado juegoTresNumero.py. [[file:juegoTresNumeros.py.py]]. Ahora tendrás que hacer click derecho sobre el link del juego y hacer click en guardar destino como.... Ya que te despliegue el cuadro de guardar como tienes que seleccionar la carpeta donde quieres guardar el juego.
 * **Tres Números**: Tres números es un juego que consite en encontrar cuatro números de tres cifras cada uno. Por ejemplo 425, 062, 499, etc.. Por ello el juego empieza con un número, tienes que adivinar las tres cifras y el juego te pide cifra por cifra, cuando adivinas un número (tres cifras), pasas al siguiente número y así sucesivamente. Pero el juego tiene su dificultad ya que solamente tienes 8 oportunidades para adivinar una cifra de un número, y las oportunidades no son acumulativas. Si logras adivinar todos los cuatro números sin que se te acaben las 8 oportunidades en una cifra serás vencedor y habrás ganado.
 * **Menú:** Al comenzar el juego aparecerá un menú con varias opciones. Si se desea saber la información del juego se presiona 1 y después enter, si se quiere revisar el manual de usuario se pone 2 y enter, si se quiere jugar se presiona 3, pero si se desea saber sobre los créditos, se presiona el 4 y enter.
 * **Empezando a jugar**: Ya descargado el juego en tu computadora, tienes que abrir el archivo. Tienes que hacer click derecho sobre e archivo y hacer click en edit with IDLE. Ya con esto, te saldrán dos ventanas, una con un código y otra ventana que aparece vacía.
 * **Jugando**: Ahora que ya tienes corriendo a el juego, el juego te pide que igreses un número que ésté en el rango dado, recuerda que puedes ingresar los números del rango (inclusive), para ello tienes que ingresar un número y despúés solamente presionar enter.
 * **Terminando de jugar**: Si ya no deseas jugar más, solamente tienes que cerrar las dos ventanas, la del código y en la que estabas jugando. Lo haces como cualquier archivo de computadora, solamente presionas sobre la x en la esquina superior derecha y eso es todo.
 * **Errores**: Recuérdate que solamente puedes ingresar números enteros (1,2,3,7, etc) y por ello si ingresar una letra o un signo extraño el juego no reconocerá dicho signo y tendrá error. Para ello necesitas salirte de dicha ventana presionando la x y de nuevo correr el programa en Run y después Run Module (F5).
 * **Dudas o** **preguntas, mejoras**: Si quieres contactarnos y saber más sobre nuestro juego, contáctanos a carlosgrajeda_14cardenas@hotmail.com o a chuck_pimp@hotmail.com, dejando tu consejo, duda o si deseas reportar un error, te responderemos con gusto.


 * __2. ENLACE A VIDEO QUE MUESTRA EL FUNCIONAMIENTO DEL JUEGO TRES NÚMEROS__**
 * Para ver cómo funciona el juego Tres números, solamente ingresa a este link que te llevará a ver un video de cómo funciona el juego. []


 * __3.INVESTIGACIÓN CORTA:__**

(1) Análisis de requerimientos: a.) Preguntas insustituibles: ¿Cuál es la meta? La meta es programar un juego en el computador en el cuál el usuario debe de adivinar cuatro números de tres cifras cada uno. El programa le proporcionará al usuario pistas que este deberá utilizar para adivinar los cuatro números que la máquina está “pensando.” ¿Cuáles son los datos? Son cuatro números. ¿Cuáles son las condiciones o restricciones? Cada número tiene tres cifras. El usuario tendrá solamente ocho oportunidades para adivinar las tres cifras de cada número. Las pistas que proporcionará el programa al usuario solo deben de ser rangos entre los cuales se debe encontrar la cifra, por ejemplo: (para 5<x<9) la cifra se debe encontrar entre cinco y nueve. ¿Cuál fue el procedimiento? El primer paso fue importar el módulo random. Esto fue para poder crear una función que permitiera que los cuatro números que “pensaba” la máquina, fueran seleccionados al azar. Luego se procedió a incluir en el programa una variable global con la cual el programa podría “decirle” al usuario que el número que él/ella había ingresado era el correcto. Después se trabajó con la estructura “while” (o mientras) para que el programa le “avisara” al usuario que el número que él/ella ingresó no es el que la máquina estaba “pensando.” El programa debe darle al usuario ocho oportunidades para adivinar cada uno de los cuatro números. Se le ordenó al programa de que mientras el usuario no ingresara el número correcto, este siguiera corriendo y pidiéndole que ingrese otro número; y que por cada oportunidad perdida, restara una a las ocho posibles que tiene el usuario. Básicamente en esto consiste todo el programa, pero sin embargo se le hicieron algunas añadiduras estéticas y funcionales. Por ejemplo, se creó un menú principal, el cual el usuario podrá utilizar simplemente presionando las teclas de los números de su computador. El menú ofrece iniciar a jugar, instrucciones como el juego, o aspectos importantes de su creación. Al final del programa, para finalizar el juego; se felicita al usuario ganador mostrando un mensaje en pantalla, y se muestran los cuatro números adivinados.

b.) Fórmulas utilizadas: Se definieron las siguientes cinco funciones para la creación de este programa: la función //azar// la cual calcula un número al azar; la función //empezar// que evalúa si el número ingresado por el usuario es el pedido por el juego; la función //intentos// la cual calcula el número de intentos restantes//,// la función //gameover// que imprime en pantalla el mensaje “Game Over” para indicarle al usuario que ha perdido el juego porque este ha agotado todas oportunidades de descifrar las tres cifras del número; y la función //prueba// que es invocada y utilizada en el doctest. Valores constantes de las fórmulas: El único valor constante que se utiliza en todo el programa es el que se utiliza en las funciones //intentos// y //gameover//, para determinar un número limitado de oportunidades para adivinar. Para esto de le asigno el número 9 la variable intento (intento = 9). Funciones matemáticas: Para la creación de este programa ni siquiera hizo falta importar el módulo math. En este juego solamente se utilizan los principios de la selección aleatoria, ya que este es un juego de azar. Por lo tanto, no fue necesario usar ninguna función matemática compleja; solo la suma y resta. (2) Diseño: a.) ¿Cómo llegará a la solución? Variables y objetos a utilizar. A la solución de llega de una manera tan simple. Simplemente hay que comprender como es que funciona este juego de azar. La máquina selecciona un número de tres cifras de forma aleatoria. Entonces el usuario ingresa un número, de acuerdo a la pista que la máquina le proporcione (la pista consiste en un rango o intervalo de números entre los cuales se encuentra el número que la máquina esta “pensando”), si el número es el correcto, entonces la máquina le muestra un mensaje que le indica al usuario que el número que ingresó es el correcto y de que debe de proceder a ingresar la siguiente cifra. En caso del que número ingresado sea incorrecto, se muestra un mensaje en pantalla que le indica al usuario que debe de intentarlo de nuevo porque el número que escogió es incorrecto. Por cada vez que el usuario ingrese un número incorrecto, el programa deberá de restarle uno, a la variable //intento// a la que se le asignó como valor el número nueve (9). b.) Descripción del curso lógico de la solución del problema. Primero la máquina selecciona un número de tres cifras al azar. Entonces el usuario debe de adivinar el número cifra a cifra. Se empieza con la primera cifra, para la cual la máquina le mostrará en pantalla al usuario un rango (ej. 5<x<9) en el cual se encuentra la primera cifra del número que la máquina ha seleccionado. Si el usuario ingresa el número correcto, la máquina le muestra un mensaje en pantalla que le indica que la primera cifra es correcta y que debe de ingresar la siguiente. Para seleccionar la siguiente cifra del número, el usuario recibe otra pista (ej. 2<x<4). En caso de que la cifra que ingrese el usuario sea incorrecta, un mensaje aparecerá en pantalla que le indicará al usuario que la cifra que ingresó es incorrecta y que debe de intentarlo de nuevo con otro número. De esta forma el usuario determina cuales son las tres cifras y así descifra el número que la máquina había seleccionado aleatoriamente. Se sigue el mismo método para los otros tres números que la máquina seleccionará aleatoriamente. Por cada vez que el usuario ingrese el número incorrecto, este perderá una de las ocho oportunidades que tiene para descifrar cada uno de los cuatro números. Si el usuario llegara a agotar todas sus oportunidades, un mensaje aparecería en pantalla indicándole que ha perdido el juego, e inmediatamente el programa dejaría de “correr.” c.) Módulos de Python utilizados. Cómo se utilizarán en su programa. El módulo de Python utilizado en este programa es el módulo //random.// El módulo random cuenta con una función llamada //randint//. Esta función tiene dos argumentos (a,b) y genera un número entero en el rango a <= x <= b. El número entero es seleccionado aleatoriamente. También se importó el módulo //doctest.// Este módulo permite la generación de pruebas que son basadas en las salidas del interpretador del //Python shell//. d.) Funciones desarrolladas por el programador. Para que se usan, parámetros esperados. Entre las funciones que fueron desarrollados por el programador para después ser invocadas y que estas regresarán un valor se encuentran: //def empezar// recibe números enteros como argumentos y su función es verificar si el número ingresado por el usuario es el mismo que el pedido por el juego //; def azar// recibe números enteros como argumentos y su función es calcular un número entero al azar//; def intentos// recibe números enteros como argumentos y su función es calcular el número de intentos restantes//; def gameover// su función es terminar de correr el juego cuando el usuario pierda todas sus oportunidades y mostrar un mensaje en pantalla que le indique al usuario que ha perdido el juego//; def prueba// esta función el //doctest.testmod (verbose=True//

(3) Conclusiones Tras la realización de este proyecto, por fin se pudo poner en práctica de una forma tan palpable y real toda la teoría vista en la clase de programación. En este proyecto se pusieron en práctica todos los términos y conceptos vistos desde el primer día de clases; desde algoritmos, hasta los módulos. Se necesitó usar de funciones, de variables, de módulos y de funciones matemáticas para poder realizar este programa que se pedía. Este proyecto es la consumación de la primera mitad del curso, porque en este proyecto se pudo probar que los alumnos ya tienen los conocimientos suficientes como para que se les presentara un problema de ese tipo, y ellos supieran resolverle mediante la aplicación de todos los temas vistos en clase y trabajados en los laboratorios. El enriquecimiento que este curso le puede dar al alumno incuantificable, especialmente en el campo de la aplicación de la programación, tomando en cuenta que no es lo miso dominar la teoría que el ser capaz de que, planteado un problema o situación, se sepa que herramientas usar para llegar a la solución.

(4.) Referencias bibliográficas About.com. (2009). //Python.// [] Beltrán, V. Python, Lección No. 2. [], versión electrónica. Downey, Allen. Python for software design: How to think like a computer scientist. [] versión electrónica. Gauld, A. //Learn to Program using Python.// Addison-Wesley. Pearson Education. Python Software Fundation. (2009). //The Python Tutorial.// http://docs.python.org/tutorial/


 * __4. PROGRAMA FUENTE CON DOCUMENTACIÓN INTERNA__**


 * Descarga el juego totalmente gratis. Tendrás que hacer click derecho sobre el link del juego y hacer click en guardar destino como.... Ya que te despliegue el cuadro de guardar como tienes que seleccionar la carpeta donde quieres guardar el juego.
 * [[file:juegoTresNumeros.py.py]]


 * __5. MUESTRA DE LOS RESULTADOS DE LAS PRUEBAS UNITARIAS__**
 * Estas son las pruebas unitarias de las funciones del juego Tres Números.
 * Esta función es la que da un número al azar: [[file:funcionazar.py]]
 * Esta función es la que evalúa si el número que ingresaste es el número dado al azar: [[file:funcionempezar.py]]
 * Esta función es la que te quita tus oportunidades cuando las usas: [[file:funcionintentos.py]]
 * Y por último la función que te despliega que has perdido, la de game over: [[file:funciongameover.py]]