Home

ESCUELA SUPERIOR DE INGENIERÍA - rodin

image

Contents

1. III IV Notaci n y formato Al escribir este texto se ha empleado un conjunto de convenios tipogr ficos para facilitar la lectura y comprensi n del documento Cuando nos refiramos a un programa utilizaremos la notaci n emacs Gimp Cuando nos refiramos a un comando de consola Comando en consola Cuando nos refiramos a las distintas secciones que componen el juego Jugar Ver Cuando nos refiramos a una funci n de un lenguaje o un fichero de c digo ficha h escogerficha VI ndice general 1 Introducci n Lis TIDISUNOS sesos rosa AAA 1 2 Estructura del documento 2 0 008 2 ee eee eee ee ens 2 1 Dela Conceptos b sicos RUMEN o o y w AA 26 amp Q k Qe Q W Q R Q SW 2 S AAA 22 Tecnologias implicadas econo x sweoe bee been a de Q e JW A Planificaci n MESES lt lt hee S s 2 Oe eee we ROR ERS Q Q ONU IA 3 1 1 Incremento 1 Selecci n de herramientas 222 25 u 2000040 3 1 2 Incremento 2 Organizaci n de las partes b sicas del juego 3 1 3 Incremento 3 Introducci n de gr ficos y sonido o 2 2 2 222er 3 1 4 Incremento 4 Dise o e implementaci n de la clase Partida 3 1 5 Incremento 5 Dise o e implementaci n de menus 3 1 6 Incremento 6 Dise o e implementaci n del gestor de partida 3 1 7 Incremento 7 Dise o e implementaci n del gestor de jugadores 3 1 8 Incremento 8
2. IntroducirNombre nombre Figura 5 6 Diagrama de secuencia Cargar Jugador Contratos de operaciones Cargar Jugador Operacion IntroducirNombre nombre Responsabilidades Cargar un jugador en memoria Referencias cruzadas Caso de uso Jugar Precondiciones Debe existir un fichero con el nombre de todos los jugadores del sistema Postcondiciones Se cre una instancia J de Jugador Si el nombre del jugador estaba en el fichero de con todos los nombres e Se carg en memoria el fichero con los datos de dicho jugador y se asignaron los datos a J modificaci n de atributos Si el nombre del jugador NO estaba en el fichero e Se cre un fichero con los datos del nuevo jugador y se asignaron a J modificaci n de atributos 32 Diagrama de secuencia Ver Usuario Elegirjugador nombrej Figura 5 7 Diagrama de secuencia Ver Jugador Contratos de operaciones Ver Operaci n ElegirJugador nombre Responsabilidades Mostrar las estad sticas de un jugador por pantalla Referencias cruzadas Caso de uso Editar Jugadores Precondiciones Debe existir un fichero con el nombre de todos los jugadores del sistema y debe existir en l una entrada que coincida con nombre Postcondiciones Se mostr por pantalla la informaci n correspondiente al jugador con nombre J nombre Diagrama de secuencia Borrar Elegirjugador nombre Figura 5 8 Diagrama de secuencia Borrar Jugador Cont
3. Nombre del jugador 1 8 car max DANIEL Pulse confirmar para continuar Figura B 23 Selecci n de los jugadores B 3 2 Pantalla de partida En la figura B 24 se pueden observar los distintos elementos que componen la partida de FreeRummi 89 B 4 0 denar Golor Comprobar y pasar Ordenar Numero Figura B 24 Pantalla de una partida Tablero Es el lugar donde se colocar n todas aquellas combinaciones de fichas que los jugadores puedan formar Las fichas que est n en el tablero pueden ser manipuladas por todos los jugadores Soporte Es el lugar donde se guardan las fichas de cada jugador Estas fichas no deben ser vistas por nadie m s que el propietario de las mismas El jugador es libre de moverlas dentro de su soporte para tenerlas ordenadas a su gusto Mont n En l est n las fichas restantes que no est n ni en el tablero ni en los soportes de los juga dores Cuando un jugador no tiene combinaciones para poner o simplemente decide no ponerlas tiene que sacar una ficha del mont n la cual se insertar en su soporte Cronometro Indica el tiempo restante en el turno de un jugador La duraci n de un turno son 60 segundos Informaci n del jugador Indica de qu jugador es el turno as como las fichas que tiene en su soporte su puntaci n y el n mero de turno que va jugando Botones de acciones Con estos botones el jugador podr ordenar por colores su soporte com probar el table
4. below refers to any such manual or work Any member of the public is a licensee and is addressed as you You accept the license if you copy modify or distribute the work in a way requiring permission under copyright law A Modified Version of the Document means any work containing the Document or a portion of it either copied verbatim or with modifications and or translated into another language A Secondary Section is a named appendix or a front matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document s overall subject or to related matters and contains nothing that could fall directly within that overall subject Thus if the Document is in part a textbook of mathematics a Secondary Section may not explain any mathematics The relationship could be a matter of historical connection with the subject or with related matters or of legal commercial philosophical ethical or political position regarding them 97 The Invariant Sections are certain Secondary Sections whose titles are designated as being those of Invariant Sections n the notice that says that the Document s released under this License If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant The Document may contain zero Invariant Sections If the Document does not identify any Invariant Sections then there ar
5. sus a ni 46 6 13 Diagrama de flujo del segundo sistema experto 2 000 ee eee 4 6 14 Diagrama de flujo del tercer sistema experto ws dee daa a 48 Vals SEI eh a a QUR 8 Q A REE SS Q 50 lo si e bo Bese tac a nara eee meh ee eee eee Bee ee 51 q a III IIA 32 7 4 Clase Gestor de Jugadores 2 2 2 hehehe En OS OS a a ee 53 7 5 Clase Gestor de partida amp amp 3 0 2 4a aa a aaa we A Ee 54 Vi Ch T t usss e aap 55 fla SCE ee J h Q w 0 amp Q 2 Q oa a4 U Q oe eae oe 56 7 08 Chose Miciudo po ee ec S k S ER ER a a ss Q w ORO de 56 ll Clase Ja s KDP coran sra S m S S s Q S RHE SEES See enge 37 ANNS n i i 663 oe ee sad 58 7 11 Clase EIA 59 Td EMS TAE noe eb eS eR S h Q OE R S See Q SUQ Q Q Q N S EEE G Q OR ROS 60 J lO CASE en no a eee be ke eae ee mee hee eee oe ee ee ee e 61 A COGN sanas AAA ase eh 62 AL CASI rondar oras arras 62 J 10 Clase o apollo EEES 63 AVERIA 63 LSO VIGGO esoo dona Ara Q e S dara 64 B 1 Caso 1 Soporte antes de la manipulaci n o ec 5s ei wa en 80 B 2 Caso 1 Tablero antes de la manipulaci n a s s s s ee eee 80 B 3 Caso 1 Tablero despu s de la manipulaci n a e e 80 B 4 Caso 2 Soporte antes de la manipulaci n eee 81 B 5 Caso 2 Tablero antes de la manipulaci n lt 8 eee see desa ea 81 B 6 Caso 2 Tablero despu s de la manipulaci n 2 2 2 2 nme 81 B 7
6. Dados el siguiente soporte B 4 y el siguiente tablero B 5 80 Figura B 4 Caso 2 Soporte antes de la manipulaci n Figura B 5 Caso 2 Tablero antes de la manipulaci n Falta una ficha en el soporte para crear una escalera azul El jugador coge un 4 azul del conjunto de cuatro que hay sobre el tablero y coloca la escalera 3 4 5 y 6 azules teniendo entonces B 6 Figura B 6 Caso 2 Tablero despu s de la manipulaci n 3 A adir una cuarta ficha a una combinaci n y quitar otra para crear una combinaci n dife rente Dados el siguiente soporte B 7 y el siguiente tablero B 8 81 Figura B 7 Caso 3 Soporte antes de la manipulaci n Figura B 8 Caso 3 Tablero antes de la manipulaci n El jugador a ade el 11 azul a la escalera y utilizar el 8 azul para formar un nuevo conjunto teniendo entonces B 9 Figura B 9 Caso 3 Tablero despu s de la manipulaci n 4 Dividir una escalera Dados el siguiente soporte B 10 y el siguiente tablero B 11 Figura B 10 Caso 4 Soporte antes de la manipulaci n 82 Figura B 11 Caso 4 Tablero antes de la manipulaci n El jugador divide la escalera y utiliza el 6 rojo para formar dos escaleras nuevas teniendo entonces B1 Figura B 12 Caso 4 Tablero despu s de la manipulaci n 5 Divisi n combinada Dados el siguiente soporte B 13 y el siguiente tablero B 14 Figura B 13 Caso 5 Soporte antes de la manipulaci n 83 Figura B
7. menuJugar int menuJugadores int posicion SDL_Rect Menu Imagen ruta const char x Sint16 0 y Sint16 0 dibujar void modificarX x_ Sint16 void modificarY y Sint16 void obtenerX const Sint16 obtenerY const Sint16 ancho const Uint16 alto const Uint16 Imagen Figura 6 1 Diagrama de dise o del sistema 6 3 Organizaci n de las partes b sicas del juego En este apartado repasar el dise o que he realizado de las partes base del juego 38 6 3 1 Clase Ficha Como se coment en el an lisis la ficha debe componerse por un n mero y un color para el n mero se usar un natural ya que el n mero est comprendido entre 1 y 13 O si es una ficha nula y el color ser un enumerado La clase deber tener m todos para construir fichas copiarlas asignarlas as como para obtener el n mero y el color 6 3 2 Clase Monton El mont n ser un vector de fichas Tambi n guardaremos como atributo el n mero de fichas restantes en dicho vector Esta clase deber permitir construir un mont n desordenarlo y poder extraer fichas de l 6 3 3 Clase Soporte El soporte ser tambi n un vector de fichas Tendr otros atributos como la puntuaci n que ser la suma de los valores num ricos de las fichas y el n mero de fichas restantes La clase permitir construir un soporte copiarlo insertar y extraer fichas de l as como obtener infor maci n sobre la pu
8. opebnr ase e ap eqanid 9LF se ap u negzuawajdw SIF ipeBnr asep e ap sisi euv FLPE JOU012 ase 2 ap eqanJd EL 5P 2 8 ap uomeJuawsajdw ZL P IOU012 ase ej ap SISIJEUY LL Ja UN se 2 e ap eq nid Ort 5E e ap u negzuawajdw 6t 13Jund 358127 E ap SISIJEUY St 5958 SE p UODEIYIPON Lv 2PIJJEd 358 e ap eqanid op 58 2 ap UONeJuawWa du oP Ped 3580 E ap sisieuy Fr pne jap uODIp3 A U91293 3 Er s u Deuuui se ap ou siq Zr P jeuomuny se ap 01pn 53 Ir ja ueq uopejuswajdwi a 0YasId a 7 b IPEIDIU ase e ap eqanta ELE 5B ap uvoneyuswajdw LL E penIu ase ej ap SISIJEUY OLE aguan 3583 2 ap 2q3NJd 6E 523 e ap UODEJU3 Wa du SE 3JU3N4 958 E Sp sisieuy LE ISNW 535E Se ap eqanid g e 7P se ap u npegzuawajdw S E SNW Sase SE ap sisi euv tE 03PIA ase 2 ap 2qaNJd C E 5E ap u negzuawajdw TE O3PIA 358 E Sp SISIJEUY LE pueg SO31JeJ ap uon3npoi3ul a eJquoN SHM Figura 3 12 Diagrama de Gantt Incrementos 3 y 4 jarueg Aew PIJOWSW e SP UODEZIIESY YW asep 2 ap eqan d Y asep 2 ap uopeyuswajdwi 4 YW se 2 e ap s s jeuy t u eJed seJusiwellay sajg sod ap o pnJs3 33515 50 ap uopejuawajdw a ouas q ie C saJopebnrJojse5 Sep e ap egan d t 6NFJOISaN asep 2 ap uoequawaydwy tuwa 5310pebnrJ03535 ase e ap s s leuy pueg 3103536 jap uopejuswajdw a oyas q C EPIJJE4103539 E ap egqan d to JE4J0 539 ase e sp uomeJuswajdwi t w Ppi11edJ
9. 3 2 es 3 4 a 3 6 Np 3 8 en 3 10 3 11 3 12 3 13 LL 3 2 de da 5 4 I 5 6 3A 5 8 5 9 5 10 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 Captura de una partida de FreeRummi e 1 Ejemplo de soporte con m s de 30 puntos ee e e 3 Ejemplos de posibles conjuntos 22 roer AAA 4 Ejemplos de posibles escaleras 2 2 2 2 Coon 4 Primera versi n de FreeRummi en consola oo 2 Au a a 858 ss ew a 9 Incremento 1 Selecci n de herramientas lt lt usos sn u Bea eae ee ea 12 Incremento 2 Organizaci n de las partes b sicas del juego 13 Incremento 3 Introducci n de gr ficos y sonidos eee eee 13 Incremento 4 Dise o e implementaci n de la clase Partida 14 Incremento 5 Dise o e implementaci n de ments 2 2 Emmen 14 Incremento 6 Dise o e implementaci n del gestor de partidas 14 Incremento 7 Dise o e implementaci n del gestor de jugadores 15 Incremento 8 Dise o e implementaci n de los sistemas expertos 15 CARAS O 5 kb b wau Pee Sre k 2 2 AAA 15 Diagrama de Gantt Incrementos 1y 2 u ise ec eee e heen ce na ee e u a 16 Diagrama de Gantt Incrementos 3yA e e ee e 17 Diagrama de Gantt Incrementos 5 6 7 8 Y9 ss aus sa sk eu ae aa e s 18 Diagrama de casos de uso del sistema 2 a a a A 26 Diagrama de clases
10. Dise o e implementaci n de los sistemas Expertos 3 2 Diagrama de Ganti s s s ewe coses errada a Especificaci n de los requisitos del sistema POIO gt lt ios asas aaa Requisitos de interfaces externas 2 sk 3 aa aa rasa AAA Requisitos TUACIONAlES u la as s v s eek e kameru A ea EDD e Requisitos de rendimiento LL e LL a a a re ae aan Restricciones de dise s es e en AAA a a ee a Atributos del sistema software css errors a aaa Analisis del sistema rn Funcionalidades del sistema 2 0008 2 ce eee eee Organizaci n de las partes b sicas del juego 0004 Introducci n de gr ficos y sonidos 22 2 CE En nme La clase Para o an a a a W Q a a W s EE ee W 3 Los men s el gestor de partida y el gestor de jugadores SI as CPCS soe hee whee rad Modelo de casos de USO en 4 4 1 4 2 4 3 4 4 4 5 4 6 5 An lisis 5 1 32 Sl O 52 3 3 24 J2 3 5 3 1 5 3 2 Diagrama de CASOS dEUSO sa rsrsrsr a k ERED HEGRE EHS BEE SS Descripci n de los Casos de uso ww m mn 19 19 19 20 20 21 21 8 5 4 a 6 1 6 2 6 3 6 4 6 5 6 6 Modelo conceptual de datos u nu bee eee a sz sz e ez esa 5 4 1 Descripci n diagramas de clases conceptuales 342 Dianaaa deClas e s ei en cea ne a ers Q 0 g amp Q e B W w w g E w AA Modelo de comportamiento del sistema
11. Python IDL versiones Corba y Microsoft y en cierta medida para PHP C y D Dado que es facilmente adaptable funciona en la mayoria de sistemas Unix asi como en Windows y Mac OS X La mayor parte del c digo de Doxygen est escrita por Dimitri van Heesch Doxygen es un acr nimo de dox document gen generator generador de documentaci n para c digo fuente Fichas restantes 14 VERDE 1 VERDE 10 AZUL 1 AZUL 4 AZUL 8 AZUR AZUL 12 AZUL 13 ROJO 2 ROJO 6 ROJO 8 ROJO 10 ROJO 11 ROJO 12 2 Manipular fichas 3 Salir del juego Eliga opcion J Figura 3 1 Primera versi n de FreeRummi en consola Una vez realizado este incremento tenia una base firme sobre la que ir a adiendo funcionalidades En cuanto a esfuerzo y tiempo es una de las partes que m s me cost debido a que hab a que realizar muchas pruebas para tener la seguridad de que a medida que iba avanzando esta parte no me diera problemas 3 1 3 Incremento 3 Introducci n de gr ficos y sonido En este incremento comienzo a introducir gr ficos para la partida as como manejadores de evento para poder jugar con el rat n Se incluyen las siguientes clases b sicas para el sistema de v deo y audio Clase Iniciado Esta clase inicia SDL Clase Video Esta clase es la encargada de controlar el subsistema de video de SDL Clases Musica y Efecto Estas clases se encargan de la banda sonora y de los efectos de sonido respectivamente juntas controlan el
12. Ventana Borrar Esta ventana proporciona la interfaz para borrar un jugador Mediante el rat n se podr desplazar por los diferentes usuarios que existan en el sistema con ayuda de unos botones Poseer un bot n para confirmar el borrado y otro para cancelar y volver al men principal as como otro para silenciar el juego Requisitos funcionales son a grandes rasgos los requisitos funcionales que el sistema debe permitir al usuario Jugar una partida a FreeRummi tanto a un solo jugador como un grupo Jugar contra el ordenador o contra otras personas Poder pausar la partida Ver las estad sticas de cualquier jugador Poder borrar un jugador del sistema Poder silenciar el juego en cualquier momento Poder salir del juego en cualquier momento En estos requisitos no est n incluidos algunos espec ficos de la partida ya que se ir n incorporando a medida que se vaya desarrollando el software 4 4 Requisitos de rendimiento Al tratarse un juego que se puede considerar a tiempo real hay que hacer incapi en que la respuesta al usuario sea lo m s r pida posible sacrificando si es necesario el consumo de memoria principal Otro requisito a tener en cuenta es la carga de CPU intentando optimizar este apartado para que el juego vaya fluido sin consumir en exceso 20 4 5 Restricciones de dise o En el dise o de la aplicaci n tienen que primar los tiempos de respuesta sobre el consumo de recursos de espacio como la
13. ago 31 sep 2 sep 6 sep 13 sep 16 sep 21 oct 5 oct 12 oct 15 oct 18 ago 18 ago 20 ago 24 ago 26 ago 30 sep 1 sep 3 sep 10 sep 15 sep 20 oct 4 oct 11 oct 18 oct 15 Figura 3 3 Incremento 2 Organizacion de las partes basicas del juego 3 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 3 10 3 11 3 12 Introducci n de gr ficos y sonidos An lisis de la clase Video Implementaci n de la clase Video Prueba de la clase Video An lisis de las clases Musica y Efecto Implementaci n de las clases Musica y Efecto Prueba de las clases M sica y Efecto An lisis de la clase Fuente Implementaci n de la clase Fuente Prueba de la clase Fuente An lisis de la clase Iniciado Implementaci n de la clase Iniciado Prueba de la clase Iniciado 13 nov 1 now 4 nov 8 nov 10 nov 12 nov 16 nov 18 nov 22 Figura 3 4 Incremento 3 Introducci n de gr ficos y sonidos nov 23 oct 20 oct 22 oct 26 oct 29 now 3 nov 5 nov 9 now 11 nov 15 now 17 nov 19 nov 23 4 4 1 4 2 4 3 4 4 45 4 6 4 7 4 8 4 9 4 10 4 11 4 12 4 13 4 14 4 15 4 16 4 17 Dise o e implementaci n de la clase p rtida Estudio de las funcionalidades Dise o de las imagenes Elecci n y edici n del audio An lisis de la clase Partida Implementaci n de la clase Partida Prueba de la clase Partida Modificaci n de las clases base An lisis de la clase Puntero Implementaci n de la clase Puntero Prueba de la clase Pu
14. creo que esto ayuda a que todo tipo de jugadores puedan acceder al juego de forma f cil sin tener demasiada soltura en el manejo de un dispositivo inform tico Los gr ficos son creaci n m a en su totalidad se podr a mejorar este aspecto del juego pero debido a que soy yo el que tiene que encargarse de todo el proyecto no he podido emplear las horas que este campo necesita En cuanto al aspecto sonoro los efectos est n extra dos del banco de im genes y sonidos del instituto de tecnolog as educativas ITE 4 Mientras que la banda sonora tanto de los men s como de la partida est n extra dos del sitio web Jamendo 7 Posteriormente retoqu las canciones qued ndome solo con el loop de m sica que me interesaba 5 2 3 La clase Partida Una vez explicadas las partes b sicas del juego as como los elementos gr ficos y sonoros ya se puede hablar de una partida completa A los elementos que se explicaron en el incremento dos hay que sumar ahora elementos como los juga dores y el cron metro En el incremento dos solo se pod a jugar en consola y con unas funcionalidades muy limitadas Una partida real de FreeRummi tiene varios jugadores cada uno con sus puntuaciones su nombre y sus es tad sticas Adem s los jugadores hay que crearlos o cargarlos en memoria guardar sus puntaciones una vez han finalizado la partida y borrarlos en el caso de que ya no se quieran usar m s Por otro lado el cron metro es que impondr
15. n de 30 puntos o m s el jugador debe robar una ficha pasar el turno La imagen que sigue muestra un soporte con m s de 30 puntos repartidos en tres grupos de fichas 2 1 Figura 2 1 Ejemplo de soporte con m s de 30 puntos Una vez puesta su primera combinaci n el jugador puede poner cualquier otra sin importar su puntua ci n o aportar fichas a las ya existentes en el caso de no poner ninguna ficha en su turno deber robar una ficha del mont n y pasar el turno Existen 2 tipos de grupos los conjuntos y la escalera Ambas combinaciones deben contener como m nimo tres fichas no debes poner ni debe existir sobre la mesa un grupo con menos de tres fichas Los Conjuntos est n compuestas por 3 o 4 fichas del mismo n mero pero de distinto color por ejemplo 2 2 Figura 2 2 Ejemplos de posibles conjuntos Las Escaleras est n compuestas por 3 o m s fichas del mismo color y con un valor num rico continuo por ejemplo 2 3 Figura 2 3 Ejemplos de posibles escaleras El juego continua hasta que a uno de los jugadores se le agotan las fichas entonces debe gritar Rummi kub para declararse ganador Cuando un jugador gana los dem s jugadores deben sumar la puntuaci n de las fichas que quedaron en su soporte puntuaci n del juego El comod n tiene un valor de 30 puntos La puntuaci n de los perdedores es negativa y la del ganador es la suma de todos los dem s jugadores pero positiva En el manual de usuario de FreeRu
16. orden en los turnos de los jugadores limitando estos a 60 segundos de duraci n El cron metro se puede pausar y reanudar en un momento dado imposibilitando al jugador realizar movimientos mientras est en pausa En cuanto a la Partida en s el juego se compone de dos tipos de partida Simple y Concurso La partida simple es una partida de entrenamiento en la que no cuenta la puntuaci n que se obtenga solo sirve para adquirir experiencia El concurso se compone de tantas partidas como jugadores haya y se tiene en cuenta la puntuaci n 5 2 4 Los men s el gestor de partida y el gestor de jugadores Cuando ya tuve la partida finalizada empec a a adir los men s para poder navegar por la aplicaci n Aunque en este incremento cre el men principal en los siguientes incrementos tuve que 1r modifican do y a adiendo nuevas opciones seg n iba a adiendo funcionalidades al sistema 24 Por otro lado el gestor de partida trata de facilitar al usuario la forma de seleccionar el n mero de juga dores que participar n en una partida y qu jugadores participar n Por ltimo para darle una sensaci n de continuidad y de reto se crea el gestor de jugadores Esto nos permite crearnos un jugador y jugar con el siempre que utilicemos el juego Con esto conseguiremos estad sticas de nuestras partidas y nuevos retos a conseguir La gesti n de jugadores incluye ver estad sticas y borrar jugadores En los siguientes apartados
17. produjo un cierto evento y con que bot n se produjo Clase Cronometro Algo fundamental en un juego por turnos Se trata de un temporizador de un minuto el cual se puede pausar y reanudar Clase Jugador Esta clase es la encargada de gestionar los jugadores que se crean para jugar una partida Es una de clase compleja en comparaci n con Puntero y Cronomet ro ya que trabaja con ficheros y permite crear cargar guardar borrar y actualizar los datos de un jugador Adem s de las nuevas creaciones tuve que modificar y a adir algunas funciones a las clases base para poderlas relacionar con las clases de manejo de SDL Tambi n se crearon y a adieron los elementos gr ficos que faltaban as como el sonido del juego A todo esto se une una gran cantidad de tiempo en probar cada funcionalidad que iba a adiendo Una vez finalizado este incremento ya ten a una partida en la que pod an jugar de 2 a 4 jugadores 3 1 5 Incremento 5 Dise o e implementaci n de men s En este incremento a ad el men principal y submen s con la clase Menu En un primer momento el juego solo ten a un men principal con las opciones Jugar Comenzaba una partida de cuatro jugadores Salir Finalizaba la ejecuci n del juego y volv a a Linux Una vez implement y prob el funcionamiento de dichos men s a ad a la opci n Jugar un submen en el que se proponen al jugador dos tipos de partida distintos 10 Simple Se trata de una
18. 11 1 1 altiene tiene Partida esta formado por esta formado por tiene 1 Cronometro He Figura 5 2 Diagrama de clases Partida El segundo diagrama que se presenta relaciona las clases para poder gestionar a los jugadores 5 3 30 Efecto a tiene Figura 5 3 Diagrama de clases Gestor de jugadores El tercer y ltimo diagrama parcial relaciona las clases para llevar a cabo el gestor de la partida 5 4 Efecto a tiene Figura 5 4 Diagrama de clases El gestor de partida Y para terminar este apartado se presenta el esquema que muestra todo lo expuesto anteriormente y sus relaciones 5 5 x Musica Tx tiene 1 1 tiener dispone esta formado por I 1 1 Gestor Video Partida 1 esta formado por Gestor 1 esta formado por Jugadores Er E PM Partida Figura 5 5 Diagrama de clases Diagrama Global 31 5 5 Modelo de comportamiento del sistema El modelo de comportamiento especifica c mo debe de actuar un sistema El sistema a considerar es el que engloba a todos los objetos Este modelo consta de dos partes El Diagrama de secuencias del sistema el cual muestra la secuencia de eventos entre los actores y el sistema Los Contrato de las operaciones del sistema que describen el efecto que producen las operacio nes del sistema 5 5 1 Diagramas de secuencias del sistema y Contrato de las operaciones del sistema Diagrama de secuencia Cargar Jugador
19. 14 Caso 5 Tablero antes de la manipulaci n El jugador coloca el 1 azul de su soporte con el 1 verde de la escalera y con el 1 rojo del conjunto para crear un nuevo conjunto teniendo entonces B 15 Figura B 15 Caso 5 Tablero despu s de la manipulaci n 6 Divisi n m ltiple Dados el siguiente soporte B 16 y el siguiente tablero B 17 Figura B 16 Caso 6 Soporte antes de la manipulaci n 84 Figura B 17 Caso 6 Tablero antes de la manipulaci n El jugador manipula las tres combinaciones existentes sobre la mesa y utiliza el 10 negro y el 5 azul de su soporte para crear tres conjuntos y una escalera nuevas B 18 Figura B 18 Caso 6 Tablero despu s de la manipulaci n B 1 4 El comod n 1 Hay dos comodines en el juego que se pueden utilizar como cualquier ficha y en cualquier combi naci n independientemente de los n meros y el color En una combinaci n de n meros el valor del comod n es el de la cifra a la cual representa 2 Cualquier jugador puede retirar el comod n de una combinaci n que haya en el tablero y sustituirlo en su turno con una ficha del mismo valor num rico y color al que representa 3 La ficha utilizada para sustituir al comod n puede proceder tanto del soporte de un jugador como del tablero En el caso de un conjunto de 3 el comod n puede ser sustituido por una ficha de cualquiera de los colores que falten 4 Al sustituir el comod n por la ficha correspondiente el
20. Caso 3 Soporte antes de la manipulaci n 55 2 486 446 aaa a es 82 B 8 Caso 3 Tablero antes de la manipulaci n 0 0000 eee eens 82 B 9 Caso 3 Tablero despu s de la manipulaci n a a e eee 82 B 10 Caso 4 Soporte antes de la manipulaci n eee eee 82 B 11 Caso 4 Tablero antes de la manipulaci n s s e eee 83 B 12 Caso 4 Tablero despu s de la manipulaci n 2 2 CE Emmen 83 B 13 Caso 3 Soporte antes de la manipulaci n auch 224 83 B 14 Caso 5 Tablero antes de la manipulaci n eee e 84 B 15 Caso 5 Tablero despu s de la manipulaci n e e e 84 B 16 Caso 6 Soporte antes de la manipulaci n ar rer desa ea 84 B 17 Caso 6 Tablero antes de la manipulaci n 2 6 2bb e244 bee eae 4 85 B 18 Caso 6 Tablero despu s de la manipulaci n 2 2 2 Emmen 85 B 19 Menu principal de FreeRummi cocos aa 2 a0 24 0446648 as Rh ee s 87 B 20 Menu Jugar de FreeRummi 2 0 5 0 whee een a whe en ee een 88 B 21 Pantalla de selecci n de jugadores 2 0 0 4 a u nd aaa a nu a da en nn 89 B 22 Selecci n del n mero de Jugadores xi aa un an Ka ad aa ac ns 89 B 23 Seleccion de lOs JUPAdOTES visas oros en X S N QUY AAA 89 B 24 Pantalla de una partida a 0000 a na a na a cher 90 B 25 Men Jugadores de FreeRummi 2 Cm nenn 91 B 26 Pantalla Ver de FreeRummi 2 06 2 4 a ah Eh ad
21. Clase para gestionar los men s referentes a la partida lA Clase para gestionar la inteligencia artificial y los sistemas expertos del juego Imagen Clase para gestionar el trabajo con im genes Iniciado Clase para arrancar las librer as de SDL Jugador Clase para el manejo y la gesti n de los jugadores Menu Clase para gestionar el men principal y los submen s Monton Clase para el manejo y funcionamiento del mont n del juego Partida Clase para el manejo y funcionamiento de la partida de FreeRummi Puntero Clase para el manejo y funcionamiento del puntero del rat n 29 Sonido Clase para gestionar el trabajo con la librer a mixer Soporte Clase para el manejo y funcionamiento del soporte de fichas del juego Tablero Clase para el manejo y funcionamiento del tablero del juego Video Clase para gestionar el sistema de v deo 5 4 2 Diagrama de clases Para descomponer el diagrama he tomado el criterio de funcionalidad para ello se mostrar n subcon juntos de clases que tengan un fin com n Debido al gran tama o del diagrama resultante he optado por hacerlo por partes y luego unir esas partes en forma de caja negra para formar el diagrama final mucho m s f cil de comprender El primero de estos diagramas de clases es el referente a la Partida el m s complejo debido a que ser el pilar central del juego Puede observarse en la figura 5 2 tiene tiene esta formado por
22. Gestorjugadores Jugadores vector lt string gt j Jugador texto Fuente nombre string Gestorlugadores Ver viVideo void Borrar v Video void GestorJugadores cargarNombres void pantallaNo v Video void actualizarVer v Video void actualizarBorrar v Video void Figura 7 4 Clase Gestor de Jugadores En el diagrama de la figura 7 4 se puede observar que la funci n de esta clase es la de hacer de interfaz para poder gestionar a los jugadores del sistema En el constructor GestorJugadores se inicializan y posicionan las im genes que se ver n por pantalla as como las fuentes que mostrar n los textos La forma de actuar el m todo void ver Video xv es la siguiente crea e inicia una banda sonora carga en memoria el nombre de todos los jugadores del sistema y a continuaci n se pueden dar dos posibles ramas e Que no haya jugadores en el sistema el m todo entra en un bucle y muestra por pantalla un mensaje informando de que no hay jugadores para mostrar ayudado del m todo privado void pantallaNo Video xv y a esperas de que se produzca un evento para volver al men principal en este caso hacer clic sobre el bot n cancelar e Que haya jugadores en el sistema en este caso entra en un bucle en el que muestra la in formaci n del primer jugador con ayuda del m todo privado actualizarVer Video xv y a esperas de que se produzca un evento que puede ser moverse por el m
23. any sections Entitled Acknowledgements and any sections Entitled Dedications You must delete all sections Entitled Endorsements 6 COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License and replace the individual copies of this License in the various documents with a single copy that is included in the collection provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects You may extract a single document from such a collection and distribute 1t individually under this License provided you insert a copy of this License into the extracted document and follow this License in all other respects regarding verbatim copying of that document 7 AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works in or on a volume of a storage or distribution medium is called an aggregate 1f the copyright resulting from the compilation 1s not used to limit the legal rights of the compilation s users beyond what the individual works permit When the Document is included in an aggregate this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document If the Cover Text requirement of section 3 1s applicable to these copies of the Document then 1f the Document is less
24. e s ea s e e ee 5 5 1 Diagramas de secuencias del sistema y Contrato de las operaciones del sistema Dise o Diseno del SISMO seg w S MEMEO RO ORO RE RRA A Diagrama de clases de dise o 2s sa seed a oOo a a ne Organizaci n de las partes b sicas del juego 2 2 En nn Cet SOOT 2 s s a re 0 Q ee eee GEE SUR Q 9 amp Q Dinar Giuse Monto cra 2 AAA Ba Ce OPOE a Qua e S kO N AUS a X Q Q Q AA QD WU N Gn Cie DGD a c as ss Ge Gee ARRAS ee neh s AS Eee EA Ge l I Pa ok hee eR HER eee REE k Z Q Q s Gul ee ee 6 4 1 Diagramas de secuencia de los casos de uso 2 2 Km m nennen Los men s el gestor de partida y el gestor de jugadores 2 2 222 2 nn nn 63 1 Diagramas de interacci n e ines ono ee na a d ewka 6 5 2 Diagramas de secuencia de los casos de uso 2 2 Km m meer SISTEMAS EPCOS 6 s S s s Q E ERA Implementaci n Tal Ted 7 3 7 4 1 9 7 6 dal 7 8 deo 2 10 TA 1 12 Ales 7 14 dO 7 16 LAT 7 18 1 19 Latlaset engen essas serae AA Y w Su 2 Q a QUE ie Li l C hiii l ss estores La clase FUCHS oo ce v 2 v 2 hw eer amp k SS k a a REE HER ee La clase GestorJugadores a ae a a a a a s e e ez ee AAA La clase GestionPartida ua 3 0a a an 0 u ou we a m a sz a e e a e e we an BT AE Lari GIS O os s Z EEE EEE a E ee a La clase Iniciado no codi s k kus s s a h Q eee ee GO aan A La clase Jugador s S sls s nie d Gee
25. el jugador que se desea visualizar 3 El Usuario elige el jugador que desea visualizar 4 El Sistema muestra por pantalla las estad sticas del jugador seleccionado Escenarios alternativos a En cualquier momento el usuario puede salir 2a No existe ning n jugador en el sistema 2al El Sistema muestra por pantalla un mensaje diciendo que no existe ning n jugador 4a El jugador seleccionado no existe dal El Sistema muestra un mensaje por pantalla y vuelve al paso 2 Descripci n del caso de uso Borrar Caso de uso Borrar Descripci n Borra a un jugador del sistema Actores Usuario Precondiciones Deben existir al menos un jugador en el sistema Postcondiciones Un jugador ser borrado del sistema Escenario principal 1 El Usuario desea borrar alg n jugador 2 El Sistema muestra un men para seleccionar el jugador que se desea borrar 3 El Usuario elige el jugador que desea borrar 4 El Sistema borra al jugador seleccionado Escenarios alternativos a En cualquier momento el usuario puede salir 2a No existe ning n jugador en el sistema 2al El Sistema muestra por pantalla un mensaje diciendo que no existe ning n jugador 4a El jugador seleccionado no existe dal El Sistema muestra un mensaje por pantalla y vuelve al paso 2 27 Descripci n del caso de uso Jugar Caso de uso Jugar Descripci n El jugador juega una partida al videojuego Actores Usuario Precondiciones Existen
26. ganadas 6 Porcentaje de partidas perdidas 7 Porcentaje de partidas abandonadas 8 Rango B 4 2 Pantalla Borrar Esta pantalla presenta el siguiente aspecto B 27 Seleccionajugador lt lt gt Borrar DANIEL Pulse confirmar para borrar o cancelar para salir es BE Kur RAS SRI et aq 2 HE Figura B 27 Pantalla Borrar de FreeRummi B 5 Controles y atajos de teclado Para acabar el manual de usuario voy a comentar c mo se puede interactuar con el sistema Esta aplica ci n est dise ada para ser totalmente controlada con el rat n aunque en el modo partida tambi n existen atajos de teclado que har n m s c modo el juego A continuaci n se explican m s detalladamente los controles de FreeRummi B 5 1 Navegar por los men s Para navegar por los men s de FreeRummi tan solo tiene que situarse encima de la opci n que desee y hacer clic con el bot n izquierdo del rat n 92 S est dentro de un men y desea volver atr s solo tiene que hacer clic izquierdo en la opci n Volver En las pantallas Selecci n de jugadores Ver y Borrar haga clic izquierdo en el bot n confirmar B 28 para llevar a cabo la acci n deseada o bien haga clic izquierdo en el bot n cancelar B 29 para volver al men principal 2 Figura B 28 Bot n confirmar Figura B 29 Bot n cancelar Para activar o desactivar el sonido hacer clic con el bot n izquierdo en el altavoz situado en la parte superior izquierd
27. guardar n los siguientes datos Nombre Puntuaci n general 11 Partidas ganadas Partidas perdidas Partidas abandonadas Adem s por medio de los datos anteriores se obtendr n los siguientes derivados Porcentaje de partidas ganadas Porcentaje de partidas perdidas Porcentaje de partidas abandonadas Rango del jugador Novel Medio Avanzado Experto Este dato se obtendr en funci n de la puntuaci n general del jugador si tiene menos de 250 puntos ser Novel si tiene entre 250 y 500 puntos ser Medio si tiene entre 500 y 1000 puntos ser Avanzado y si tiene m s de mil puntos ser Experto 3 1 8 Incremento 8 Dise o e implementaci n de los sistemas Expertos En este ltimo incremento se a ade la clase TA la cual se encarga de gestionar y manipular los sistemas expertos que se creen para la partida simple Para ello me ayud de bibliograf a como el libro Sistemas expertos principios y programaci n 6 Estudi la posibilidad de usar alguna herramienta como CLIPS pero decid que adaptar e incluirlo en mi proyecto iba a ser m s costoso que crear un peque o motor desde cero Este motor est compuesto por tres funciones que cumplen las tres reglas b sicas para poner grupos en FreeRummi poner escaleras poner conjuntos y poner fichas mediante los conjuntos que ya est n en el tablero Con estas tres funciones y las funciones de las clases base cre tres sistemas expertos de ejemplo co
28. jugadores deber utilizarlo en ese mismo turno y no podr colocarlo en su soporte para futuras jugadas 5 Cualquier combinaci n que tenga un comod n puede ser dividida adem s de poder a adir o quitar fichas de la misma 6 Al final de la partida si queda alg n comod n sobre el soporte de cualquier jugador su valor es de 30 puntos 85 B 1 5 Puntuaci n 1 Despu s de que un jugador haya vaciado su soporte los dem s jugadores suman los puntos de sus soportes y se los anotan en negativo La puntuaci n del ganador ser la suma de los puntos de las fichas que tengan los otros jugadores en sus soportes 2 A la hora de comprobar las cifras puede servir de ayuda saber que los puntos positivos deber an ser iguales al total de los puntos negativos de cada ronda 3 En el raro supuesto de que se utilicen todas las fichas del mont n antes de que alg n jugador vac e su soporte el jugador que tenga meno puntuaci n al sumar las fichas de su soporte ser el ganador El resto de los jugadores suman el valor de las fichas de sus soportes y lo resta al total del ganador Este resultado es el que deber n anotar en negativo La puntuaci n del ganador ser la suma de los puntos negativos de los dem s jugadores Jugador A Jugador B Jugador C Jugador D Partida 1 24 s O Paida j6 m wa 18 6 E Tabla B 1 Ejemplo de puntuaci n B 1 6 Estrategia El principio de una ronda de FreeRummi puede parecer un poco lenta
29. jugadores en el sistema Postcondiciones Se jugar una partida al videojuego Escenario principal 1 El Usuario desea jugar una partida 2 El Sistema muestra un men para seleccionar el n mero de jugadores 3 El Usuario selecciona el n mero de jugadores que participar n en la partida 4 El Sistema comprueba que el n mero de jugadores es correcto 5 include Cargar Jugador 6 El Sistema comprueba que el jugador no est ya reservado y vuelve al paso 5 tantas veces como jugadores haya seleccionado 7 El Sistema inicializa y muestra la partida por pantalla 8 El Usuario y el Sistema interact an durante la partida 9 El Sistema muestra quien ha ganado al final de la partida 10 El Sistema actualiza y guarda las nuevas puntuaciones de los jugadores 11 El S stema cierra la partida y muestra el men principal Escenarios alternativos a En cualquier momento el usuario puede cancelar el proceso El Sistema cierra la partida y vuelve al men principal 4a El n mero de jugadores no es v lido Aal El Sistema vuelve al paso 2 6a El jugador seleccionado ya est reservado para la partida 6al El Sistema muestra un mensaje por pantalla y vuelve al paso 5 Descripci n del caso de uso Editar Jugadores Caso de uso Editar Jugadores Descripci n Gesti n de los jugadores del juego Actores Usuario Precondiciones Debe existir al menos un jugador en el sistema Postcondiciones El usuario podr ver las e
30. los valores del resultado de la partida a los Jugadores Jx 34 Diagrama de secuencia Editar Jugadores Usuario Elegir pcion opcion Figura 5 10 Diagrama de secuencia Editar Jugador Contratos de operaciones Editar Jugadores Operaci n ElegirOpcion opcion Responsabilidades Muestra por pantalla un men con las opciones de edici n Precondiciones Postcondiciones Se accedi al submen correspondiente a opcion 35 36 Cap tulo 6 Dise o 6 1 Dise o del sistema Al igual que se hizo en el capitulo de an lisis para el tema del dise o tambi n se seguir una metodolo g a orientada a objetos mediante UML Este proceso es mucho m s sencillo una vez que hemos especificado qu hace el sistema en los cap tu los anteriores Cabe decir que al igual que en el an lisis el dise o del sistema no contempla muchos detalles del sistema final solo da una idea orientativa sobr como se implementar el sistema En este cap tulo no he incluido descripciones de las clases ni de los m todos o atributos de las mismas dado que en la documentaci n del c digo se encuentra todo lo necesario a cerca de las clases y archivos que componen la aplicaci n 6 2 Diagrama de clases de dise o A continuaci n se presenta el diagrama de dise o de FreeRummi 6 1 37 int unsigned bool Ficha color int numero unsigned color int unsigned bool tiene esta form tiene do
31. material on the covers in addition Copying with changes limited to the covers as long as they preserve the title of the Document and satisfy these conditions can be treated as verbatim copying in other respects If the required texts for either cover are too voluminous to fit legibly you should put the first ones listed as many as fit reasonably on the actual cover and continue the rest onto adjacent pages If you publish or distribute Opaque copies of the Document numbering more than 100 you must either include a machine readable Transparent copy along with each Opaque copy or state in or with each Opaque copy a computer network location from which the general network using public has access to download using public standard network protocols a complete Transparent copy of the Document free of added material If you use the latter option you must take reasonably prudent steps when you begin distribution of Opaque copies in quantity to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy directly or through your agents or retailers of that edition to the public It is requested but not required that you contact the authors of the Document well before redistribu ting any large number of copies to give them a chance to provide you with an updated version of the Document 4 MODIFICATIONS You may copy and distribute a Modified Vers
32. memoria principal o secundaria Esta es la principal restricci n que tendr el dise o de nuestro videojuego Los videojuegos est n pensados para ejecutarse como aplicaci n principal no para compartir recursos con otros programas es por ello que pueden consumir muchos recursos 4 6 Atributos del sistema software Los atributos que se deben cumplir son La aplicaci n tiene que ser portable en sistemas compatibles con C y SDL El c digo de la aplicaci n no debe ser dependiente del sistema operativo en el que se desarrolle la aplicaci n Debe ser un c digo mantenible y f cilmente ampliable para futuras mejoras y versiones 21 22 Cap tulo 5 An lisis 5 1 Analisis del sistema Como se dijo en el capitulo anterior de entre todas las opciones para este proyecto voy a usar el enfoque orientado a objetos usando la notaci n UML 5 2 Funcionalidades del sistema 5 2 1 Organizaci n de las partes b sicas del juego En este incremento se analizan los elementos b sicos del juego ficha mont n soporte y tablero An lisis de la Ficha La Ficha es el elemento m s b sico para poder jugar En el juego habr un total de 106 fichas 104 fichas numeradas del 1 al 13 en 4 colores verde azul rojo y negro existiendo dos fichas con el mismo n mero y color y 2 comodines An lisis del Mont n El Mont n es el conjunto de todas las fichas del juego En principio estar n las 106 fichas dentro de l y a med
33. por Cronometro A unsigned suma in tActual Uint16 Tablero abierto bool pausa bool Soporte FichasRestantes int escogerFicha pos int Tablero Monton insertarFicha pos int escogerFicha coorX int coorY int void extraer robar void insertarFicha coorX int coorY int voip comprobarTablero bool Tablero Cronometro iniciar void pausar void continuar void insertar void abrir void vacio bool vacio bool Monton sumaSoporte const int desordenar void const abierto bool Soporte tiempoAgotado bool segTranscurridos in Cronometro Y 1 nombre string puntPartida int puntGeneral int partidasGanadas int partidasPerdidas int partidasAbandonadas int porcentajeGanadas double porcentajePerdidas double porcentajeAbandonadas double rango unsigned Jugador nombre const string amp esta formado por esta fofmado por esta formado por 3 es guardarlugador void tiene 1 Partida borrarJugador void 2 4 partidaGanada void numJugadores unsigned s A gt 1 4TurnoActual unsianed partidaPerdida void tiene El 1 partidaAbandonada void Partida numJugadores unsigned 2 aa coorX int puntuacionPartida puntos int void AO tiene anadirJugador void coorY int nombre const string amp i eliminarJugador void boton int puntPartida const int sistemas
34. que hay en el tablero compar ndolos con las fichas que tienen en sus soportes si es necesario modifican la posici n de los conjuntos en el tablero para que sigan siendo v lidos 73 Se pierden fichas cuando los robots toman el control de la partida No se pierden Es uno de los problemas m s costosos de resolver ya que he tenido que realizar numerosas pruebas y trazas a los algoritmos para poder averiguar donde se perd an las fichas pero finalmente he solucionado el problema en el 100 de los casos Se ordenan correctamente los soportes con las funciones de ordenar por color y ordenar por n mero S se ordenan Se puede ordenar por color y por n mero el soporte de un jugador durante la partida S se puede Haciendo clic en el bot n Ordenar n mero o bien pulsando la tecla n se ordena el soporte por n mero Si se hace clic en el bot n Ordenar color o bien se pulsa la tecla c se ordena el soporte por color Siguen los robots las reglas de juego igual que los jugadores S las siguen A la hora de pasar turno se comprueba el tablero y el soporte al igual que se hace con los jugadores Los sistemas expertos tienen el comportamiento esperado S lo tienen Adem s la funci n que elige aleatoriamente un sistema experto para cada robot fun ciona correctamente y hace que no se sepa que inteligencia tiene cada robot 74 Cap tulo 9 Conclusiones En este cap tulo comentar las conclu
35. se hace un estudio m s a fondo de estos elementos del juego 5 2 5 Sistemas expertos Este apartado se trata de un a adido a la clase partida en particular a la partida simple se cambio la forma de jugar la partida simple en vez de jugarse contra otros jugadores se juega contra el ordenador La forma de actuar del sistema experto variar en funci n de la inteligencia que implemente El sistema experto deber poder poner conjuntos escaleras y fichas sueltas as como una combinaci n de estas tres cosas 5 3 Modelo de casos de uso El modelo de casos de uso de UML especifica que comportamiento debe tener el sistema representa los requisitos funcionales del sistema centr ndose en qu hace y no en c mo lo hace 5 3 1 Diagrama de casos de uso En este apartado se incluye el diagrama de casos de uso que representa la funcionalidad de FreeRummi Para ello he seguido el siguiente esquema Identificaci n de los usuarios del sistema y sus roles Para cada role identificaci n de todas las maneras de interactuar con el sistema Creaci n de casos de uso para cada objetivo que queramos cumplir Estructuraci n de dichos casos de uso El resultado de aplicar este esquema a mi proyecto es el que se puede visualizar en la figura 5 1 25 A ly include I Cargar Jugador include I l Editar Jugadores Usuario Figura 5 1 Diagrama de casos de uso del sistema 5 3 2 Descripci n de los casos de
36. software que detalla la funcionalidad del sistema y que documenta el proceso de desarrollo del mismo 19 4 3 Estos completamente manejado por el rat n y bastar un clic encima de una opci n para acceder a ella Por ltimo habr una opci n para silenciar el juego que tambi n podr ser manejada con el rat n Ventana del Men Jugadores Esta ventana mostrar el submen Jugadores y mostrar las op ciones para Ver las estad sticas de un jugador Borrar jugadores y para Volver al men principal El men ser completamente manejado por el rat n y bastar un clic encima de una opci n para acceder a ella Por ltimo habr una opci n para silenciar el juego que tambi n podr ser manejada con el rat n Ventana de Partida Esta ventana proporciona la interfaz para interactuar en una partida de Free Rummi Mostrar el tablero el mont n los soportes el cron metro y la informaci n de los juga dores Como en todos los casos anteriores ser completamente manejable por rat n y pulsando la tecla ESC se volver al men principal Tambi n poseer la opci n de silenciar el juego Ventana Ver Esta ventana proporciona la interfaz para visualizar los datos estad sticos de un jugador Es una pantalla meramente informativa Mediante el rat n se podr desplazar por los diferentes usuarios que existan en el sistema con ayuda de unos botones Poseer un bot n para volver al men principal y otro para silenciar el juego
37. su funci n es almace nar el instante en el que se inici un determinado turno tActual contiene el tiempo actual tambi n se obtiene con SDL_GetTicks no es una variable que sirva por si sola pero es necesaria para obtener otras tPausa contiene el instante en el que se entr en pausa se obtiene con SDL_GetTicks tParado indica el tiempo que ha estado pausado el cronometro en principio su valor es O y en las sucesivas pausas se va obteniendo su valor de la forma tParado tActual tPausa Los m todos de esta clase son bastante simples siendo la mayor a de ellos asignaciones a los atribu tos Los nicos un poco m s complejos son el m todo bool tiempoAgotado y el m todo int segundosTranscurridos bool tiempoAgotado este m todo es el encargado de comprobar si el tiempo de un turno se ha agotado a no la dificultad est en restar los tiempos de pausa Por ello si el cronometro est en pausa se devuelve el valor O simbolizando que nunca acabar el tiempo Si no lo est devolver verdadero o falso en funci n a la siguiente expresi n tActual tInicio gt 60000 tParado La cual comprueba que el tiempo transcurrido ha superado los 60 segundos contando tambi n con el tiempo que ha estado pausado el cronometro 50 int segundosTranscurridos este m todo convierte el formato que devuelve SDL a segundos con la expresi n tActual tParado 1000 tInicio 1000 Esta exp
38. subsistema de audio de SDL 9 Clase Imagen Esta clase es la encargada de cargar y manipular una imagen del juego en la superficie de SDL Clase Fuente Esta clase es la encargada de cargar y manipular los textos que aparecen en la superficie de SDL Para un mayor orden inclu un archivo de cabecera constantes h el cual contiene las constantes para ubicar cada elemento en su sitio y as ser m s f cil modificar su posici n en el caso de que haya cambios En este incremento me fue de gran ayuda el Tutorial de libSDL 2 realizado en 2008 por un compa ero de la Universidad de C diz as como el libro Programaci n de videojuegos con SDL para Windows y Linux 13 3 1 4 Incremento 4 Dise o e implementaci n de la clase Partida Una vez finalic todas las clases bases para jugar y las clases para manejar SDL empec a a adir fun cionalidades a la clase Part ida Este es el incremento que m s tiempo y esfuerzo me llev junto con el primero ya que en este incremento se a adieron eventos de teclado y rat n cronometro puntuaciones de los jugadores etc Ten a claro desde un principio que el juego iba a ser completamente manejado por rat n Debido a la din mica del juego si hubiese optado por el teclado hubiese perdido mucha jugabilidad Para las distintas funcionalidades de la partida implemente las siguientes clases Clase Puntero Para el manejo de los eventos del rat n la cual informa de en qu posici n se
39. textbook or other functional and useful document free in the sense of freedom to assure everyone the effective freedom to copy and redistribute it with or without modifying it either commercially or noncommercially Secondarily this License preserves for the author and publisher a way to get credit for their work while not being considered responsible for modifications made by others This License is a kind of copyleft which means that derivative works of the document must themselves be free in the same sense It complements the GNU General Public License which is a copyleft license designed for free software We have designed this License in order to use it for manuals for free software because free software needs free documentation a free program should come with manuals providing the same freedoms that the software does But this License is not limited to software manuals it can be used for any textual work regardless of subject matter or whether it is published as a printed book We recommend this License principally for works whose purpose is instruction or reference 1 APPLICABILITY AND DEFINITIONS This License applies to any manual or other work in any medium that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License Such a notice grants a world wide royalty free license unlimited in duration to use that work under the conditions stated herein The Document
40. than one half of the entire aggregate the Document s Cover Texts may be placed on covers that bracket the Document within the aggregate or the electronic equivalent of covers 1f the Document is in electronic form Otherwise they must appear on printed covers that bracket the whole aggregate 8 TRANSLATION Translation is considered a kind of modification so you may distribute translations of the Document under the terms of section 4 Replacing Invariant Sections with translations requires special permission from their copyright holders but you may include translations of some or all Invariant Sections in addi tion to the original versions of these Invariant Sections You may include a translation of this License and all the license notices in the Document and any Warranty Disclaimers provided that you also inclu de the original English version of this License and the original versions of those notices and disclaimers In case of a disagreement between the translation and the original version of this License or a notice or disclaimer the original version will prevail If a section in the Document is Entitled Acknowledgements Dedications or History the require ment section 4 to Preserve its Title section 1 will typically require changing the actual title 9 TERMINATION 101 You may not copy modify sublicense or distribute the Document except as expressly provided un der this License Any attempt otherwise t
41. un nico jugador mientras que en void seleccionJugadores Video x v se escogen entre 2 y 4 jugadores el esquema de ambos es el siguiente 1 Inicializa las variables auxiliares 54 2 Se muestra un men para seleccionar el n mero de jugadores que participar n con ayuda del m todo void actualizarPantalla 3 Se muestra un men para introducir los jugadores a Si se va a jugar una partida simple se muestra un men para escribir el nombre del jugador que se desea a adir se introduce y el resto de jugadores los carga el sistema como robots b Si se va a jugar un concurso se entra en un bucle y se muestra un men para ir introdu ciendo el nombre de los jugadores que participar n La diferencia entre elegir partida simple O concurso es que en la partida simple las puntuaciones que se obtenga no contar n y se jugar contra el ordenador es una partida de entrenamiento mientras que en el concurso las puntuaciones ser n tenidas en cuenta se jugar n varias partidas por concurso y se jugar contra jugadores humanos 7 6 La clase IA La clase IA es la encargada de manejar los sistemas expertos para poder jugar partidas contra el ordena dor SCopia Soporte tCopia Tablero inteligencias vector lt int gt Conjunto vector lt Ficha gt IA selectorlA s Soporte t Tablero numInteligencias int i roboti s Soporte t Tablero int robotii s Soporte t Tablero int rabotiii s Soporte t Ta
42. uso Para la descripci n de los casos de uso se va a utilizar una notaci n formal usando plantillas Este texto debe ser legible y comprensible por un usuario que no sea experto Descripci n del caso de uso Cargar jugador Caso de uso Cargar Jugador Descripci n Carga un jugador para jugar una partida a FreeRummi Actores Usuario Precondiciones Postcondiciones Se carga un jugador para jugar una partida Escenario principal 1 El Usuario desea cargar un jugador 2 El Sistema muestra el men para escribir el nombre del jugador 3 El Usuario introduce el nombre del jugador 4 El Sistema comprueba que el nombre introducido es v lido y que existe el jugador 5 El Sistema carga el jugador Escenario alternativo a En cualquier momento un usuario puede cancelar y salir El Sistema cierra el men y sale al men principal 4a El nombre introducido no es v lido dal El Sistema muestra un mensaje por pantalla y vuelve al paso 2 4b El jugador no existe en el sistema 4b1 El Sistema crea un jugador con el nombre introducido 26 Descripci n del caso de uso Ver Caso de uso Ver Descripci n Muestra las estad sticas de los usuarios Actores Usuario Precondiciones Deben existir al menos un jugador en el sistema Postcondiciones Un jugador ser mostrado por pantalla Escenario principal 1 El Usuario desea ver las estad sticas de los jugadores 2 El Sistema muestra un men para seleccionar
43. void subrayado void normal woid mostrarlexto v Video frase const char x int y int r int 0 g int 6 b int 8 void Fuente Figura 7 3 Clase Fuente Comenzar repasando los atributos de esta clase fuente Este atributo es el encargado de almacenar la informaci n de la fuente escogida para ello se hace uso de la funci n SDL fuente TTF_OpenFont ruta tama o donde la ruta contiene el directorio donde se encuentra la tipograf a que se quiere cargar y el tama o el tama o en puntos que tendr la imagen del texto texto Este atributo almacenar la imagen de la fuente a dibujar en la superficie Color Este atributo servir para poder cambiar el color a la fuente posicion Este atributo como su propio nombre indica servir para posicionar la imagen del texto en la superficie de la pantalla Por otro lado la clase ofrece varios m todos para personalizar tales como negrita cursiva y subrayado que permiten dar distintos aspectos al texto Y por ltimo con el m todo void mostrarTexto Video xv const char frase int x int y int r 0 int g 0 int b 0 adem s de mostrar y posicionar la fra se en la pantalla podremos hacer que aparezca con el color que se haya definido en los tres ltimos parametros rgb 52 7 4 La clase GestorJugadores Esta clase es la encargada de mostrar los men s para Ver las estad sticas de los jugadores as como para Borrar jugadores
44. w QS s e Ql a te e LAGOS NI Z 2 u w Gama AS Ea clase Monton s ses seswa x w a OE AA eR ws La clase Partida es koe a ewe THROM DAH OHS Lache a ee k LOL OST AIRE Laclase M SICA sora raras AAA Laca Spurs dara MA Faxe Tableto ce PAA Eee S 9 ROE KORE ES Erek VIGGO ok u S eee eR ERR Q S 2 2 2 92 S E 2 G SU AA Otros detalles de implementaci n a 0 0 0a u 3 au u eee na e s ea a Pruebas 8 1 A 8 3 8 4 8 5 8 6 Dal Pilosofia d las praeDas s s oasis ero S amp S S k atagia SUS AA Incremento 2 Organizaci n de las partes b sicas del juego Incremento 3 Introducci n de gr ficos y sonidos eee eee Incremento 4 Dise o e implementaci n de la clase Partida Incremento 5 Dise o e implementaci n de los men s Incremento 6 Dise o e implementaci n del gestor de partida Incremento 7 Dise o e implementaci n del gestor de jugadores VIII 37 37 37 38 39 39 39 39 40 40 41 41 44 45 49 50 51 32 53 54 55 56 56 57 58 59 59 61 62 62 62 63 64 64 8 8 Incremento 8 Dise o e implementaci n de los sistemas expertos 73 9 Conclusiones Pel Posibles ampliaciones seu LL LL LLE A Manual de instalaci n A l Obtener FreeRummi juego de fichas numeradas A 2 Instalaci n B Manual de usuario B l B 2 B 3 B 4 B 5 PRO B
45. y en la quinta las partidas abandonadas Si el jugador existe en el sistema lo busca en el fichero gestorJugadores sav y carga en memoria los datos referentes al fichero nombre sav Tanto en un caso como en otro el sistema termina de inicializar los datos del jugador en memoria Se guardan correctamente los datos de los jugadores S se guardan El sistema abre el fichero correspondiente al jugador y escribe en el los datos ac tualizados Se borran correctamente los jugadores del sistema S se borran El sistema elimina la entrada del jugador del archivo gestoJugadores sav y elimina el archivo nombre sav 68 Se actualizan correctamente las puntuaciones de los jugadores S Adem s cada vez que se actualizan los datos primarios se actualizan todos los datos derivados correctamente Se tiene en cada momento informaci n de los eventos de rat n S se tiene La clase puntero devuelve correctamente las coordenadas donde se produjo un evento as como el bot n con el que se produjo Se mueven correctamente las fichas por la superficie S se mueven El efecto de arrastrado se cre y optimiz para obtener tiempos de respuesta ade cuados Responde correctamente el sistema a todos los eventos que se producen S responde Se realizaron infinidad de pruebas comprobando que el sistema hace lo que debe ha cer dependiendo del lugar en el que se produjera el evento Tambi n se comprob que no hiciera cosas
46. 0079 Servicios de Publicaciones de la Universidad de C diz 2 edition Joseph Giarratano Gary Riley Sistemas expertos principios y programaci n ISBN 9706860592 Internacional Tompson Editores S A 3 edition 2001 Jamendo Musica libre http www jamendo com es Glenford J Myers The art of software testing ISBN 0471469122 Hoboken John Wiley Sons 2 edition 2004 Pablo Recio Quijano Plantilla en Latex para PFC http softwarelibre uca es 9001 redmine wiki pfc Plantillas_LaTeX_para_PFC Consultado Abril 2011 Rummikub Instrucciones de Juego Parker Rummikub The original RummikubQ http www rummikulb com Consultado Abril 2011 Bernardo Cascales Salinas LaTeX una imprenta en sus manos ISBN 84923895 Pearson Educa ci n 2003 Antonio Garc a Serrano Programaci n de videojuegos con SDL para Windows y Linux ISBN 8495836084 Daniel Chaves V zquez Forja de FreeRummi Juego de fichas numeradas https forja rediris es news group_id 783 Wikipedia P gina wiki de Rummikub http es wikipedia org wiki Rummikub Consultado Abril 2011 95 96 GNU Free Documentation License Version 1 3 3 November 2008 Copyright c 2000 2001 2002 2007 2008 Free Software Foundation Inc lt http fsf org gt Everyone is permitted to copy and distribute verbatim copies of this license document but changing it is not allowed Preamble The purpose of this License is to make a manual
47. 01s D5 ase ej ap sisi euv pueg 103536 jap vopejuswajdwi a oyas q a O nua ase e ap eganid t um nuaw asep e ap UODNeJuawWa du nuaw asep e ap s s jeuy nuaw ap ssus bewi ap ou siq pueg usw so ap vopejuswajdwi 3 oyas q a a ePEZIJEUIJ eped JOpebnr asep e ap eganJd Jopebnr ase e ap uomeyuswajdu JOpebnr asep e ap sisi puy 0J331 0U0J asep 2 ap 2q2N Jd 1331 0U0J asep e ap u peyuawajdw 0J33140U0J asep e ap SISIPUYy 0J3Jund 35eP e ap 293NJd 0J3 JUNA ase e sp u peyuawajdw 1qe PE 1 0 14014 DEE HIN PETER EINER qaj 3JQUION Z 49D LLOZ 6 Ps ES 8 L s El el VZ E9 c9 Lo rs ES zs L s Lp OE SL PLP ELT cbt LL OL 6 r sam Figura 3 13 Diagrama de Gantt Incrementos 5 6 7 8 y 9 Cap tulo 4 Especificaci n de los requisitos del sistema 4 1 Modelado En este capitulo y en los dos siguientes voy a describir el modelado de la aplicaci n Dicho modelado comprende el An lisis y el Dise o del software que debemos realizar antes de la codificaci n El modelado nos proporciona la documentaci n necesaria para desarrollar implementar y mantener el proyecto as como una base para dise ar los planes de prueba del software Para el modelado de este sistema dadas sus caracter sticas vamos a usar el modelo orientado a objetos usando la notaci n UML En este cap tulo tratar primeramente la especificaci n de los requisito
48. 1 Comprueba que el jugador NO es un robot 2 Busca que el jugador efectivamente tiene un fichero en memoria secundaria 3 Actualiza los datos que exist an en el fichero con los nuevos El m todo void borrarJugador sigue el siguiente esquema 1 Busca que el jugador efectivamente tiene un fichero en memoria secundaria 2 Elimina de dicha memoria el fichero nombre sav y a continuaci n borra la linea nombre del fichero gestorJugadores sav El resto de m todos simplemente sirven para actualizar la informaci n del jugador tales como partidas ganadas perdidas puntuaci n general etc 7 10 La clase Menu Esta clase es la encargada de mostrar los men s navegar por el juego men principal men jugar y men jugadores opcion Efecto descripci n Fuente Menu menuPpal v Video int menuJugar v Video int menuJugadores v Video int Menui actualizarPpal v Video void actualizalugar v Video void actualizarJugadores v Video void Figura 7 10 Clase Menu En el diagrama de la figura 7 10 se puede observar que la funci n de esta clase es la de hacer de interfaz para navegar por los men s del sistema En el constructor Menu se inicializan y posicionan las im genes que se ver n por pantalla as como las fuentes que mostrar n los textos 58 La forma de actuar el m todo int menuPpal Video xv es la siguiente crea e inicia una banda sonora y a continuaci n se qu
49. 4 Figura 3 8 Incremento 7 Dise o e implementaci n del gestor de jugadores 8 Dise o e implementaci n de los sistemas expertos abr 5 may 5 8 1 Estudio de posibles herramientas para sistemas experto abr 5 abr 8 8 2 An lisis de la clase IA abr11 abr20 8 3 Implementaci n de la clase IA abr 21 abr 28 8 4 Prueba de la clase lA abr 29 may 5 Figura 3 9 Incremento 8 Dise o e implementaci n de los sistemas expertos Figura 3 10 Otras tareas A continuaci n se muestra el diagrama de Gantt con la planificaci n que he ido siguiendo para realizar el proyecto 15 sEPEUIWJ2 9589 595E FL 13 81 se 2 e ap eqanid ELZ t 523 ap UODEJU3 Wa du ELE l J3 9eL se 2 e p sisi euv LL Z tum 1J0d0S asep 2 ap eqanid OL Z te 523 ap uvoneyuswajdw 67 t odos asep e app SISIJEUY ez t m IOJUOW se 2 2 ap eq nid Lz to 5213 ap uvoneyuswajdw oz ta DJUOW 358 E ap sISIJeuy SZ ta PUII4 ase e ap eqanid wre ta se e ap uvoneyuswajdw Tez t m 24514 35802 e ap SISIJEUY ce m en D s qisod se ap 01pn353 L Z a311ed se ap uopeziue Jo a z L se A enbu jap U01293 3 vil t 503 sinbaJ ap ewoL E L is ob n 31q05 01pn353 zL A 10 6 uone3ulue d esawild DL jalueg opasoJd jap ozu 515 Jap sorseq soysinbay a L E po d s 1 obe un a qwon SEM 412 0L02 1D LOZ Figura 3 11 Diagrama de Gantt Incrementos 1 y 2 epezijeul4 pied Llp
50. 5intl6 const Uintl6 const Vintl6 Figura 7 7 Clase Imagen Como se observa en la figura 7 7 esta clase tiene unos m todos bastante triviales para modificar y obtener informaci n acerca de la imagen 7 8 La clase Iniciado Esta clase simplemente inicializa la librer a SDL Iniciado Iniciado Figura 7 8 Clase Iniciado El constructor de esta clase sigue el siguiente esquema 56 1 Inicializa el sistema de video 2 Inicializa el sistema de audio Mixer 3 Inicializa el sistema para el manejo de fuentes TTF Mientras que el destructor destruye con el siguiente esquema 1 Destruye el sistema de fuentes 2 Destruye el sistema de audio Mixer 3 Destruye el sistema video 7 9 La clase Jugador Esta clase es la encargada de gestionar a los jugadores as como guardar sus datos en disco y cargarlos en distintas sesiones Rango enum NOVEL 1 MEDIO AVANZADO EXPERTO robot bool nom string puntPartida puntGeneral int partGanadas int partPerdidas int partAbandonadas porcentajeGanadas double porcentajePerdidas double porcentajeAbandonadas double rango Rango soporte Soporte Jugador nombre const string amp robt bool false guardarlugador void borrarlugador void partidaGanada void partidaPerdida void partidaAbandonada void puntuacionPartida puntos int situacion int void iniciarSoporte m Monton amp void obtenerSoporte Soporte
51. 91 B 27 Pantalla Borrar de FreeRummi 5 a u 8 u 0 0 do a a u as en na dh 92 B 25 Botn COMIDA a as s Q k s w w e wa G Q s AA Dea Q amp Q Q x s 93 5 29 Bolon Case lan osos 93 XIII XIV Indice de tablas B L Ejemplo de Punmae en lt spore aa XV XVI Cap tulo 1 Introducci n 1 1 Objetivos El ocio est cada vez m s presente en la vida cotidiana y la inform tica no es ajena a dicho cambio cada vez aparecen nuevos dispositivos que nos permiten tener experiencias impensables hasta hace poco con un ordenador o disfrutar de nuestros juegos preferidos en cualquier parte El objetivo de este Proyecto Fin de Carrera es implementar el juego de mesa Rummikub Rummikub es un juego que combina l gica y estrategia creado en la d cada de 1930 por Ephraim Hertzano En l pueden participar de 2 a 4 jugadores y combina elementos del Rummy Domin Mah jongg y Ajedrez Se intenta mantener una m xima fidelidad al juego original en cuanto a movimientos reglas y elementos se refiere Se desea crear un videojuego con una interfaz f cilmente comprensible con una amplia gama de opciones que resulten interesantes para los jugadores Adem s estar liberado bajo licencia GPL ya que a d a de hoy existe alguna versi n para ordenador pero ninguna libre z E 2 e de 255 p p Dee Ree o e ee nn ASA i Ordenar Golor Comprobar y pasar Ordenar Numero Figura 1 1 Captura de una partida de FreeRumm
52. Expertos void jugar void E i IA 0 Puntero puntGeneral const int Partida actualizar void partidasGanadas const int Efecto posX int partidasPerdidas const int posY int partidasAbandonadas const int efecto Mix_Chunk tine boton int porcentajeGanadas const double Efecto ruta const char Puntero porcentajePerdidas const double reproducir loops int void I porcentajeAbandonadas const doubl Efecto lt tiene rango const unsigned Jugador Iniciado Iniciado 1 tiene musica Mix Music Musica ruta const char 1 silenciar void GestorPartida reproducir void pausar void El El continuar void Musica pantalla SDL_Surface alto int ancho int prof int GestorPartida void tiene void GestorPartida Video alto int 1024 ancho int 768 prof int 32 full bool false fuente TTF_Font actualizar void texto SDL_Surface ancho int color SDL_Color alto int posicion SDL_Rect esta formado por prof int Video Fuente ruta const char tam int void void GestorJugadores y EE_ o a r rn na void thiene void GestorJugadores mostrarTexto frase const char x int y int ver aan i r int 0 g int 0 b int 0 voi borrar void 1 i Fuente esta formado por Menu nn ae Menu x imagen ku imagen SDL_Surface
53. Extiende notablemente las capacidades para trabajar con diferentes formatos de ima gen Los formatos soportados son los siguientes BMP JPEG TIFF PNG PNM PCX XPM LBM GIF y TGA SDL TTF Permite usar fuentes TrueType en aplicaciones SDL He usado esta librer a y no cualquier otra para el tema de los gr ficos por que adem s de que ya hab a trabajado con ella en la asignatura Dise o de Videojuegos existe mucha documentaci n tutoriales y ejemplos que son de gran ayuda ante posibles dudas que puedan aparecer 49 7 1 La clase Cronometro La funci n de esta clase es la de controlar el tiempo durante la partida Seg n las reglas del juego el tiempo de un turno de FreeRummi es de un minuto En principio esta clase solo iniciaba y reiniciaba el cron metro tantas veces como turnos durara la partida pero tras varias pruebas de funcionamiento se propuso la posibilidad de pausar el juego lo cual tras un breve estudio se vio factible y se incluy teniendo as una clase m s completa Cronometro tActual Uintl6 tInicio Uinti tPausa Uintl6 tParado Vintl6 pausa bool Cronometro iniciar void pausar void continuar void tiempoAgotado bool segundosTranscurridos in Figura 7 1 Clase Cronometro Como se puede comprobar en el esquema de la figura 7 1 esta clase posee varios atributos para controlar los tiempos tInicio contiene el valor que devuelve la funci n SDL_Get Ticks
54. Gestionarjugadores Figura 6 5 Diagrama de interacci n del men principal Para ejecutar la aplicaci n se crea un objeto de la clase Sistema Control new SistemaControl y se ejecuta una operaci n de la clase Sistema Control que invoca a la operaci n Mostrar pMenu de la clase Pantalla Control La operaci n Mostrar pMenu se encarga de mostrar la pantalla del men de la aplicaci n Una vez mostrada la pantalla del men de opciones se est a la espera de que se produzca alg n evento En este caso el evento que puede producirse es que el usuario seleccione una determinada opci n del men Opcion Seleccionada opc 41 En funci n de la opci n del men que el usuario seleccione se crea un objeto de la clase de control que controla la acci n asociada a la opcion caso de uso seleccionada Diagrama de interacci n del submen jugar Este es el aspecto de la pantalla del submen jugar TER Y EEG rhe har Figura 6 6 Submen Jugar de FreeRummi Y el diagrama de interacci n asociado Jugar Pantalla Control jugar Mostrar pMenujugar l l Opcion seleccionada opc opc 1 Create Simple Control Create ee Concurso Control Figura 6 7 Diagrama de interacci n del submen Jugar Si en el men principal se escogi la opci n 1 se crea un objeto de la clase Jugar Control new Jugar Control y se ejecuta una operaci n de la clase Jugar Control que in
55. Jugadores 2 inicializa todas la variables de imagen de sonido y de textos El par metro que recibe contiene el n mero de juga dores que participar n en la partida por defecto valdr 2 El primer m todo interesante es void jugar Video xv int tipoPartida 0 El segundo par metro que recibe esta funci n tomar el valor 0 si es una partida simple o 1 en caso de ser un concurso Este m todo contiene el bucle del juego el cual sigue el siguiente esquema pl Inicializa la banda sonora y los soportes de los jugadores as como las variables auxiliares Entra en el bucle el cual tiene como condici n para salir que alg n jugador haya ganado o abandonado la partida Si el jugador es un robot se hace uso de la clase IA En caso contrario se pasa el control al m todo turno 5 Dependiendo de lo que devuelva dicho m todo se continua dentro del bucle o se sale En caso de seguir dentro se incrementa el jugador actual y se vuelve al paso 2 6 Una vez fuera del bucle se muestra una pantalla de ganador o de abandonado seg n el caso 7 Por ltimo si el tipo de partida es un concurso se actualizan los datos de los jugadores con las puntuaciones obtenidas 60 El m todo int turno es el m todo que controla todos los eventos que se producen en la partida tanto de teclado como de rat n con ayuda de los m todos bool eventosPulsaci n bool eventosLiberacion y bool eventosTeclado Este m todo sigue el
56. Partida u 0 hw ee eke a s sz sz ass 30 Diagrama de clases Gestor de jugadores 2 2 22 CE Emm nern 31 Diagrama de Clases El gestor de partida 2 a 2a sea bees a nah arena 31 Diagrama de clases Diagrama Global 31 Diagrama de secuencia Cargar Jugador ss 4 Han aan A 32 Diagrama de secuencia Ver Jugador 22222 2 Co m nn 33 Diagrama de secuencia Borrar Jugador e s e e e 0 33 Diagrama de secuencia Jugar Partida 1 2 e ez e e 0 34 Diagrama de secuencia Editar Jugador 35 Diagrama de diseno del sistema 5 2 u u ee te sea a A ee x 38 Diagrama de secuencia del caso de uso Cargar Jugador 40 Diagrama de secuencia del caso de uso Jugar s e e e x 40 Menu principal de FreeRummi 3 sa nie rasa Dee Ow SS 41 Diagrama de interacci n del men principal s s eee 41 submenu Jugar de FreeRummi 2 2 ss s 4 won t nis de a ahnen 42 Diagrama de interacci n del submen Jugar 42 Submen Editar jugadores de FreeRummi 1 ve eee a 43 Diagrama de interacci n del submen Editar Jugadores 43 XI 6 10 Diagrama de secuencia del caso de uso Ver Jugador 44 6 11 Diagrama de secuencia del caso de uso Borrar Jugador 45 6 12 Diagrama de flujo del primer Sistema experto
57. WY UCA Universidad de Cadiz ESCUELA SUPERIOR DE INGENIERIA INGENIERIA TECNICA EN INFORMATICA DE SISTEMAS FREERUMMI Juego de fichas numeradas Daniel Chaves V zquez 11 de mayo de 2011 SE UCA Universidad de C diz ESCUELA SUPERIOR DE INGENIER A INGENIERO T CNICO EN INFORM TICA DE SISTEMAS FREERUMMI Juego de fichas numeradas Departamento Lenguajes y Sistemas Inform ticos Directores del proyecto Juan Manuel Dodero Beardo y Manuel Palomo Duarte Autor del proyecto Daniel Chaves V zquez C diz 11 de mayo de 2011 Fdo Daniel Chaves V zquez Agradecimientos Me gustar a dedicar este texto a todas las personas que han hecho posible que hoy pueda escribirlo en especial a mis padres a mi hermana y a Lourdes as como me gustar a agradecer a Manuel Palomo director del proyecto por la ayuda y los consejos prestados II Licencia Este documento ha sido liberado bajo Licencia GFDL 1 3 GNU Free Documentation License Se in cluyen los t rminos de la licencia en ingl s al final del mismo Copyright c 2011 Daniel Chaves V zquez Permission 1s granted to copy distribute and or modify this document under the terms of the GNU Free Documentation License Version 1 3 or any later version published by the Free Software Foundation with no Invariant Sections no Front Cover Texts and no Back Cover Texts A copy of the license 1s included in the section entitled GNU Free Documentation License
58. a de la pantalla B 5 2 Controles en la partida A continuaci n se enumeran los controles y atajos de teclado que posee la partida de FreeRummi Robar Ficha Hacer clic izquierdo en el rea del mont n de fichas o pulsar la tecla R Pausar el juego Hacer clic izquierdo en el rea del cronometro o pulsar la tecla P Abandonar la partida Pulsar la tecla ESC Ordenar el soporte por color Hacer clic izquierdo en el bot n Ordenar Color o pulsar la tecla C Ordenar el soporte por n mero Hacer clic izquierdo en el bot n Ordenar N mero o pulsar la tecla N Comprobar el tablero y pasar turno Hacer clic izquierdo en el bot n Comprobar y pasar o pulsar la tecla S Activar Desactivar el sonido Hacer clic izquierdo en el altavoz o pulsar la tecla M 93 94 Bibliograf a 1 2 3 4 5 6 7 8 9 Lenses 10 11 12 13 14 15 Simple directmedia layer http www libsdl org Consultado Abril 2011 Antonio Garc a Alba Tutorial de libSDL para la programaci n de videojuegos http softwarelibre uca es node 890 2008 cplusplus com C reference http www cplusplus com reference Ministerio de educaci n Banco de imagenes y sonidos del Instituto de tecnolog as educativas http recursostic educacion es bancoimagenes web Gerardo Aburruzaga Garc a Francisco Palomo Lozano Inmaculada Medina Bulo Fundamentos de C ISBN 849828
59. a que iba variando las tareas y hac a el trabajo m s ameno Igualmente no he realizado todas las im genes y sonidos del juego de una vez si no que los he ido haciendo e introduciendo a medida que los iba necesitando Decid que el programa se codificar a en C ya que es el lenguaje que m s he usado durante la carre ra Para ello me he ayudado de referencias como el libro Fundamentos de C 5 o sitios web como Cplusplus reference 3 Para el tema de los gr ficos y el sonido me decant por libSDL Antes de esa decisi n me tom un tiempo para investigar algunas otras herramientas para programar con gr ficos y con sonido pero por toda la documentaci n 1 y tutoriales que tiene adem s de por ser multiplataforma me decant por la anteriormente dicha libSDL Estudi la forma de documentar el proyecto y de hacer la memoria para documentar el c digo me decant por Doxygen ya que conoc a dicha herramienta de un curso que hicimos en la asignatura Dise o de Videojuegos adem s de ser una de las mejores herramientas para generar documentaci n de manera autom tica Para la memoria no ten a claro como estructurarla as que decid 1r haciendo un borrador a medida que iba avanzando Cuando necesit estructurar toda la memoria el director del proyecto me recomend que usara una plantilla en IATEX 9 que ha creado un compa ero de la titulaci n y el libro LaTeX una imprenta en sus manos 12 de tal forma que solo tuve que ir p
60. ada uno es libre de modificarlas o formar otras nuevas con fichas de sus soportes seg n les convenga Los jugadores tiene un tiempo l mite de 1 minuto por turno Si pasado el minuto no han conse guido arreglar con xito las fichas de la mesa deben devolverlas a su posici n original sobre el tablero y coger tres fichas m s del mont n como penalizaci n El juego continua hasta que uno de los jugadores vac e por completo su soporte Los dem s juga dores suman los puntos de sus soportes B 1 3 Manipulaci n I La manipulaci n es la parte m s interesante de FreeRummi Consiste en a adir o alterar las com binaciones previamente jugadas de forma que le permita al jugador colocar sobre la mesa el m ximo de fichas de su soporte 79 2 Las fichas pueden ser manipuladas en cualquiera de las siguientes maneras siempre que al final de cada turno solo haya combinaciones v lidas sobre la mesa y no queden fichas sobrantes 1 A adir una o m s fichas del soporte para formar una escalera Dados el siguiente soporte B 1 y el siguiente tablero B 2 Figura B 1 Caso 1 Soporte antes de la manipulaci n Figura B 2 Caso 1 Tablero antes de la manipulaci n El 4 5 y 6 azules est n sobre el tablero el jugador a ade 3 y un 7 azules de su soporte teniendo entonces B 3 Figura B 3 Caso 1 Tablero despu s de la manipulaci n 2 Quitar una cuarta ficha de una serie y utilizarla para crear una nueva combinaci n
61. ake make S la compilaci n ha tenido xito nos generar un fichero ejecutable llamado freerummi por tanto s lo tendremos que ejecutarlo freerummi O bien haciendo doble clic en el entorno gr fico 77 78 Ap ndice B Manual de usuario Bienvenido al manual de usuario de FreeRummi en las siguientes p ginas aprender las reglas de este juego as como a moverse por los men s del mismo Bl El juego Las reglas de FreeRummi est n extra das del manual oficial de Rummikub 10 B 1 1 Objetivo del juego Ser el primero jugador en colocar todas las fichas de soporte y obtener la mayor puntuaci n al sumar las fichas que queden en los soportes de los otros jugadores B 1 2 Las reglas I Para empezar a jugar cada jugador debe tener combinaciones que sumen como m nimo 30 puntos determinado por la suma del valor de cada ficha Si un jugador no puede empezar a jugar porque no tiene los 30 puntos o porque decide que no quiere hacerlo deber coger una ficha del mont n Con esto termina su turno El juego continua hac a el jugador de la derecha Los jugadores deben seguir cogiendo fichas del mont n en cada uno de sus turnos hasta que ob tengan la combinaci n o combinaciones que sumen 30 puntos m nimo y que les permita empezar a jugar Cuando lo consigan deben colocar sus combinaciones sobre la mesa Una vez colocadas en la mesa las combinaciones de n meros pertenecen a todos los jugadores y c
62. as cambian de imagen y se muestra una peque a descripci n de lo que hace cada una Se escuchan los sonidos S La banda sonora comienza al inicio de la ejecuci n del programa as como los efectos suenan al elegir una opci n Adem s es posible silenciarlo todo Se captan correctamente los eventos S Tanto los de movimiento como los de pulsaci n del rat n ya que en los men s el teclado no tiene asignado utilidades Conducen las opciones a las secciones correctas Si Es posible volver al men principal desde cualquier submen S Incremento 6 Dise o e implementaci n del gestor de partida Se ve correctamente la pantalla de selecci n de jugadores S Todas las im genes y textos aparecen correctamente posicionados Se pueden elegir correctamente el n mero de participantes en una partida S se puede El sistema no deja que este n mero sea menor que dos ni mayor que cuatro Se intent acceder con n meros fuera de este rango y el sistema siempre respondi sin dar lugar a fallos de ejecuci n ni efectos secundarios Se pueden elegir los jugadores correctamente S se puede Se prob a insertar jugadores con nombres v lidos e inv lidos con distintas longitu des y siempre se devolvi una respuesta correcta 71 8 7 Capta correctamente los eventos S los capta Tanto los de rat n para confirmar o cancelar como los de teclado para introducir el nombre de los juga
63. asando y redactando el borrador seg n la estructura que me daba la plantilla 3 1 2 Incremento 2 Organizaci n de las partes b sicas del juego En este incremento decido qu elementos son fundamentales para el juego centr ndome en la partida que es pilar central de mi proyecto Estos elementos son Fichas el saco o Monton de fichas atriles o Soportes y un Tablero Una vez decididos dichos elementos se estudi como se representar an en memoria encontr ndonos con las siguientes clases b sicas para poder jugar Clase Ficha Una ficha se caracteriza por su n mero y su color Clase Mont on El conjunto de todas las fichas es el Mont n Clase Soporte Las fichas que cada jugador tenga se guardar n en su Soporte Clase Tablero Los conjuntos o escaleras de fichas que pueda formar pues las pondr en el Tablero En las primeras versiones del juego su ejecuci n se llevaba a cabo mediante consola 3 1 para compro bar el correcto funcionamiento del motor de manera independiente a su representaci n gr fica crear las fichas desordenar el mont n y permitir extraer fichas de l colocar las fichas en el soporte y permitir ordenarlas insertar y extraer fichas poder colocar conjuntos en el tablero y lo m s complicado realizar todas las comprobaciones para que en el tablero no se pudieran insertar nada m s que conjuntos y esca leras de fichas v lidos Doxigen es un generador de documentaci n para C C Java Objective C
64. at can be read and edited only by proprietary word processors SGML or XML for which the DTD and or processing tools are not generally available and the machine generated HTML PostScript or PDF produced by some word processors for output purposes only The Title Page means for a printed book the title page itself plus such following pages as are needed to hold legibly the material this License requires to appear in the title page For works in formats which do not have any title page as such Title Page means the text near the most prominent appearance of the work s title preceding the beginning of the body of the text The publisher means any person or entity that distributes copies of the Document to the public A section Entitled XYZ means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language Here XYZ stands for a specific section name mentioned below such as Acknowledgements Dedications Endorsements or History To Preserve the Title of such a section when you modify the Do cument means that it remains a section Entitled XYZ according to this definition The Document may include Warranty Disclaimers next to the notice which states that this License ap plies to the Document These Warranty Disclaimers are considered to be included by reference in this License but only as regard
65. being LIST THEIR TITLES with the Front Cover Texts being LIST and with the Back Cover Texts being LIST If you have Invariant Sections without Cover Texts or some other combination of the three merge those two alternatives to suit the situation If your document contains nontrivial examples of program code we recommend releasing these exam ples in parallel under your choice of free software license such as the GNU General Public License to permit their use in free software 103
66. blero int TA ponerConjunto int ponerEscalera int ponerFichas int comprobarFicha f const Ficha bool colorRepetido f const Ficha amp bool insertarConjunto void Figura 7 6 Clase IA Los m todos p blicos de esta clase est n orientados a crear sistemas expertos a partir de los m todos privados int selectorIA este m todo asigna un sistema experto a cada robot que controla el or denador de esta forma es m s complicado saber que har int roboti Soporte xs Tablero xt sistema experto n mero uno Si EST abier to intenta poner fichas sueltas en caso de no conseguirlo intenta poner conjuntos y en caso de no conseguirlo intenta poner escaleras Si NO EST abierto intenta poner conjuntos y si estos no suman m s de 30 puntos intenta poner escaleras int robotii Soporte xs Tablero xt sistema experto n mero dos Si ESTA abier to y tiene m s de 40 puntos o menos de 20 intenta quitarse el mayor n mero de fichas poniendo escaleras y conjuntos si tiene entre 40 y 20 puntos intenta poner fichas sueltas Si NO EST abierto intenta poner tanto escaleras como conjuntos Este robot intenta quedarse r pidamente con pocas fichas y cuando tiene muy pocos puntos 20 intenta ganar poni ndolo todo 55 int robotiii Soporte xs Tablero xt sistema experto n mero dos Si EST abier to y tiene m s de 3 fichas intenta poner conjuntos y escaleras y si tiene 3 o menos fichas intenta pon
67. c Musica ruta const char iniciar void silenciar void reproducir void pausar void continuar void Musical Figura 7 15 Clase Musica Esta clase a sufrido varios cambios a medida que se iban implementando los incrementos en un prin cipio la clase solo tenia el m todo reproducir pero una vez que se introdujo la pausa a la clase cronometro hubo que crear los m todos pausar y continuar para poder crear el efecto de pausado completo En un ltimo incremento se a adi la variable global bool silencio con la cual se puede dejar en silencio el juego desde cualquier men y para poder modificar esta variable se cre el m todo silenciar 7 16 La clase Soporte Esta es otra de las clases base de FreeRummi Es la encargada de almacenar las fichas que un jugador posee 62 fichRest int suma int sigExt Ficha 50p 28 Ficha abrto bool Soporte 5Soporte s const Soportes operator s const Soportes Soporte amp escogerFicha int pos cons Fichas ordenar f const Ficha amp pos int bool robar m Monton amp void abrir void ordenarNumero void ordenarColor void Vacio bool fichas const int sumaSoporte const int abierto bool 5oporte void juntarFichas void intercambiar posl const int pos2 const int voi Figura 7 16 Clase Soporte Esta clase tambi n ha ido sufriendo cambios a lo largo de los incrementos en pr
68. c a delante y hac a atr s Las flechas responden correctamente a los eventos de rat n Se puede volver al men principal desde esta pantalla 72 8 8 Si se puede Haciendo clic en el bot n cancelar Se reproduce el sonido Si Se ve correctamente la pantalla para borrar jugadores S se ve En la pantalla aparece el nombre del jugador seleccionado para borrar y un mensaje que ofrece las instrucciones para borrar al jugador seleccionado Se puede navegar por la pantalla para elegir distintos jugadores S se puede Mediante unas flechas de direcci n se puede ir moviendo hac a delante y hac a atr s Las flechas responden correctamente a los eventos de rat n Se borran correctamente los jugadores del sistema S se borran Al hacer clic en el bot n confirmar se elimina del sistema el jugador seleccionado y se vuelve al men principal Se puede volver al men principal desde esta pantalla S se puede Haciendo clic en el bot n cancelar Se reproduce el sonido S Incremento 8 Dise o e implementaci n de los sistemas expertos Se colocan correctamente los conjuntos y las escaleras en el tablero S se colocan Los robots comprueban y extraen correctamente todos los conjuntos o escaleras que poseen y los colocan de forma v lida y ordenada en el tablero Se colocan correctamente las fichas sueltas en el tablero S se colocan Los robots comprueban todos los conjuntos
69. del juego Rummikub as como las herramien tas usadas para el desarrollo de mi versi n particular del mismo 2 1 Rummikub FreeRummi es la creaci n de una versi n libre liberado con licencia GPL del juego de mesa Rummikub en el que se intenta mantener una m xima similitud al juego original con una amplia gama de opciones Seg n wikipedia 15 Rummikub fue creado en los a os 1930 por un inventor rumano despu s emi grado a Israel llamado Ephraim Hertzano Despu s Hertzano lo export a Europa oeste y Am rica El juego se compone de 106 fichas 104 numeradas y 2 comodines Las fichas est n numeradas del uno al trece y en cuatro diferentes colores negro rojo azul y amarillo Cada jugador tiene un soporte para guardar sus fichas de forma que el oponente no las vea el soporte es un atril parecido al que se usa en el Scrabble En primer lugar las fichas son puestas en una bolsa o saco peque o cada jugador saca 14 fichas al azar para jugar Para decidir qui n empieza primero todos sacan una ficha y luego la devuelven Empieza quien sac el n mero m s alto en el caso de un comod n se pueden aplicar reglas propias o seg n las reglas oficiales su valor es de 30 otra opci n es sacar otra ficha Para empezar a poner los jugadores deben tener uno o mas grupos que sumen 30 puntos o m s los puntos son tomados seg n el n mero en el caso de usarse un comod n su valor es 30 En el caso de no tener una combinaci
70. del mismo El m todo const Fichas extraer se encarga de sacar la ficha que se encuentra en la primera posici n del vector El m todo bool vacio simplemente informa de si el mont n est vac o o no 7 12 La clase Partida Esta clase es el pilar central de la aplicaci n es la encargada de gestionar la partida con todos sus eventos 59 tablero Tablero tableroCopia Tablero crono Cronometro monton Monton Jugadores vector lt Jugador gt soporteCopia Soporte numJugadores unsigned jugadorActual unsigned pPulsar Puntero pSoltar Puntero pMovimiento evento SDL Event f Ficha robar bool comprobar bool Salir bool pausa bool turn int cont int cron Fuente info Fuente cambio Fuente musica Musica Partida numJug unsigned 2 jugar v Video tipoPartida int 0 voi anadirlugador j Jugador bool eliminarlugador j Jugador bool iniciarlugadores void Partidal turno v Video int mostrarTextos v Video void actualizarPantalla vw Video void pantallaCambio v Video void pantallaGanador w Video void pantallLaAbandonado v Video void SaLlirPartida v Video bool pantallaSalir v Video void eventosPulsacion bool eventosLiberacion bool eventosTeclado bool Figura 7 12 Clase Partida Explicar que hacen los m todos mas relevantes de esta clase El constructor de la clase Partida unsigned num
71. diciones de realizar un proyecto software con bastantes posibilidades de xito Gracias a este proyecto he aprendido a utilizar herramientas con l4I Xy en particular la plantilla rea lizada por un compa ero de la Universidad de C diz 9 la cual me ha ahorrado much simo tiempo y esfuerzo adem s de la gran calidad de presentaci n que proporciona He profundizado en el manejo y configuraci n de Doxygen pienso que otra herramienta imprescindible a la hora de documentar el c digo de una aplicaci n ya que pr cticamente sin ning n esfuerzo se obtiene una documentaci n de gran calidad He aprendido a utilizar en profundidad la librer a libSDL gracias al manual del compa ero Antonio Garc a Alba 2 as como a manejar el editor de textos emacs el cual posee infinidad de opciones A nivel personal he aprendido a imponerme un ritmo de trabajo seguir un horario cumplir unas fechas de entrega sin que nadie este supervisando mi trabajo o si estoy cumpliendo con lo dicho anteriormente 75 9 1 Posibles ampliaciones En este apartado comentar posibles mejoras que puedan realizarse al proyecto 1 Juego en red Debido a la naturaleza del juego pienso que ser a una buena opci n incluir esta ca racter stica en versiones futuras del mismo ya que se podr a llegar a conseguir jugar a FreeRummi con personas de cualquier parte del mundo 2 Crear un sitio web en el que a adir records puntuaciones y experiencias del juego 3 I
72. dores Se puede salir del gestor de partida en cualquier momento S Haciendo clic sobre el bot n cancelar se vuelve al men principal Se reproducen los sonidos S Tanto la banda sonora como los efectos Se crea correctamente una partida simple S se crea Primero aparece la pantalla de selecci n de jugadores se elige el n mero de parti cipantes se inserta el nombre del jugador y a continuaci n el sistema crea tantos robots como participantes haya elegido el jugador menos uno Se lleva a cabo la partida y una vez finalizada al tratarse de una partida simple no se guardan puntuaciones Se crea correctamente un concurso S se crea Primero aparece la pantalla de selecci n de jugadores se elige el n mero de partici pantes se insertan tantos jugadores como se haya elegido en el paso anterior y se juegan tantas partidas como participantes haya Al final de cada partida se actualizan las puntuaciones de los jugadores Incremento 7 Dise o e implementaci n del gestor de jugadores Se ve correctamente la pantalla de estad sticas de los jugadores S se ve En la pantalla aparecen de forma ordenada y l gica toda la informaci n referente al ju gador seleccionado En caso de que no haya ning n jugador en el sistema se muestra un mensaje informando de ello Se puede navegar por la pantalla para elegir distintos jugadores S se puede Mediante unas flechas de direcci n se puede ir moviendo ha
73. e none The Cover Texts are certain short passages of text that are listed as Front Cover Texts or Back Cover Texts in the notice that says that the Document 1s released under this License A Front Cover Text may be at most 5 words and a Back Cover Text may be at most 25 words A Transparent copy of the Document means a machine readable copy represented in a format who se specification 1s available to the general public that is suitable for revising the document straight forwardly with generic text editors or for images composed of pixels generic paint programs or for drawings some widely available drawing editor and that 1s suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters A copy made in an otherwise Transparent file format whose markup or absence of markup has been arranged to thwart or discourage subsequent modification by readers is not Transparent An image format is not Transparent if used for any substantial amount of text A copy that is not Transparent is called Opaque Examples of suitable formats for Transparent copies include plain ASCII without markup Texinfo input format LaTeX input format SGML or XML using a publicly available DTD and standard conforming simple HTML PostScript or PDF designed for human modification Examples of transparent image formats include PNG XCF and JPG Opaque formats include proprietary formats th
74. e r pidamente con pocas fichas y cuando tiene muy pocos puntos 20 intenta ganar poni ndolo todo 46 Comienza el algoritmo Est abierto NO PonerConjuntos PonerEscaleras SI Tiene m s de 40 puntos o menos de 207 NO PonerFichassueltas SI PonerConjuntos PonerEscaleras Figura 6 13 Diagrama de flujo del segundo sistema experto Funcionamiento del tercer sistema experto Si est abierto y tiene m s de 3 fichas intenta poner conjuntos y escaleras y si tiene 3 o menos fichas intenta poner fichas sueltas Si no est abierto intenta escaleras y si con ellas no suma m s de 30 puntos intenta poner conjuntos Este robot intenta quitarse r pidamente fichas y cuando solo tiene 3 juega con el tablero de esta forma no modifica los conjuntos del tablero hasta que no va a ganar 4 soyunluosusuog ON owuyuchje jap UH sojund opg ap sew ojsand eH sels e953 9U04 seyangsseysqlsuod ON seisje3szysuog ON sounluogusuog ESEUL ap seu sus 0us qe 1537 ouuob e a ezu uo Figura 6 14 Diagrama de flujo del tercer sistema experto 48 Cap tulo 7 Implementaci n Una vez finalizados el an lisis y el dise o queda codificar y probar todo lo estudiado anteriormente Pa ra ello voy a utilizar como lenguaje de programaci n C y como librer a para entorno gr fico libSDL Seg n la siguiente ex
75. eda a la espera de que se produzca alg n evento Estos eventos pueden ser seleccionar la opci n Jugar seleccionar la opci n Jugadores o seleccionar la opci n Salir cada opci n llevar a un submen controlado por los m todos e int menuJugar Video xv el cual act a de igual forma que su antecesor solo que con las opciones Simple Concurso y Volver Las dos primeras opciones desembocan en el Gestor de partida mientras que la ltima vuelve al men principal e int menuJugadores Video xv el cual act a de igual forma que su antecesor solo que con las opciones Ver Jugar y Volver Las dos primeras opciones desembocan en el Gestor de jugadores mientras que la ltima vuelve al men principal El resto de m todos privados tienen la funci n de mostrar por pantalla las opciones y las descrip ciones de cada opci n 7 11 La clase Monton Esta clase es una de las clases base de FreeRummi la cual contiene el total de las fichas que componen el juego fichRest int sigExt Ficha monton vector lt Ficha gt Montoni extraer const Fichas Vacio bool Monton desordenar void Figura 7 11 Clase Monton Como se observa en la figura superior 7 11 esta clase posee un vector de Fichas Sus m todos son bastante simples los repasar brevemente El constructor crea e inserta todas las fichas en el vector y a continuaci n ayudado del m todo privado desordenar obtiene una permutaci n aleatoria
76. eeb 2 a soso a B 1 1 Objetivo del juego BALZ Lasterlas 2 Z s o w h a E R 2 Q amp amp w B 1 3 Manipulaci n BLA El comod n sas D 1 5 Funt aci n 2 s sse lt lt W ws Q w A B LO6 BSOS es kb na Ee ed S G 3 Fl men principal 4 2 4 s s sasssa 24324462 El men ccoo AAA B 3 1 Pantalla de selecci n de jugadores B 3 2 Pantalla de partida El men Jugadores 6 6642252454404 B 4 1 Pantalla Vet 2243 20 4 apar B 4 2 Pantalla Borrar Controles y atajos de teclado B 5 1 Navegar por los men s B 5 2 Controles en la partida 4 lt lt Bibliografia y referencias GNU Free Documentation License 1 APPLICABILITY AND DEFINITIONS VERBATIM COPYING COPYING IN QUANTITY MODIFICATIONS COMBINING DOCUMENTS COLLECTIONS OF DOCUMENTS AGGREGATION WITH INDEPENDENT WORKS TRANSLATION TERMINATION N oo 1 ON UN BW WN ADDENDUM How to use this License for your documents 10 FUTURE REVISIONS OF THIS LICENSE 11 RELICENSING 75 Pda s a 76 77 eee AS eee eee 5 77 ora 77 79 EEE 79 ROTTEN 79 ETE ANTE 79 rus 5 AA AA 19 TEE TERR 85 E 86 EEE 86 pido sados sees 87 EEE 87 TEE 88 FATE 89 ESE 25 EEE 90 pasais eee nee P 91 Pe se eee Pe eee ee ee ee 92 bee ace eee ae ease aes 92 aora aa 92 Par ua ae sas 93 95 Indice de figuras 1 1 2 1 2 2 3 1
77. en para ver las estad sticas de otros jugadores o hacer clic sobre el bot n cancelar para volver al men principal La forma de actuar el m todo void Borrar Video xv es similar a la de Ver crea e inicia una banda sonora carga en memoria el nombre de todos los jugadores del sistema y a continuaci n se pueden dar dos posibles ramas e Que no haya jugadores en el sistema el m todo entra en un bucle y muestra por pantalla un mensaje informando de que no hay jugadores para mostrar ayudado del m todo privado void pantallaNo Video xv y a esperas de que se produzca un evento para volver al men principal en este caso hacer clic sobre el bot n cancelar e Que haya jugadores en el sistema en este caso entra en un bucle en el que muestra el nombre del jugador seleccionado para borrar con ayuda del m todo privado actualizarBorrar Video xv y aesperas de que se produzca un evento que puede ser moverse por el men para selec cionar otros jugadores hacer clic en el bot n confirmar para borrar el jugador seleccionado O hacer clic sobre el bot n cancelar para volver al men principal 53 7 5 La clase GestionPartida La clase GestorPart ida es la encargada de mostrar la interfaz para introducir jugadores en la partida as como para manejar los distintos tipos de partida que se pueden jugar GestorPartida texto Fuente ronda Texto musica Musica nombre string numJugadores unsgined partida Partida Jugado
78. er fichas sueltas Si NO EST abierto intenta escaleras y si con ellas no suma m s de 30 pun tos intenta poner conjuntos Este robot intenta quitarse r pidamente fichas y cuando solo tiene 3 juega con el tablero de esta forma no modifica los conjuntos del tablero hasta que no va a ganar El c digo de estos m todos son simplemente llamadas a otros m todos de la clase que son los que realmente realizan las funciones de extracci n y colocaci n de fichas int ponerConjunto como su propio nombre indica la funci n de este m todo es colo car en el tablero todos los conjuntos v lidos que posea el soporte haciendo uso de los m todos auxiliares bool comprobarFicha ybool colorRepetido int ponerEscalera la funci n de este m todo es colocar en el tablero todas las escaleras v lidas que posea el soporte haciendo uso de los m todos auxiliares bool comprobarFicha ybool colorRepetido int ponerFichas la funci n de este m todo es colocar en el tablero todas las fichas suel tas que se puedan colocar haciendo uso de los m todos auxiliares bool comprobarFicha y bool colorRepetido 7 7 La clase Imagen Esta clase se encarga de cargar una imagen que est en cualquier formato compatible con SDL_Image imagen SDL_ Surface posicion SDL_Rect Imagen ruta const char x 5Sint16 0 y S5int16 0 dibujar v Video void modificarx x Sint16 void modificarY y Sint16 void const Sintl6 const
79. etectaron los problemas y se puso soluci n Una vez solucionado se han hecho todo tipo de pruebas intentando perder fichas y nunca se ha conseguido Se puede jugar una partida completa en la consola S se puede pero con restricciones Como ya coment en el cap tulo tres en este incremento trataba de crear la base ignorando muchas funcionalidades cabe recordar tambi n que en este incremento el juego se ejecutaba en consola Por tanto se puede jugar una partida completa pe ro sin muchos de los elementos que luego se fueron incluyendo entorno gr fico cronometro etc Finaliza correctamente la ejecuci n del programa S Tanto si se deja una partida a medias como si se finaliza vaciando un soporte el programa termina correctamente 66 8 3 Incremento 3 Introducci n de gr ficos y sonidos Se inicia correctamente SDL S se inicia Se ve una ventana con las dimensiones dadas en caso contrario dar a un error Se inicia correctamente el subsistema de audio S El subsistema de sonido se cargar correctamente ya que se puede escuchar la banda sonora de la partida Se inicia correctamente la librer a TTF S En la pantalla aparecen los textos de prueba que se hicieron para este incremento Se muestran correctamente las im genes en la superficie S se muestran Adem s es posible cargar im genes en formato PNG y otros formatos de imagen Se posicionan las im genes seg n las coorde
80. funci n del fichero de cabecera constantes h En el se encuentra una lista con todas las constantes de posici n de todos y cada uno de los elementos gr ficos del juego en el siguiente orden Posici n en el eje x ELEMENTO_X Posici n en el eje y ELEMENTO Y Posici n en el eje x m s el ancho de la imagen ELEMENTO_XW Posici n en el eje y m s el alto de la imagen ELEMENTO_ YH La finalidad de este fichero es poder cambiar c modamente los valores en caso de querer realizar mo dificaciones en los gr ficos sin tener que buscar por el c digo Por otro lado en las clases que tiene elemento gr fico he a adido funciones cuyo prototipo es bool areaElemento const Puntero amp p cuyo prop sito es el de confirmar si un evento determinado por el puntero p se ha producido dentro del rea del elemento o no Como cierre de este cap tulo quiero comentar que durante la elaboraci n del mismo no he querido entrar en detalles muy concretos de implementaci n ya que adjunto la documentaci n de todo el c digo la cual se puede encontrar en el directorio freeRummi doc del CD y que durante la implementaci n fui a adiendo comentarios a todos los fragmentos de c digo que pod an resultar costosos de entender 64 Cap tulo 8 Pruebas 8 1 Filosofia de las pruebas El objetivo de las pruebas es la detecci n de defectos en el software y descubrir un defecto deber a con siderarse el xito de una prueba Las recome
81. g copyleft Each version of the License 1s given a distinguishing version number If the Document specifies that a particular numbered version of this License or any later version applies to 1t you have the option of following the terms and conditions either of that specified version or of any later version that has been published not as a draft by the Free Software Foundation If the Document does not specify a version number of this License you may choose any version ever published not as a draft by the Free Software Foundation If the Document specifies that a proxy can decide which future versions of this License can be used that proxy s public statement of acceptance of a version permanently authorizes you to choose that version for the Document 11 RELICENSING Massive Multiauthor Collaboration Site or MMC Site means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works A public wiki that anybody can edit 1s an example of such a server A Massive Multiauthor Collaboration or MMC contained in the site means any set of copyrightable works thus published on the MMC site CC BY SA means the Creative Commons Attribution Share Alike 3 0 license published by Creative Commons Corporation a not for profit corporation with a principal place of business in San Francisco California as well as future copyleft versions of that l
82. i 1 2 Estructura del documento El primer cap tulo de este documento es en el que nos encontramos actualmente Contempla los objeti vos de mi Proyecto Final de Carrera as como la estructura de este documento En el segundo cap tulo se ver n los conceptos b sicos a tener en cuenta qu es Rummikub y que he rramientas he utilizado para su desarrollo y adaptaci n a mi proyecto En el tercer cap tulo se expone la planificaci n que he seguido durante el periodo de desarrollo del pro yecto incluyendo un diagrama de Gantt y los diferentes incrementos por los que ha pasado el proyecto Los tres siguientes cap tulos abarcan el proceso de ingenier a del software especificaci n de requisitos an lisis y dise o En el s ptimo cap tulo se habla sobre la implementaci n del videojuego las t cnicas y herramientas usadas as como las diferentes estrategias que se han seguido para realizarlo El octavo cap tulo repasa las diferentes pruebas que se han realizado al c digo En el noveno cap tulo presento las conclusiones e impresiones que he tenido a lo largo del desarrollo del proyecto En el ltimo cap tulo se incluye distintos ap ndices tales como el manual de instalaci n el manual de usuario y a bibliograf a Al ser un producto de Software Libre se incluye la licencia en la que se basa la documentaci n del pro yecto Cap tulo 2 Conceptos b sicos En este segundo capitulo se presenta la historia y reglas
83. icaci n Una vez mostrada la pantalla del men de opciones se est a la espera de que se produzca alg n evento En este caso el evento que puede producirse es que el usuario seleccione una determinada opci n del men Opcion Seleccionada opc 43 En funci n de la opci n del men que el usuario seleccione se crea un objeto de la clase de control que controla la acci n asociada a la opcion caso de uso seleccionada 6 5 2 Diagramas de secuencia de los casos de uso El gestor de jugadores presenta los siguientes diagramas de secuencia Diagrama de secuencia del caso de uso Ver Jugador Pantalla WerJugador Werjugador Control Jugador Mostrar pver l IntroducirNombre w_ nombre existe comprobar w_nombre Create w nombre Obtenerinfo informacion Mostrarinfo informacion Figura 6 10 Diagrama de secuencia del caso de uso Ver Jugador 44 Diagrama de secuencia del caso de uso BorrarJugador Pantalla Werjugador Control Jugador Verjugador l Mostrar pwer l l l l l IntroducirNombreiw_nombre l existe comprobar w_nombre Destroy w_ nombre Figura 6 11 Diagrama de secuencia del caso de uso Borrar Jugador 6 6 Sistemas expertos Esta secci n es una de las m s interesantes ya que aqu es donde se ver como implementar los sistemas expertos que compondr n la inteligencia artificial de FreeRummi En primer lugar son necesarias las f
84. icense published by that same organization Incorporate means to publish or republish a Document in whole or in part as part of another Docu ment An MMC is eligible for relicensing if it is licensed under this License and if all works that were first published under this License somewhere other than this MMC and subsequently incorporated in whole or in part into the MMC 1 had no cover texts or invariant sections and 2 were thus incorporated prior to November 1 2008 The operator of an MMC Site may republish an MMC contained in the site under CC BY SA on the same site at any time before August 1 2009 provided the MMC is eligible for relicensing ADDENDUM How to use this License for your documents 102 To use this License in a document you have written include a copy of the License in the document and put the following copyright and license notices just after the title page Copyright c YEAR YOUR NAME Permission is granted to copy distribute and or modify this document under the terms of the GNU Free Documentation License Version 1 3 or any later version published by the Free Software Foundation with no Invariant Sections no Front Cover Texts and no Back Cover Texts A copy of the license is included in the section entitled GNU Free Documentation License If you have Invariant Sections Front Cover Texts and Back Cover Texts replace the with Texts line with this with the Invariant Sections
85. ida que se vayan necesitando se ir n extrayendo El Mont n debe simular una bolsa o saco en el que se meten las fichas y se remueve para desordenarlas por tanto se puede decir que en el mont n las fichas estar n desordenadas An lisis del Soporte El Soporte es el lugar donde el usuario almacena sus fichas con las cuales tiene que formar combina ciones para deshacerse de ellas Al principio de una partida se insertar n 14 fichas en l y a medida que vaya formando combinaciones o pueda poner fichas en el tablero las ir extrayendo Si en un momento dado no hay fichas que poner se extraer una ficha del Mont n y se insertar en el soporte An lisis del Tablero El Tablero es el lugar donde los usuarios ponen sus combinaciones el sistema debe comprobar que las combinaciones son correctas en caso contrario las combinaciones volver n a su soporte Las fichas que est n colocadas en el tablero podr n ser manipuladas por todos los usuarios 23 5 2 2 Introducci n de gr ficos y sonidos Uno de los aspectos fundamentales de un videojuego es la interfaz gr fica La aplicaci n dispone de una interfaz agradable y sencilla pudiendo ser manejada completamente con el rat n Esto hace que la forma de seleccionar una opci n de realizar acciones durante la partida etc se haga con una sola pulsaci n Adem s los contenidos est n bien organizados y con posible retorno en los men s con la opci n volver Aunque la interfaz es sencilla
86. ido poder dejar las fichas en los sitios de los que proven an El resto de m todos de esta clase son auxiliares a estos dos y sirven para a adir y eliminar jugadores de la partida mostrar los elementos de la partida por pantalla y manejar los eventos que se produzcan 7 13 La clase Puntero Esta clase tiene el objetivo de controlar la posici n del puntero del rat n en todo momento Adem s permitir dar respuesta a las acciones producidas en el rat n sobre las diferentes partes de la pantalla Puntero operator p const Puntero amp Puntero actualizar void posX int posY int boton int Puntero Figura 7 13 Clase Puntero como se observa en el diagrama 7 13 los m todos y atributos de esta clase son muy simples por lo que no procede ninguna explicaci n 61 7 14 La clase Efecto Esta clase nos proporciona todo aquello que necesitamos para introducir sonidos de acci n en la aplica ci n efecto Mix Chunk Efecto ruta const char reproducir loops int 0 void Efecto Figura 7 14 Clase Efecto El funcionamiento es bastante simple mediante el constructor se carga el sonido en memoria y para reproducir dicho sonido est la funci n void reproducir int loops 0 cuyo par metro indica el n mero de veces que se reproducir el sonido siendo 0 una vez y 1 infinito 7 15 La clase M sica Esta clase nos permite dotar de este elemento al juego musica Mix Musi
87. ido const Fichas comprueban si los grupos del tablero son correctos o no El modo de funcionar de este m todo es el si guiente comienza a comprobar por la primera casilla del tablero si hay ficha o no cuando encuentra una 63 casilla con ficha la comprueba con la anterior y si es v lida sigue comprobando si no lo es devuelve false Dependiendo del tipo de grupo que sea har uso de uno o de los dos m todos auxiliares para las escaleras solo necesita comprobarFicha pero para los conjuntos necesita tanto uno como otro 7 18 La clase Video Esta clase es la encargada de gestionar la superficie sobre la que veremos la aplicaci n ancho int alto int profundidad int pantalla SDL Surface Video ancho int 1824 alto int 7 68 prof int 32 full bool false superficie SDL Surface actualizar void anchoSup int altosup int prof5up int Video Figura 7 18 Clase Video Como se observa en la figura 7 18 los m todos de esta clase son todos triviales explicar por tanto el constructor de la clase La aplicaci n est dise ada para ejecutarse en modo ventana con una reso luci n de 1024 x 768 x 32 o en formato pantalla completa de lo cual se encarga el ltimo par metro del constructor bool full false que por defecto es falso El resto de parametros indican las proporciones de la pantalla 7 19 Otros detalles de implementaci n Antes de finalizar el cap tulo voy a comentar la
88. incipio decid que la estructura de datos adecuada era un multiset para guardar las fichas ordenadas pero eso no me daba opciones a ordenar el soporte como quisiera Por eso cambi por un vector Una vez tenia el vector pod a intercambiar las fichas de posici n pero siempre intercambiando las posiciones de las fichas sin posi bilidad de poner las fichas en posiciones vac as Realic ese cambio y as se mantuvo un tiempo hasta que empec a implementar la clase TA en la cual necesitaba ordenar el soporte por colores o por n me ros as que una vez que hice los m todos void ordenarNumero y void ordenarColor pens que podr an ser de utilidad para el usuario tambi n 7 17 La clase Tablero Es la ltima clase b sica de FreeRummi y se encarga de manejar el tablero de la partida y comprobar que todos los grupos que hay en el son correctos sigExt Ficha tab 11 26 Ficha conjunto vector lt Ficha gt Tablero Tablero t const Tablero amp operator t const Tablero amp escogerPicha posX int posY int const Ficha insertarFicha f const Ficha amp posX int posY int bool mostrarlablero v Video void comprobar bool Tablero comprobarFicha f const Ficha bool colorRepetido f const Ficha bool Figura 7 17 Clase Tablero En esta clase nos encontramos el m todo bool comprobar el cual ayudado de los m todos auxi liares boo1 comprobarFicha const Ficha amp ybool colorRepet
89. ion of the Document under the conditions of sections 2 and 3 above provided that you release the Modified Version under precisely this License with the Modified Version filling the role of the Document thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it In addition you must do these things in the Modified Version A Use in the Title Page and on the covers 1f any a title distinct from that of the Document and from those of previous versions which should 1f there were any be listed in the History section of the Document You may use the same title as a previous version if the original publisher of that version gives permission B List on the Title Page as authors one or more persons or entities responsible for authorship of the modifications in the Modified Version together with at least five of the principal authors of the Document all of ts principal authors if t has fewer than five unless they release you from this requirement State on the Title page the name of the publisher of the Modified Version as the publisher Preserve all the copyright notices of the Document Add an appropriate copyright notice for your modifications adjacent to the other copyright notices aa gd qQ Include immediately after the copyright notices a license notice giving the public permission to use the Modified Version under the terms of this License in the form shown in the Adde
90. mmi ap ndice B se incluye m s informaci n a cerca de las reglas de juego ejemplos de manipulaci n estrategias a seguir etc Existe una versi n oficial que permite jugar online aRummikub 11 pero es una versi n limitada a unas pocas partidas al d a y que al ser privativa no tiene opciones de expansi n 2 2 Tecnolog as implicadas En esta secci n se presentan las herramientas que he utilizado para el desarrollo del proyecto Para el desarrollo del juego he utilizado C Lenguaje de programaci n orientado a objetos multiplataforma Todo el videojuego se ha realizado con este lenguaje libSDL Librer a gr fica libre basada en C C multiplataforma Es la base gr fica y de sonido de mi videojuego Es libre y est compuesta por los subsistemas de v deo sonido eventos red etc emacs Editor de textos libre Es el editor utilizado para la codificaci n de todo el juego as como para la memoria Adobe Photoshop CS2 Herramienta de dise o grafico de la marca Adobe La he utilizado para la realizaci n de todos los elementos gr ficos del juego GIMP Es una herramienta dise o gr fico completa simple y libre La he utilizado complementa riamente a Photoshop como herramienta para crear los elementos gr ficos del juego Por otro lado he utilizado las siguientes herramientas libres para distintos fines ATEX Sistema de composici n de textos Herramienta usada para la creaci n de la mem
91. n observarse las distintas opciones que presenta el men Jugar 87 IS A a RB ie An NES ER Figura B 20 Menu Jugar de FreeRummi Simple Juega una partida a FreeRummi contra el ordenador En este tipo de partida no se tiene en cuenta la puntuaci n final que se obtenga Estas partidas pueden servir de entrenamiento para adquirir experiencia Concurso Participa en un tornero de FreeRummi contra tus amigos En este tipo de partida estar compuesto por tantas rondas como jugadores se is y se tendr en cuenta la puntuaci n B 3 1 Pantalla de selecci n de jugadores La pantalla de selecci n de jugadores est dividida en dos partes como puede observarse en la figura B 21 88 Numero de jugadores Nombre del jugador 118 car max DANIEL Pulse confirmar para continuar po et PAS Rea T SA 2 w 1272 GEES i N E gt adan Oa ex Bi Y K TEAR Errem ER MAK YA Maat UZ AN t Figura B 21 Pantalla de selecci n de Jugadores 1 Selecci n del n mero de jugadores Aqu se escoger el n mero de participantes que jugar n en la partida Este n mero estar comprendido entre dos y cuatro Numerodejugadores lt 3 gt Pulse confirmar para continuar Figura B 22 Selecci n del n mero de jugadores 2 Selecci n de jugadores Aqu se ir n introduciendo los nombres de los jugadores que participa r n Recuerda que el nombre solo puede tener ocho caracteres
92. nadas que se le pasan S se posicionan En principio inclu a las coordenadas dentro del c digo pero ten a el inconve niente de que cada vez que cambiaba algo de sitio tenia que buscarlo por el c digo as que inclu el fichero constantes h con todas las coordenadas de todos los elementos gr ficos Se puede jugar en pantalla completa S se puede El juego presenta respuesta a los eventos tanto en pantalla completa como en modo ventana Capta el sistema correctamente los eventos producidos por los perif ricos de entrada S los capta tanto los de teclado como los de rat n Para ello se realizaron peque os programas de prueba con cada uno de los perif ricos y luego se insertaron en el programa creando as la clase Puntero En este incremento las fichas no se pueden arrastrar la forma de moverlas es pinchando en la ficha que se desee mover y luego pinchando en el destino que se quiere para la ficha si es correcto el destino la ficha se mueve si no se queda donde estaba Desaparecen elementos gr ficos durante la ejecuci n de una partida No desaparecen En principio casualmente desaparec an algunas im genes de fichas y luego vol v an a aparecer pero se encontr el error y se corrigi 67 9 4 El sonido funciona correctamente S funciona Tanto los efectos como la banda sonora funcionan correctamente Los efectos en principio se solapaban unos a los otros no dejando sonar dos sonidos a la
93. ncluir el juego en tecnolog as m viles debido al gran impacto que est n teniendo las aplica ciones en tel fonos m viles ser a una buena opci n que el juego estuviese operativo para estas plataformas incluyendo tambi n en esta versi n el juego en red 4 Mejorar los elementos gr ficos ya que no soy un experto en dise o gr fico la interfaz gr fica del juego aunque es admisible no deja de ser mejorable 76 Ap ndice A Manual de instalaci n A 1 Obtener FreeRummi juego de fichas numeradas Lo primero que debemos hacer es obtener una versi n de FreeRummi Lo podemos encontrar en la p gina del proyecto en la forja de rediris 14 o usando la herramienta Sub version escribiendo en la consola el siguiente comando svn checkout https forja rediris es svn freerummi A 2 Instalaci n Para la instalaci n necesitaremos tener instaladas unas librer as adicionales Si no tenemos instaladas las librer as SDL tendremos que instalarlas En este caso basta con instalar la librer a y las librer as adicionales SDL_mixer SDL_image y SDL_ttf mediante el gestor de paquetes o la l nea de comandos En un entorno debian los comandos a ejecutar ser an sudo atp get install libsdll 2debian sudo atp get install libsdl ttf2 0 0 dev sudo atp get install libsdl imagel 2 dev sudo atp get install libsdl mixerl 2 dev Una vez instaladas nos dirigimos al directorio freerummi cd freerummi Y a continuaci n compilamos con m
94. ndaciones de G J Myers 8 para la realizaci n de las pruebas son las siguientes I 8 2 Cada caso de prueba debe especificar el resultado de salida esperado Este resultado se compara con el obtenido en la prueba y las diferencias entre ambos se consideran s ntomas de un posible defecto en el software El programador debe evitar probar sus propios programas Se debe analizar con detalle el resultado de cada prueba para poder detectar posibles defectos Al definir los casos de prueba se deben incluir tanto datos de entrada v lidos y esperados como inv lidos e inesperados Las pruebas deben centrarse en dos objetivos probar si el software no hace lo que debe y probar s el software hace lo que no debe Los casos de prueba deben dise arse y documentarse detalladamente No deben hacerse planes de prueba suponiendo que no hay defectos en los programas Hay que asumir que siempre hay defectos y hay que detectarlos Donde hay un defecto hay otros es muy probable que se descubran nuevos defectos donde ya se ha descubierto alguno Las pruebas son una tarea tanto o m s creativa que el desarrollo de software Incremento 2 Organizaci n de las partes b sicas del juego Se crean correctamente los objetos de las clases b sicas Ficha Monton Soporte y Tablero S se crean Se fueron probando una a una las clases con los distintos par metros que iban nece sitando La clase mont n en un principio
95. ndum below G Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document s license notice 99 H Include an unaltered copy of this License I Preserve the section Entitled History Preserve its Title and add to 1t an item stating at least the title year new authors and publisher of the Modified Version as given on the Title Page If there 1s no section Entitled History in the Document create one stating the title year authors and publisher of the Document as given on its Title Page then add an item describing the Modified Version as stated in the previous sentence J Preserve the network location 1f any given in the Document for public access to a Transparent copy of the Document and likewise the network locations given in the Document for previous versions 1t was based on These may be placed in the History section You may omit a network location for a work that was published at least four years before the Document itself or 1f the original publisher of the version it refers to gives permission K For any section Entitled Acknowledgements or Dedications Preserve the Title of the section and preserve in the section all the substance and tone of each of the contributor acknowledgements and or dedications given therein L Preserve all the Invar ant Sections of the Document unaltered in their text and in their titles Section numbers o
96. no creaba bien todas las fichas y era debido a la funci n de desordenaci n que no trabajaba correctamente por lo que una vez detectado el fallo se corrigi 65 Funcionan correctamente los m todos modificadores de las clases S funcionan Se probaron tanto en casos aislados con datos de entrada v lidos e inv lidos como en partidas completas Devuelven los observadores los datos correctamente S los devuelven Como en el caso anterior tambi n se probaron en casos aislados y en partidas completas Se inicializan correctamente los soportes S se inicializan Cada jugador tiene catorce fichas al iniciar la partida Se comprueba que no hay fichas repetidas ni m s fichas de la cuenta Se comprueba correctamente el tablero S Es uno de los casos de prueba m s estudiados ya que de l depende el xito del juego En principio se fueron probando casos aislados tanto buenos como malos y se observaba que siempre devolv a lo correcto M s tarde se prob en una partida completa con casos buenos y malos con varios conjuntos y siempre devolv a lo correcto Se pierden fichas o alg n otro elemento durante la ejecuci n de una partida No se pierden Es uno de los defectos que m s a menudo aparec an cuando se inclu an nuevas funcionalidades al robar la ficha no iba al soporte deseado al insertar en el tablero la ficha des aparec a al mover fichas dentro del soporte tambi n desaparec an etc Pero se d
97. nos encontramos con los siguientes m todos modificarComodin const int n const Color c Este m todo es utilizado para modificar los valores internos de una ficha que es comod n bool fichaNula const Este m todo devuelve si una ficha es nula o no Una ficha ser nula cuando su valor num rico sea 0 La funci n de la ficha nula es servir de control en el soporte o el tablero para saber donde hay y donde no hay ficha insertada Adem s de estos m todos la clase ficha posee dos m todos p blicos para su representaci n gr fica y uno m s privado para obtener la ruta donde se encuentra el archivo de imagen asociado a cada objeto de la clase Ficha 51 void mostrarFicha Video xv M todo para mostrar la ficha en la superficie que con trola el objeto de la clase v deo void posicionar int x int y M todo para modificar la posici n en la que apare cer la ficha en la superficie de v deo Por ltimo la clase ficha posee tambi n varios operadores l gicos igualdad desigualdad y menor que los cuales son utilizados por otras clases para tener un orden en las fichas 7 3 La clase Fuente Esta clase nos permite dibujar en una superficie SDL cualquiera una palabra o un texto que queramos mostrar a partir de una fuente TTF o de una rejilla de letras tipogr ficas fuente TTF Font texto SDL_Surface color SDL Color posicion SDL_Rect Fuente ruta const char tam int negrita void cursiva
98. ntero An lisis de la clase Cronometro Implementaci n de la clase Cronometro Prueba de la clase Cronometro An lisis de la clase Jugador Implementaci n de la clase Jugador Prueba de la clase Jugador Partida Finalizada nov 24 now 24 now 24 now 24 nov 24 now 24 ene 5 nov 24 dic 8 dic 10 dic 13 dic 14 dic 16 dic 20 dic 22 ene 3 ene 10 ene 14 feb 15 dic 7 dic 14 dic 14 dic 21 ene 4 feb 15 dic 7 dic 9 dic 10 dic 13 dic 15 dic 17 dic 21 dic 31 ene 7 ene 14 ene 14 Figura 3 5 Incremento 4 Dise o e implementaci n de la clase Partida 5 1 5 2 5 3 5 4 6 1 6 2 6 3 Dise o e implementaci n de los men s Dise o de imagenes de Menu An lisis de la clase Menu Implementaci n de la clase Menu Prueba de la clase Menu Figura 3 6 Incremento 3 Dise o e implementaci n de men s Dise o e implementaci n del gestor de partida An lisis de la clase GestorPartida Implementaci n de la clase GestorPartida Prueba de la GestorPartida feb 16 feb 16 feb 16 feb 23 feb 28 mar 2 mar 2 mar 14 mar 18 mar 1 mar 1 feb 22 feb 25 mar 1 mar 21 mar 11 mar 17 mar 21 Figura 3 7 Incremento 6 Dise o e implementaci n del gestor de partidas 14 7 Dise o e implementaci n del gestor de jugadores mar 22 abr 4 7 1 An lisis de la clase Gestorjugadores mar22 mar28 7 2 Implementaci n de la clase Gestorjugadores mar29 mar3l 73 Prueba de la clase Gestorjugadores abr 1 abr
99. ntra los que se puede jugar en la partida simple Este incremento tambi n me ocup bastante tiempo debido a la gran cantidad de pruebas que tuve que realizar con cada una de las funciones del motor 3 2 Diagrama de Gantt En primer lugar he incluido los incrementos y las tareas de cada uno WBS Nombre Inicio Fin 1 Requisitos b sicos del sistema jul 1 ago 4 1 1 Primera planificaci n global del proyecto jul 1 jul 14 1 2 Estudio sobre el juego y sus reglas jul 15 jul 21 1 3 Toma de requisitos jul 22 jul 28 1 4 Elecci n del lenguaje y las herramientas a utilizar jul 29 ago 4 Figura 3 2 Incremento 1 Selecci n de herramientas gt CLIPS es una herramienta que provee un entorno de desarrollo para la producci n y ejecuci n de sistemas expertos Fue creado a partir de 1984 en el Lyndon B Johnson Space Center de la NASA 12 2 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 2 10 2 11 2 12 2 13 2 14 Organizaci n de las partes b sicas del juego Estudio de las posibles clases base An lisis de la clase Ficha Implementaci n de la clase Ficha Prueba de la clase Ficha An lisis de la clase Monton Implementaci n de la clase Monton Prueba de la clase Monton An lisis de la clase Soporte Implementaci n de la clase Soporte Prueba de la clase Soporte An lisis de la clase Tablero Implementaci n de la clase Tablero Prueba de la clase Tablero Clases Base terminadas ago 5 ago 5 ago 19 ago 23 ago 25 ago 27
100. ntuaci n y las fichas restantes 6 3 4 Clase Tablero El tablero ser una matriz de fichas La clase dar la opci n de construir y copiar un soporte de insertar fichas en l as como comprobar que las combinaciones que se pongan son correctas 39 6 4 La clase Partida 6 4 1 Diagramas de secuencia de los casos de uso Diagrama de secuencia del caso de uso CargarJugador Pantalla Cargarjugador Cargarjugador Control Jugador Mostrar pCargar IntroducirNombre w nombre existe comprobar w_nombre Create w_ nombre A adirPuntuaciones Figura 6 2 Diagrama de secuencia del caso de uso Cargar Jugador Diagrama de secuencia del caso de uso Jugar Pantalla Jugar Jugador Control jugar Mostrar piniciar numjugadoresinj Figura 6 3 Diagrama de secuencia del caso de uso Jugar 40 P Partida 6 5 Los men s el gestor de partida y el gestor de jugadores 6 5 1 Diagramas de interacci n Diagrama de interacci n del men principal Al entrar en la aplicaci n se muestra el men principal A a 4 VER z A REES coe GES TS y Ye CERA En 3 t AS Ss FRECHEN x Figura 6 4 Men principal de FreeRummi A continuaci n se expone el diagrama de interacci n Sistema Control Pantalla Menu Mostrar pMenu opc 1 Create Jugar Opcion seleccionada opc Control 2 Create
101. o copy modify sublicense or distribute 1t 1s void and will automatically terminate your rights under this License However 1f you cease all violation of this License then your license from a particular copyright holder 1s reinstated a provisionally unless and until the copyright holder explicitly and finally terminates your license and b permanently 1f the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation Moreover your license from a particular copyright holder s reinstated permanently 1f the copyright holder notifies you of the violation by some reasonable means this s the first time you have received notice of violation of this License for any work from that copyright holder and you cure the violation prior to 30 days after your receipt of the notice Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License If your rights have been terminated and not permanently reinstated receipt of a copy of some or all of the same material does not give you any rights to use it 10 FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new revised versions of the GNU Free Documentation License from time to time Such new versions will be similar in spirit to the present version but may differ in detail to address new problems or concerns See http www gnu or
102. o se roba una ficha mientras que en el inv lido se roban tres Por ltimo se vuelve deja todo como estaba al comienzo del turno e Se puls comprobar En el caso v lido se actualizan los valores de las variables mientras que en el caso inv lido se roban tres fichas Si se puls comprobar y no hab a puesto nada se roba una ficha Se puede salir de la partida en cualquier momento S Se puede salir de la partida siempre que tenga el control el jugador pulsando la tecla ESC en las pantallas de cambio de turno no se puede Se muestra la pantalla de confirmaci n de salida y funciona correctamente S se muestra y funciona Se actualizan las puntuaciones de los jugadores una vez finalizada la partida S se actualizan Dependiendo del tipo de partida que sea lo har n o no si es concurso se actuali zaran mientras que si es partida simple no Se muestra la pantalla de ganador o perdedor S se muestra Consume muchos recursos de CPU la partida No Durante la partida el trabajo de la CPU ronda el 5 Finaliza correctamente la ejecuci n de la partida con todas las funcionalidades S Tras la ejecuci n de la partida el programa finaliza correctamente 70 8 5 8 6 Incremento 5 Diseno e implementaci n de los men s Se visualizan correctamente los men s S Los men s est n correctamente posicionados Adem s al pasar el rat n por encima de las op ciones de los men s est
103. oria Planner Herramienta para el desarrollo de diagramas de Gantt y de tareas Doxygen Herramienta para generar la documentaci n del c digo del juego Dia Programa para generar diagramas Utilizado en el an lisis y dise o del proyecto Cap tulo 3 Planificaci n Dado que se ha partido de cero en la realizaci n de este proyecto y que en principio no se conocen todas las funcionalidades que tendr el sistema lo m s adecuado es utilizar el modelo incremental 3 1 Incrementos Se comenzar analizando los requisitos b sicos del sistema y a partir de ah se empezar a desarrollar el programa por fases evaluando en cada incremento que nuevas funcionalidades son necesarias para completar el juego De esta forma no se tratar como un todo si no que ser n distintas piezas que se van encajando En los siguientes apartados se explican los principales incrementos que se han llevado a cabo para la realizaci n de FreeRummi 3 1 1 Incremento 1 Selecci n de herramientas En el primer incremento se ha estudiado el tiempo que se estimar necesario para la realizaci n del proyecto as como las herramientas que ser n necesarias para el desarrollo entorno de programaci n lenguaje im genes sonidos He establecido un horario de trabajo de 10 a 14 y de 17 a 20 de lunes a viernes La forma de trabajar ha sido realizando el an lisis y el dise o de lo que iba necesitando y a continuaci n implement ndolo de form
104. partida de entrenamiento para un solo jugador contra el ordenador Concurso Se trata de una serie de partidas entre jugadores Volver Vuelve al men principal Finalmente a ad otra opci n m s al men principal la opci n Jugadores la cual permite la gesti n de los jugadores Esta opci n desemboca en otro submen con las opciones Ver En este apartado se observan las estad sticas de los jugadores Borrar En este apartado se pueden borrar jugadores del sistema Volver Vuelve al men principal A modo de resumen el esquema de men s y submen s de FreeRummi es el siguiente Jugar e Simple e Concurso e Volver Jugadores e Ver e Borrar e Volver Salir Este incremento no fue muy costoso debido a que una vez que tuve el primer men los dem s se hac an de forma similar por lo que no invert mucho tiempo ni esfuerzo 3 1 6 Incremento 6 Dise o e implementaci n del gestor de partida En este incremento se a adieron los apartados Simple y Concurso del men Jugar por medio de la clase GestorPartida Se incluy la opci n de elegir el n mero de jugadores a participar en la partida as como la creaci n carga de los mismos 3 1 7 Incremento 7 Dise o e implementaci n del gestor de jugadores En este incremento se a adieron los apartados Ver y Borrar del men Jugadores por medio de la clase GestorJugadores Se pueden crear tantos jugadores como el usuario desee y de cada jugador se
105. pero a medida que se a aden com binaciones sobre la mesa las manipulaciones que se pueden hacer son cada vez mayores Al principio de una partida a veces es conveniente no colocar todas las fichas posibles sobre la mesa y dejar a los otros jugadores que abran el juego lo que permite tener m s oportunidades de modificar las combinaciones existentes En ocasiones es til guardar la cuarta ficha de un conjunto o escalera y colocar nicamente tres de forma que en el siguiente turno pueda colocarse una ficha en lugar de cogerla del mont n Tambi n a veces es interesante no jugar el comod n y tenerlo en reserva pero atenci n recuerda que vale 30 puntos si se queda en tu soporte al final de la partida 86 B 2 El men principal La imagen que puede observarse en la figura B 19 muestra el men principal de FreeRummi dy ps PELE 49 feet Pore E ae RAR x LR RARA PONS EN 2 OS j red Ez I E lt oa gt PFR RM X lt da tz Aa x Say oom k Ss y x 54 y 257 YAY Ae hs eee avi El men principal contiene las opciones para acceder a las distintas funcionalidades del juego Jugar Podr s jugar una partida simple contra la m quina o participar en un concurso contra otros amigos Jugadores Podr s ver las estad sticas de los jugadores puntuaciones porcentajes rangos as como eliminarlos B 3 El men Jugar En la figura B 20 puede
106. que no deb a Los sonidos se reproducen correctamente S se reproducen Teniendo adem s las posibilidad de silenciarlos todos Los sonidos se reprodu cen cuando se produce su evento asociado La banda sonora una vez terminada vuelve a iniciarse sin saltos de manera fluida Se muestran los textos correctamente S se muestran Se muestran las estad sticas de los jugadores posicionadas en su sitio as como los n meros del cron metro y el mensaje informando del siguiente jugador en el cambio de turno Se puede ordenar el soporte al gusto del jugador S se puede Se probaron distintas formas de hacerlo y tras conseguirlo se prob que no hubiese problemas de perdidas de fichas ni problemas al insertar ni al extraer Se roba al hacer clic sobre el mont n de fichas S Tambi n se roba pulsando la tecla r 69 Se comprueba y se pasa turno al hacer clic sobre el bot n comprobar y pasar S Tambi n es posible pasar turno pulsando la tecla s Se realizan correctamente las comprobaciones y se hace lo que hay que hacer para cada caso S se comprueba correctamente y se hace lo que hay que hacer Se ha probado para cada caso con un tablero v lido y otro inv lido repetidas veces Los caso son e Tiempo agotado En el caso v lido se roba una ficha mientras que en el caso inv lido se roban tres Por ltimo se vuelve deja todo como estaba al comienzo del turno e Se puls robar En el caso v lid
107. r the equivalent are not considered part of the section titles M Delete any section Entitled Endorsements Such a section may not be included in the Modified Version N Do not retitle any existing section to be Entitled Endorsements or to conflict in title with any Invariant Section O Preserve any Warranty Disclaimers If the Modified Version includes new front matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document you may at your option designate some or all of these sections as invariant To do this add their titles to the list of Invariant Sections in the Modified Version s license notice These titles must be distinct from any other section titles You may add a section Entitled Endorsements provided it contains nothing but endorsements of your Modified Version by various parties for example statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard You may add a passage of up to five words as a Front Cover Text and a passage of up to 25 words as a Back Cover Text to the end of the list of Cover Texts in the Modified Version Only one passage of Front Cover Text and one of Back Cover Text may be added by or through arrangements made by any one entity If the Document already includes a cover text for the same cover previously added by you or by arrangement made by the same entity you a
108. ratos de operaciones Borrar Operaci n ElegirJugador nombre Responsabilidades Borra a un jugador del sistema 33 Referencias cruzadas Caso de uso Editar Jugadores Precondiciones Debe existir un fichero con el nombre de todos los jugadores del sistema y debe existir en l una entrada que coincida con nombre Postcondiciones Se borr el fichero con la informaci n referente al jugador cuyo atributo nombre coincid a con nombre Diagrama de secuencia Jugar Usuario Sistema Intraducifjugadores numjugadores Cargarugadores Figura 5 9 Diagrama de secuencia Jugar Partida Contratos de operaciones Jugar partida Operacion IntroducirJugadores numJugadores Responsabilidades Confirmar el numero de jugadores que participaran en la partida Precondiciones Debe ser un numero comprendido entre dos y cuatro Postcondiciones m Se cre una instancia P de Partida Se asign numJugadores a P nomJugadores Operaci n CargarJugadores Responsabilidades Carga en la partida tantos jugadores como se haya indicado en la operaci n anterior Precondiciones Postcondiciones Se crearon tantas instancias Jx de Jugador como P numJugadores haya Se asignaron los jugadores elegidos a Jx Operaci n Jugar Responsabilidades Jugar una partida a FreeRummi Precondiciones Los jugadores deben estar correctamente cargados Postcondiciones Se llev a cabo una partida a FreeRummi Se asignaron
109. re acting on behalf of you may not add another but you may replace the old one on explicit permission from the previous publisher that added the old one The author s and publisher s of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version 5 COMBINING DOCUMENTS You may combine the Document with other documents released under this License under the terms defined in section 4 above for modified versions provided that you include in the combination all of the Invariant Sections of all of the original documents unmodified and list them all as Invariant Sections of your combined work in its license notice and that you preserve all their Warranty Disclaimers 100 The combined work need only contain one copy of this License and multiple identical Invariant Sections may be replaced with a single copy If there are multiple Invariant Sections with the same name but different contents make the title of each such section unique by adding at the end of it in parentheses the name of the original author or publisher of that section 1f known or else a unique number Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work In the combination you must combine any sections Entitled History n the var ous original documents forming one section Entitled History likewise combine
110. res vector lt string gt GestorPartida partidaSimple v Video void concurso w Video void GestorPartidal seleccionJugadores v Video void seleccionJugadorSimple vw Video void actualizarPantalla v Video jugActual unsignec zona int nom string void caracter evento SDL_ Event char reservado nombre string bool desordenarJugadores void incrementarPosicion void pantallaRonda r const unsigned v Video void Figura 7 5 Clase Gestor de partida En el constructor GestorPartida se inicializan y posicionan las im genes que se ver n por pantalla as como las fuentes que mostrar n los textos El m todo void partidaSimple Video xv tiene el siguiente esquema 1 Inicia la banda sonora 2 Selecciona los jugadores con el m todo void seleccionJugadorSimple Video V 3 Crea la partida y a ade los Jugadores seleccionados Se Juega la partida 5 Se destruye la partida El m todo void concurso Video xv tiene el siguiente esquema Inicia la banda sonora Selecciona los jugadores con el m todo void seleccionJugadores Video x v Desordena el vector que contiene los jugadores Crea la partida y a ade los jugadores seleccionados Se juegan tantas partidas como jugadores haya A A R B Se destruye la partida Los m todos para seleccionar los jugadores funcionan igual los dos con la nica diferencia de que en void seleccionJugadorSimple solo se escoge
111. resi n pasa a segundos el tiempo transcurrido y se lo resta al momento en el que se inici el cronometro obteniendo as el tiempo que ha pasado 7 2 La clase Ficha Esta es una de las clases base del juego la esencial en la partida FreeRummi est compuesto por un total de 106 fichas 104 numeradas y 2 comodines Las fichas numeradas lo est n del 1 al 13 en cuatro colores verde azul rojo y negro teniendo 2 fichas del mismo n mero y color fComodin bool num unsigned col Color imagen Imagen Ficha comodin bool false n const unsigned 1 c Color VERDE Ficha f const Ficha amp operator const Ficha amp Fichas modificarComodin n const int c const Color bo numero const unsigned color const Color comodin bool fichaNula bool posicionar x int y int void mostrarFicha w Video void Ficha obtenerRuta const char Figura 7 2 Clase Ficha Los atributos de esta clase son bastante simples num para almacenar el n mero de la ficha y col para almacenar el color Para los colores he definido la siguiente enumeraci n enum Color VERDE 0 AZUL ROJO NEGRO Con el atributo Comodi n sabremos si una determinada ficha es un comod n o no Por ltimo imagen es un puntero a un objeto de la clase Imagen necesario para la representaci n gr fica de la ficha Pasando ahora al tema de los m todos adem s de los constructores y las funciones observadoras trivia les
112. ro y pasar el turno al siguiente jugador y ordenar por n meros su soporte respecti vamente Grupos de fichas Son fichas colocadas en el tablero formando una escalera o un conjunto Estos grupos pueden ser manipulados por cualquier jugador Sonido ON OFF Con este bot n se puede silenciar el juego o hacerlo volver a sonar Fichas restantes Son las fichas que quedan en el soporte de un jugador de las cuales deber deshacerse antes que cualquier otro jugador si quiere ganar El men Jugadores Las opciones disponibles en este men pueden verse en la figura B 25 90 u Sr RS Te I en dn x v2 ke ENE ye x he ER IR x Figura B 25 Men Jugadores de FreeRummi EN u x six Ver Observa tus estad sticas y las de los dem s Jugadores de FreeRummi Borrar Elimina un jugador que ya no interese del sistema B 4 1 Pantalla Ver La pantalla Ver presenta el aspecto de la figura B 26 lt gt Selecciona jugador Jugador DANIEL Puntuacion general 02 Partidas ganadas 3 Partidas perdidas 0 Partidas abandonadas 1 Porcentaje ganadas 75 Porcentaje perdidas 0 Porcentaje abandonadas 29 AARS Rango NOVEL URE Figura B 26 Pantalla Ver de FreeRummi Esta pantalla presenta las estad sticas de los jugadores las cuales son 91 1 Puntuaci n general 2 Partidas ganadas 3 Partidas perdidas 4 Partidas abandonadas 5 Porcentaje de partidas
113. s nombre const string puntuacionPartida const int partidasGanadas const int partidasPerdidas const int partidasAbandonadas const int porGanadas const double porPerdidas const double porAbandonadas const double rangoJugador const Rango jRobot bool Figura 7 9 Clase Jugador Repasar los m todos m s interesantes de esta clase que son los relacionados con el almacenamiento en memoria secundaria El constructor Jugador const stringg nombre bool robt false sigue el siguiente esquema 1 Si el jugador es un robot simplemente inicializa las variables con valor nulo ya que de los robots no se guardar la informaci n 57 2 En caso contrario tras cargar en memoria los nombres de los jugadores del archivo free rummi guardado gestorJugadores sav se pueden dar dos casos que el nombre introducido como primer par metro exista en el sistema y que no exista a Si no existe se crea un fichero en memoria secundaria con el formato nombre sav y se escriben en el su nombre y su puntuaci n general partidas ganadas perdidas y abandonadas que logicamente ser n 0 A continuaci n se inicializan todos sus atributos b S existe se abre el fichero nombre sav y se inicializan sus atributos con los datos que hay en dicho fichero Como se puede observar el constructor sirve tanto para crear como para cargar jugadores El m todo void guardarJugador sigue el siguiente esquema
114. s del sistema para ello he creado una lista lo m s detallada y completa posible donde se re nan todos los requisitos que debe cumplir el software 4 2 Requisitos de interfaces externas En este apartado se van a describir los requisitos de conexi n entre el software y el hardware as como la interfaz del usuario De la interfaz entre el software y el hardware se encarga la librer a SDL Al ser un sistema preestableci do no tendr que analizarlo ni dise arlo solo har uso de l Pasamos a definir el interfaz entre el videojuego y el usuario Todas las ventanas de la aplicaci n podr n ser mostradas a pantalla completa o en formato de ventana con una resoluci n de 1024x768 p xeles A continuaci n se definen las distintas ventanas con las que el usuario se puede encontrar Ventana Men principal Esta ventana mostrar el men principal de FreeRummi y mostrar el nombre de la aplicaci n as como las opciones para Jugar para editar los Jugadores y para Salir El men ser completamente manejado por el rat n y bastar un clic encima de una opci n para acceder a ella Por ltimo habr una opci n para silenciar el juego que tambi n podr ser manejada con el rat n Ventana de Men Jugar Esta ventana mostrar el submen Jugar y mostrar las opciones para jugar una partida simple jugar un Concurso y para Volver al men principal El men ser UML es un lenguaje de especificaci n para definir un sistema
115. s disclaiming warranties any other implication that these Warranty Disclai mers may have is void and has no effect on the meaning of this License 2 VERBATIM COPYING You may copy and distribute the Document in any medium either commercially or noncommercially provided that this License the copyright notices and the license notice saying this License applies to the Document are reproduced in all copies and that you add no other conditions whatsoever to those of this License You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute However you may accept compensation in exchange for copies If you distribute a large enough number of copies you must also follow the conditions in section 3 You may also lend copies under the same conditions stated above and you may publicly display copies 3 COPYING IN QUANTITY 98 If you publish printed copies or copies in media that commonly have printed covers of the Document numbering more than 100 and the Document s license notice requires Cover Texts you must enclose the copies in covers that carry clearly and leg bly all these Cover Texts Front Cover Texts on the front cover and Back Cover Texts on the back cover Both covers must also clearly and leg bly identify you as the publisher of these copies The front cover must present the full title with all words of the title equally prominent and visible You may add other
116. siguiente esquema 1 En primer lugar inicializa las variables auxiliares 2 A continuaci n entra en un bucle de captura de eventos en el que la condici n para salir es que se agote el tiempo se decida salir se pulse el bot n robar o el bot n comprobar 3 A partir de este punto se pueden dar tres casos a Se acab el tiempo se comprueba que el tablero est bien y el jugador roba una ficha Si el tablero no esa bien el jugador roba tres fichas b El jugador puls robar se comprueba que el tablero est bien y el jugador roba una ficha S1 el tablero no esa bien el jugador roba tres fichas c El jugador puls comprobar se comprueba que el tablero est bien Si el tablero no esa bien el jugador roba tres fichas 4 Si el jugador puls salir se devuelve 1 lo cual indica que el jugador abandona la partida 5 En caso contrario se comprueba si el jugador tiene el soporte vac o devuelve 1 o si aun no lo ha conseguido vaciar devuelve 0 Para poder volver al estado anterior y no perder nunca el tablero v lido y los soportes de los juga dores he hecho uso de tableros y soportes copia con los cuales si el jugador realizaba una acci n indebida siempre se puede volver al estado anterior En cuanto al manejo de los eventos del rat n he utilizado tres objetos de la clase Puntero con lo cual siempre tenia la informaci n de donde se puls donde se solt y que movimiento se produjo por si el jugador realizaba algo indeb
117. siones e impresiones que he tenido durante la realizaci n de mi proyecto final de carrera Comenzar diciendo que el proyecto me ha ocupado m s tiempo del que esperaba en un principio Me encontr con muchos problemas y muchas dudas las cuales me tuvieron bloqueado en distintas fases del proyecto A n as estoy satisfecho con el trabajo realizado Podemos decir que el proyecto goza de una buena calidad intentando siempre cumplir los objetivos pla nificados obteniendo un software sencillo y f cil de utilizar Personalmente pienso que es algo esencial en un programa de este tipo el cual la gente usar para divertirse en sus ratos libres Un punto a favor es el poder manejar todo el juego con el rat n ya que es un sistema m s c modo para navegar que el teclado En cuanto a las cosas que he aprendido evidentemente he aprendido a hacer un proyecto m s o menos complejo crear calendarios estudiar posibles ramas de desarrollo buscar las herramientas adecuadas realizar trabajos de ingenier a del software documentar c digo organizarlo etc Durante los a os de la carrera he realizado diversas pr cticas y he realizado trabajos m s o menos complejos pero nada similar a lo que significa realizar el Proyecto Final de Carrera Me hubiese gustado tener mayor conocimiento en el rea de ingenier a de software y as hubiese ahorrado bastante tiempo solucionando problemas de planificaci n y dise o A pesar de todo pienso que estoy en con
118. stad sticas o borrar a un jugador Escenario principal 1 El Usuario desea gestionar alg n jugador 28 2 El Sistema muestra un men con las opciones de gesti n 3 El Usuario elige una opci n 4 El Sistema realiza la acci n seg n la opci n Escenarios alternativos a En cualquier momento el usuario puede cancelar el proceso El Sistema cierra el men y vuelve al men principal 3a El Usuario decide ver las estad sticas de un jugador 3al include Ver 3b El Usuario decide borrar a un jugador del sistema 3b1 include Borrar 5 4 Modelo conceptual de datos Este apartado del an lisis sirve para especificar los requisitos del sistema y las relaciones est ticas que existen entre ellos Para este fin se utiliza como herramienta los diagramas de clase En estos diagramas se representan las clases de objetos las asociaciones entre dichas clases los atributos que componen las clases y las relaciones de integridad 5 4 1 Descripci n diagramas de clases conceptuales En este apartado se presenta una lista de las clases que formar n parte de mi sistema y una peque a descripci n de qu hace cada una Cronometro Clase para el manejo y funcionamiento del cron metro del juego Ficha Clase para el manejo y funcionamiento de las fichas del juego Fuente Clase para gestionar el trabajo con la librer a trf GestorJugadores Clase para gestionar los men s referentes a los jugadores GestorPartida
119. tracci n de wikipedia C es un lenguaje de programaci n dise ado a mediados de los a os 1980 por Bjarne Stroustrup La intenci n de su creaci n fue el extender al exitoso lenguaje de programaci n C con mecanismos que permitan la manipulaci n de objetos En ese sentido desde el punto de vista de los lenguajes orientados a objetos el C es un lenguaje h brido Posteriormente se a adieron facilidades de programaci n gen rica que se sum a los otros dos paradig mas que ya estaban admitidos programaci n estructurada y la programaci n orientada a objetos Por esto se suele decir que el C es un lenguaje de programaci n multiparadigma El motivo personal por el que he elegido este lenguaje es por el conocimiento que poseo del mismo debido a que muchas de las asignaturas que forman parte de mi carrera lo usan En cuanto a libSDL o Simple DirectMedia Layer SDL es un conjunto de bibliotecas desarrolladas con el lenguaje C que proporcionan funciones b sicas para realizar operaciones de dibujado 2D gesti n de efectos de sonido y m sica y carga y gesti n de im genes Adem s se han desarrollado una serie de bibliotecas adicionales que complementan las funcionalidades y capacidades de la biblioteca base SDL Mixer Extiende las capacidades de SDL para la gesti n y uso de sonido y m sica en apli caciones y juegos Soporta formatos de sonido como Wave MP3 y OGG y formatos de m sica como MOD S3M IT y XM SDL Image
120. unciones que permitan hacer combinaciones de escaleras y de con juntos o que permitan insertar en el tablero fichas sueltas que sean v lidas con las ya colocadas en el tablero Una vez tengamos esas funciones Podremos realizar sistemas expertos como los que he creado de ejemplo A continuaci n se muestran unos diagramas de flujo en los que se puede observar como he dise ado los algoritmos de sistemas expertos Funcionamiento del primer sistema experto Si est abierto intenta poner fichas sueltas en caso de no conseguirlo intenta poner conjuntos y en caso de no conseguirlo intenta poner escaleras Si no est abierto intenta poner conjuntos y si estos no suman m s de 30 puntos intenta poner escaleras 45 Comienza el algoritmo Est abierto NO I PonerConjuntos SI PonerFichasSueltas Ha puesto mas de 30 puntos NO PonerEscaleras Fin algoritmo NO PonerConjuntos Ha puesto alguna ficha Sl Fin algoritmo Ha alguna combinacion NO PonerEscaleras Sl Fin algoritmo Figura 6 12 Diagrama de flujo del primer sistema experto Funcionamiento del segundo sistema experto Si est abierto y tiene m s de 40 puntos o menos de 20 intenta quitarse el mayor n mero de fichas poniendo escaleras y conjuntos si tiene entre 40 y 20 puntos intenta poner fichas sueltas Si no est abierto intenta poner tanto escaleras como conjuntos Este robot intenta quedars
121. vez pero se solucion y ahora por ejemplo se tiene sonando el cronometro a la vez que el sonido de las fichas cuando se mueven o el que se produce al robar Finaliza correctamente la ejecuci n del programa S Tras a adir las clases encargadas de manejar todo el entorno multimedia el juego sigue funcio nando y finalizando correctamente Incremento 4 Dise o e implementaci n de la clase Partida Funciona correctamente el cronometro S funciona En principio cuando no hab a pausa el cronometro funcionaba perfectamente Una vez se incluy la pausa cuando llegaba al final del turno el cronometro segu a contando tanto tiempo como hubiese estado en pausa lo cual se detect y se corrigi Otro problema que presen taba era que estando en pausa si se pasaban los sesenta segundos se pasaba de turno tambi n se detect y corrigi Cuando se a adi la funcionalidad de la pantalla de confirmaci n de salida de la partida el cronometro no present problema alguno Funciona correctamente el constructor de la clase Jugador S funciona Se probaron distintas entradas v lidas e inv lidas para el constructor y se prob que s el jugador no existe el sistema crea una entrada con su nombre en el fichero gestorJugado res sav y crea un fichero nombre sav en el cual en la primera linea aparece el nombre del jugador en la segunda su puntuaci n general en la tercera las partidas ganadas en la cuarta las partidas perdidas
122. voca a la opera ci n Mostrar pMenuJugar de la clase PantallaJugar Control La operaci n Mostrar pMenuJugar se encarga de mostrar la pantalla del submen jugar de la aplicaci n Una vez mostrada la pantalla del men de opciones se est a la espera de que se produzca alg n evento En este caso el evento que puede producirse es que el usuario seleccione una determinada opci n del men Opcion Seleccionada opc 42 En funci n de la opci n del men que el usuario seleccione se crea un objeto de la clase de control que controla la acci n asociada a la opcion caso de uso seleccionada Diagrama de interacci n del submen editar jugadores Este es el aspecto de la pantalla del submen editar jugadores Figura 6 8 Submen Editar jugadores de FreeRummi Y el diagrama de interacci n asociado EditarJugadores Pantalla Control EditarJugadores Mostrar pMenuEditar l Opcion seleccionada opc opc 1 Create Create Borrar Control Figura 6 9 Diagrama de interacci n del submen Editar Jugadores Si en el men principal se escogi la opci n 2 se crea un objeto de la clase EditarJugadores Con trol new EditarJugadores Control y se ejecuta una operaci n de la clase EditarJugadores Control que invoca a la operaci n Mostrar pMenuEditar de la clase PantallaEditar Control La operaci n Mostrar pMenuEditar se encarga de mostrar la pantalla del submen jugar de la apl

Download Pdf Manuals

image

Related Search

Related Contents

Whirlpool MH1140XM User's Manual  1 ETL6 6kg Top Load Washing Machine User Manual  Sony PMC-222V User's Manual  UM10578 LPC11xxLV User manual  Supermicro SuperChassis 733T-350, Beige  カタログダウンロード - メールフォーム作成|レンタルメールフォーム  Samsung Samsung Galaxy Tab A 8" WiFi Инструкция по использованию    CDX-C7850R  SD-22VB SD-22VE SD-22VL  

Copyright © All rights reserved.
Failed to retrieve file