Proy2Sec30+Grupo+No.+1





**Proyecto #2: Dados **

¡Bienvenido al juego Yachtzee! __*Nota importante*:__ Para el correcto funcionamiento del siguiente juego, se debe de tener el programa Python (Versión 2.6.3) y el interfaz gráfico llamado Swampy. Ya teniendo estos dos programas se debe de agregar el archivo en la carpeta swampy1.1. Este juego debe de ser abierto desde esa página, usando el intérprete de Python. Para hacer ésto, debes hacer click derecho sobre el archivo .py del juego, y hacer cllick en Edit with Idle. Luego, debes presionar F5, o Run Module. Puedes obtener el código fuente haciendo click aquí: Puedes instalar Python de esta página: []. Puedes instalar Swampy desde esta página: []
 * Manual de usuario:**

El objetivo del juego es obtener la mayor cantidad de puntos, los cuales se obtienen con las diferentes variaciones en los números de los dados. Dependiendo de la combinación, puedes elegir la opción que te dé más puntos. Haz click en el botón 'Puntos por combinaciones' para ver una tabla de puntos otorgados.

Para jugar Yachtzee, comienzas haciendo click en el botón '¡Tira los dados!'. Esto hará que te aparezcan cinco dados con números al azar en el espacio azul. En caso de presionar algún botón mientras no se tenga ningún dado, esto no causará ningún proceso. Si miras que hay una buena combinación, puedes hacer click en la opción que deseas. Si quieres cambiar todos los dados haz click en el botón '¡Tira los dados!' nuevamente. Cada turno tienes tres oportunidades de tirar los dados. Si únicamente quieres variar ciertos dados, puedes hacer click en los botones 'Mantener dado igual'. Haz click en el botón debajo del dado que quieres conservar. Puedes hacer click en más de uno. También puedes deseleccionarlo haciendo click en el botón nuevamente. Cuando ya estés satisfecho con tu combinación, o se hayan acabado las oportunidades, debes hacer click en una de las opciones de puntaje. También puedes ver cuántos puntos ganarás haciendo click en 'Mostrar Valores'. Te saldrá un mensaje en la parte inferior de la pantalla, indicándote cuantos puntos ganaste. Nuevamente recibirás una combinación de dados, y vuelves a empezar, con tres oportunidades. Cuando hayas agotado todas las opciones de puntaje, el juego terminará. En caso de presionar una de las combinaciones más de una vez, el programa simplemente no hará nada. Si deseas jugar nuevamente, debes cerrar el programa y volverlo a abrir.

Si usted desea hacer comentario o quiere darnos mejoras para este programa nos podremos contactar en las siguientes direcciones: rumanor@hotmail.com, linkinp_90@hotmail.com y carlosmonzon_91@hotmail.com.

¡¡¡Muchas gracias por jugar Yachtzee!!!


 * Enlace a video**:


 * Investigación corta:**

//Preguntas Insustituibles://

1. Meta: Sumar la mayor cantidad de puntos jugando el juego. 2. Datos: Números, 1s, 2s, 3s, 4s, 5s, 6s, 3 of a kind, 4 of a kind, full house, small straight, big straight, the yacht, chance, bonus 3. Condiciones: 1s es la cantidad de números 1 2s es la cantidad de números 2 3s es la cantidad de números 3 4s es la cantidad de números 4 5s es la cantidad de números 5 6s es la cantidad de números 6 3 of a kind son tres números iguales 4 of a kind son cuatro números iguales Full house es pareja y trío Small straight es cadena de 4 números Big straight es cadena de 5 números The yacht es 5 números iguales Chance es la suma de todos los dados Bonus es cuando de 1s a 6s es mayor a 63 puntos 1s da 1 punto por cada 1 2s da 2 puntos por cada 2 3s da 3 puntos por cada 3 4s da 4 puntos por cada 4 5s da 5 puntos por cada 5 6s da 6 puntos por cada 6 3 of a kind da la cantidad sumada de los números 4 of a kind da la cantidad sumada de los números Full house da 25 puntos Small straight da 30 puntos Big straight da 40 puntos The yacht da 50 puntos Chance da los puntos sumados de los dados 4. Procedimiento: El programa empieza cuando se hace que los dados giren y den un valor al azar. Aquí se puede presionar alguna de las opciones para sumar puntos, o se puede guardar uno de los dados y volver a girar los dados. Esto se puede hacer tres veces hasta que se presione la opción de sumar. Este proceso continua hasta que todos los botones estén presionados.Dependiendo de la opción electa para la puntuación, el programa realiza diversas acciones. Por ejemplo, si se eligen los unos, el programa lee, en una lista, cuantos unos hay, y presenta el valor. En el caso de las cadenas y full house, la lectura de la lista debía ser un poco más compleja, y comparar los valores de la lista entre sí para observar un patrón. 5. Resultado: El programa muestra la cantidad total de puntos obtenidos.

El juego realmente es muy simple en su estructura básica, por lo que se comenzó realizando eso. En cuanto a la parte gráfica, tenía un nivel de complejidad más alto, ya que habían muchas opciones que se podian elegir, y como es un tema nuevo tenía un nivel de dificultad más alto. Sin embargo, decidimos construir la estructura (que básicamente era la elección de números al azar y el análisis de éstos), y asociarla a la interfaz gráfica más tarde.

//Narrativa://

Para poder llegar a este resultado se debe de seguir los siguientes procesos. Primero se deben de crear 5 dados con un valor al azar los cuales se usarán para formar diferentes combinaciones, las cuales dan una cantidad de puntos específicos para cada combinación. En este punto se puede, presionar el botón de las combinaciones o fijar uno o más dados y hacer que los otros giren para tener un nuevo valor. Estos procedimientos se siguen hasta que todos los botones de combinación hayan sido presionados y los valores sumados. El resultado será la suma de todas las sumas que se hayan hecho por separado en cada uno de los botones de combinación.

Inicio Mientras haya algún botón de puntuación sin presionar Elegir cinco números al azar Mostrar cinco dados con los numeros electos Si la persona desea cambiar los dados Cambiar dados Fin si Si la persona oprime un botón de mantener dados iguales Deshabilitar el cambio de dados Fin si Si la persona elige una opción de puntuación Realizar la operación necesaria para obtener los puntos de dicha opción Mostrar la puntuación Fin Si Fin mientras Fin

//Funciones://

1. Ayuda : Crea una nueva pantalla que contiene texto para ayuda del usuario. Esto incluye el objetivo del juego y sus instrucciones. Esta función no recibe parámetros.

2. PuntosComb : Crea una nueva pantalla que contiene una lista de puntuaciones de combinaciones de dados. Esto sirve para ver cuál es la mejor opción para seleccionar. Esta función no recibe parámetros.

3. dado_uno (coorx1): Crea un dado con un punto en un canvas. Esto genera el dado para el juego. Esta función recibe como parámetro “coorx1”.

4. dado_dos (coorx1): Crea un dado con dos puntos en un canvas. Esto genera el dado para el juego. Esta función recibe como parámetro “coorx1”.

5. dado_tres (coorx1): Crea un dado con tres puntos en un canvas. Esto genera el dado para el juego. Esta función recibe como parámetro “coorx1”.

6. dado_cuatro (coorx1, coorx2): Crea un dado con cuatro puntos en un canvas. Esto genera el dado para el juego. Esta función recibe como parámetros “coorx1” y “coorx2”.

7. dado_cinco (coorx1, coorx2): Crea un dado con cinco puntos en un canvas. Esto genera el dado para el juego. Esta función recibe como parámetros “coorx1” y “coorx2”.

8. dado_sies (coorx1, coorx2): Crea un dado con seis puntos en un canvas. Esto genera el dado para el juego. Esta función recibe como parámetros “coorx1” y “coorx2”.

9. dado_nuevo (numero, coorx1, coorx2): Crea un dado en ciertas coordenadas dependiendo de un número (1 a 6). Esta función recibe como parámetros “numero”, “coorx1” y “coorx2”.

10. cambiardados (num1, num2, num3, num4, num5): Esta función recibe cinco números. Primero, crea cinco rectángulos blancos, que pueden también ser blanco dependiendo si fue presionado el botón. Por último, llama a la función dado_nuevo (numero, coorx1, coorx2) cinco veces para crear los cinco dados.

11. hallarvalores : Función que determina el valor de puntuación para toda combinación de dados, dependiendo de los valores que toman los dados. No recibe ningún valor, pero utiliza muchas variables globales para asignarles valor para ser utilizadas por otras funciones.

12. resetear_deshabilitacion : Función que resetea todas las variables de deshabilitación de dados. Utilizada para permitir nuevamente el movimiento, cuando se elige cualquier opción de puntuación, ya que se cambian todos los dados.

13. revisar_final : Función que revisa si todos los botones de puntuación han sido presionados. Si es cierto, finaliza el juego, creando una pantalla nueva que muestra el valor total de todas las puntuaciones.

14. creardadosnuevos : Mientras que el contador sea menor a tres, permite que el botón Tirar dados sea presionado, y llama a la función cambiar dados para obtener dados nuevos.

15. presionar_1 : Convierte la cantidad de puntos de unos a puntos finales. Crea un label que indica cuantos puntos ha ganado, y aumenta a la variable “presión” 1. También revisa si es el último botón presionado.

16. presionar_2 : Convierte la cantidad de puntos de doces a puntos finales. Crea un label que indica cuantos puntos ha ganado, y aumenta a la variable “presion” 2. También revisa si es el último botón presionado.

17. presionar_3 : Convierte la cantidad de puntos de treces a puntos finales. Crea un label que indica cuantos puntos ha ganado, y aumenta a la variable “presion” 3. También revisa si es el último botón presionado.

18. presionar_4 : Convierte la cantidad de puntos de cuatros a puntos finales. Crea un label que indica cuantos puntos ha ganado, y aumenta a la variable “presion” 4. También revisa si es el último botón presionado.

19. presionar_5 : Convierte la cantidad de puntos de cincos a puntos finales. Crea un label que indica cuantos puntos ha ganado, y aumenta a la variable “presion” 5. También revisa si es el último botón presionado.

20. presionar_6 : Convierte la cantidad de puntos de seises a puntos finales. Crea un label que indica cuantos puntos ha ganado, y aumenta a la variable “presion” 6. También revisa si es el último botón presionado.

21. presionar_Bonus : Convierte la cantidad de puntos de BONUS a puntos finales. Crea un label que indica cuantos puntos ha ganado, y aumenta a la variable “presionBonus”. También revisa si es el último botón presionado.

22. presionar_3oK : Convierte la cantidad de puntos de 3 de un tipo a puntos finales. Crea un label que indica cuantos puntos ha ganado, y aumenta a la variable “presion3oK”. También revisa si es el último botón presionado.

23. presionar_4oK : Convierte la cantidad de puntos de cuatro de un tipo a puntos finales. Crea un label que indica cuantos puntos ha ganado, y aumenta a la variable “presion4oK”. También revisa si es el último botón presionado.

24. presionar_5oK : Convierte la cantidad de puntos de cinco de un tipo a puntos finales. Crea un label que indica cuantos puntos ha ganado, y aumenta a la variable presion5oK. También revisa si es el último botón presionado.

25. presionar_FH : Convierte la cantidad de puntos de full house a puntos finales. Crea un label que indica cuantos puntos ha ganado, y aumenta a la variable “presionFH”. También revisa si es el último botón presionado.

26. presionar_SS : Convierte la cantidad de puntos de small straight a puntos finales. Crea un label que indica cuantos puntos ha ganado, y aumenta a la variable “presionSS”. También revisa si es el último botón presionado.

27. presionar_BS : Convierte la cantidad de puntos de Big Straight a puntos finales. Crea un label que indica cuantos puntos ha ganado, y aumenta a la variable “presionBS”. También revisa si es el último botón presionado.

28. presionar_Chance : Convierte la cantidad de puntos de Chance a puntos finales. Crea un label que indica cuantos puntos ha ganado, y aumenta a la variable “presionChance”. También revisa si es el último botón presionado.

29. deshabilitaruno : Función que deshabilita el cambio del primer dado. Lo hace mediante el cambio de una variable que inhibe el cambio de valor asignado al dado. También cambia el color. Si se apacha nuevamente, hace lo opuesto: remueve la inhibición y lo vuelve blanco nuevamente.

30. deshabilitardos : Función que deshabilita el cambio del segundo dado. Lo hace mediante el cambio de una variable que inhibe el cambio de valor asignado al dado. También cambia el color. Si se apacha nuevamente, hace lo opuesto: remueve la inhibición y lo vuelve blanco nuevamente.

31. deshabilitartres : Función que deshabilita el cambio del tercer dado. Lo hace mediante el cambio de una variable que inhibe el cambio de valor asignado al dado. También cambia el color. Si se apacha nuevamente, hace lo opuesto: remueve la inhibición y lo vuelve blanco nuevamente.

32. deshabilitarcuatro : Función que deshabilita el cambio del cuarto dado. Lo hace mediante el cambio de una variable que inhibe el cambio de valor asignado al dado. También cambia el color. Si se apacha nuevamente, hace lo opuesto: remueve la inhibición y lo vuelve blanco nuevamente.

33. deshabilitarcinco : Función que deshabilita el cambio del quinto dado. Lo hace mediante el cambio de una variable que inhibe el cambio de valor asignado al dado. También cambia el color. Si se apacha nuevamente, hace lo opuesto: remueve la inhibición y lo vuelve blanco nuevamente.

34. mostrar_todo_valor : Crea una pantalla nueva, con varios labels que indica la cantidad de punto que uno puede obtener (con la combinación de dados presentes) en cada una de las posibles opciones de puntuación.

//Módulos:// Los módulos utilizados en éste proyecto fueron Gui, que permite realizar una interfaz gráfica utilizando una base de Tkinter, con funciones como la creación de botones, de pantallas nuevas, y de canvas para poder graficar. También se utilizó el módulo Random, que permite elegir números al azar, en éste caso entre 1 a 6 para poder mostrar dados al azar.

· Se aprendió a utilizar un interfaz gráfico GUI. · Se repasó el tema de las pruebas unitarias doctest y docstring. · Se repasó el tema de programación defensiva.
 * Conclusiones:**

· Allen Downey. //Swampy.// Olin College, Olin Way , Needham MA 02492. 781-292-2558 (office) 781-292-2508 (fax). Página web: [] [Página visitada el 15 de septiembre de 2009]. · Allen Downey. 2008. //Think Python: How to Think Like a Computer Scientist//. Green Tea Press; 9 Washburn Ave; Needham MA 02492. Páginas utilizadas (1-100)(183-194). · González Duque, Raúl. Creative Commons Reconocimiento 2.5, España. Páginas utilizadas (7-32)(57-75)(125-139). Página web: [] [Página visitada el 8 de febrero de 2009].
 * Bibliografía:**


 * Programa Fuente**:




 * Recuerde que debe instalar el archivo en el fólder de Swampy para que éste pueda correr correctamente.***