Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Índice
1 ABSTRACT............................................................................................................................................ 4
2 PLANTEAMIENTO ................................................................................................................................ 4
4 ANÁLISIS .............................................................................................................................................. 5
5 PLANIFICACIÓN ................................................................................................................................. 18
6 DESARROLLO ..................................................................................................................................... 20
7 RESULTADOS ..................................................................................................................................... 24
9 ANEXOS ............................................................................................................................................. 25
2
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
10 BIBLIOGRAFÍA .................................................................................................................................... 39
3
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
1 Abstract
2 Planteamiento
Se debe desarrollar un sistema de juego online que permita a los usuarios del sistema
jugar contra otros usuarios o agentes software con inteligencia artificial. Se han propuesto
varios juegos: mus, conecta4…
Se busca que los miembros del equipo adquieran ciertos conocimientos relacionados
con la temática del proyecto: programación concurrente, inteligencia artificial, metodologías
de desarrollo de software, diseño de software usando diagramas UML1, etc. (Anexos: Objetivos
de aprendizaje).
3.1 Mínimos
Distinguiremos dos tipos de usuarios a los que estará dirigido el sistema a desarrollar:
usuarios no registrados y usuarios registrados. Las funcionalidades mínimas a ofrecer y
satisfacer serán las siguientes:
1
Unified Modeling Language
4
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
Los usuarios registrados que creen una partida podrán decidir si alguno o varios
jugadores son representados por agentes software con inteligencia artificial.
3.2 Límites
Basándonos en las funcionalidades mínimas previamente descritas, y en los objetivos
de aprendizaje, excluiremos las ideas y mejoras que no ayuden a lograr estos objetivos. Todos
estos extras se describen en la sección Líneas de expansión.
4 Análisis
En esta sección se definirá conceptual y técnicamente todas las características del
proyecto a desarrollar, lo cual permitirá dar el paso a la fase de desarrollo.
En este caso particular, estando las señas prohibidas (concepto explicado más
adelante), un jugador cualquiera barajará y dará a cortar al jugador sentado a su izquierda. A
continuación, repartirá 4 cartas a cada jugador comenzando por el jugador sentado a su
derecha y entregando una carta cada vuelta. Dejará el taco de cartas sobrantes a su izquierda.
En este momento, el repartidor comenzará con la fase de mus o no mus. Cada jugador,
de uno en uno y teniendo en cuenta sus cartas, decidirá si corta el mus o se da mus. Si cortase
el mus, se convertiría en mano (concepto explicado más adelante) y daría comienzo la fase del
5
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
juego a grande; si se diera mus, movería el taco de cartas a su derecha pasándole el turno al
siguiente jugador.
Si se llegase a completar una vuelta sin corte de mus, el repartidor movería de nuevo
el taco de cartas a su derecha, y los jugadores pasarían a descartarse de mínimo una carta.
Estas cartas pasarían momentáneamente a estar fuera del juego. Seguidamente, el jugador
sentado a la derecha del repartidor comenzaría a entregar el número de cartas necesario a
cada jugador para que cada uno tenga 4 cartas; comenzando por el jugador de su derecha y
terminando en él mismo. Este proceso se repite hasta que alguien corte el mus o no queden
cartas en el taco, momento en el que se baraja el taco de descartes para poder seguir
repartiendo cartas.
4.1.1.2 Apuestas
En cada lance de una mano, cada jugador comenzando por la mano y de derecha a
izquierda tiene la oportunidad de apostar o pasar. Puede apostar tantas piedras como desee,
con un mínimo de 2 piedras, la cual se llama envido, mientras que órdago significa apostar
todo el juego.
Por ejemplo, si la mano al comienzo del lance a grande envidara, se llevaría dos puntos
al final del juego siempre y cuando la pareja contraria viera la apuesta y su jugada o la de su
compañero fuera mejor (a grande) que cualquier jugada de la pareja contraria. Si la pareja
contraria pasase, se llevarían una piedra instantáneamente de porque no. En cambio, si la
pareja contraria subiera la apuesta 5 más, se cambiarían las tornas, con la diferencia de que si
no se quiere la apuesta, los puntos de porque no serían los del total de apuestas acumuladas
sin contar la última (en este caso 2).
Si todos los jugadores pasaran en algún lance sin haber apuestas, es decir, si se dejase
un lance en paso, al final de la mano se verificará cuál es la pareja que gana en cada lance.
Cada pareja ganadora de cada lance se adjudicará seguidamente un punto si se trata de grande
o pequeña y los puntos que correspondan si se trata de pares o juego. Este recuento se explica
con claridad en la sección que describe la fase de tanteo.
6
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
4.1.1.4 Grande
En el lance a grande, la combinación de las 4 cartas de cada jugador es mejor cuanto
mayor sea su valor y mayor número de reyes tenga, siendo mejor combinación, por ejemplo,
dos reyes y dos cuatros que dos caballos y dos sotas.
4.1.1.5 Pequeña
En este lance, la combinación de las 4 cartas de cada jugador es mejor cuanto menor
sea su valor y mayor número de ases tenga; siguiendo la misma lógica que el lance a grande.
4.1.1.6 Pares
En esta fase de la mano, cada jugador, en el orden habitual, debe primero decir si
posee pares (dos o más cartas iguales). Si las dos parejas tuvieran al menos un jugador con
pares, se procedería al lance. Se pasaría a apostar como en mayor y pequeña.
Hay que diferenciar tres tipos de combinaciones diferentes: pareja, con dos cartas
iguales; medias, con tres cartas iguales y dúplex, con dos parejas diferentes o iguales de cartas.
Ganan primero los dúplex, después las medias y por últimos las parejas. Al igual que en mayor,
se le da mayor importancia a las cartas de más valor, siendo los reyes las cartas de mayor
importancia.
Es por todo esto que, por ejemplo, unos dúplex de reyes ganan a unos dúplex de dos
reyes y dos caballos. También, por ejemplo, unas medias de ases ganan a una pareja de reyes.
4.1.1.7 Juego
El lance a juego comienza de la misma manera que el de pares: cada jugador, en orden,
debe decir si posee juego o no. Posteriormente comienza el lance o fase de apuestas.
Se considera juego una combinación de cartas que sume 31 o más puntos. Hay que
tener en cuenta que la combinación que gana primero es la que suma 31 puntos, después 32 y
seguidamente 40, 39, 38, 37, 36, 35, 34 y 33.
Por ejemplo, un jugador que posea una combinación que sume 35 puntos no gana a
aquél que posea otra que sume 32 o 31, pero sí a aquellos que posean combinaciones que
sumen 33 o 34 puntos.
Si ningún jugador tuviera juego (combinación de cartas que sume 31 o más puntos), se
pasaría a jugar al punto. En esta parte, la combinación ganadora es aquella cuya suma se
acerque más a 30.
7
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
4.1.1.8 Tanteo
Al final de una mano, cada jugador muestra sus cartas y se pasan a contabilizar los
puntos de las apuestas y de tanteo. En el orden de los lances (grande, pequeña, par y juego),
cada pareja se adjudicará los puntos de tanteo y los que le correspondan por cada apuesta que
haya ganado.
4.1.1.9 Mano
El jugador que se sienta a la derecha del taco de cartas es también llamado mano. Este
concepto es importante, ya que en la fase de tanteo, si en un lance se produjera un empate
técnico (misma combinación ganadora poseída por al menos un jugador de cada pareja), el ser
mano o la cercanía a ésta (siendo el jugador más cercano el que se sienta a su derecha y el más
lejano el sentado a su izquierda) es el factor que decide quién gana.
4.1.2 Mercado
Los juegos tradicionales en versión online son muy comunes en distintos portales de
Internet. Los portales, suelen estar compuestos por distintas salas, cada uno con su propio
nivel de dificultad.
En cada sala, suele haber un chat general, para hablar con los compañeros de la sala y
así crear partidas. También, suele haber un alto número de juegos, muchos de ellos
tradicionales, como el mus, domino y ajedrez. Una vez que se ha creado la partida, y los
distintos jugadores se han unido a ella, suelen ofrecer otro chat de la partida, para
comunicarse entre ellos, mientras se juega. Un buen ejemplo de este tipo de programas podría
8
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
ser Garena, plataforma multifunción que permite a los jugadores chatear y jugar a multitud de
juegos contra otros usuarios (2).
4.1.3 Usuarios
En nuestro sistema se definirán dos tipos distintos de usuarios: el usuario no registrado,
y el usuario registrado. El usuario no registrado deberá poder realizar dos únicas cosas,
descargar el juego y registrarse en el sistema. Como es obvio, cualquier jugador registrado
también podrá descargarse el juego. Estas dos opciones serán ofrecidas en una página web.
4.1.4 Gestión
Para que el sistema pueda gestionar los usuarios y partidas del mismo, son necesarias
unas base de datos y una página web. La página web se utilizará para poder descargar la
aplicación, y también ofrecerá la posibilidad de registrarse como usuario.
Los datos de los usuarios deberán ser almacenados de forma persistente para
posteriormente autentificar e identificar a cada usuario en el entorno del sistema. Para esto,
se utilizará una base de datos. Se almacenarán datos como el nombre, id, contraseña,
privilegios…
Esta base de datos debería estar alojada en el servidor, ya que es esta figura la que
aglutina todos los procesos de juego y gestión de usuarios.
4.1.5 Software
Se describirán a continuación, sin entrar en cuestiones técnicas, las diferentes partes
de software necesarias para construir el sistema.
9
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
podrían existir muchos otros planteamientos para estos salones, como niveles de dificultad,
idioma, etc.
Cuando el usuario entra en un salón, podrá usar un chat dirigido a los usuarios del
salón, una lista de usuarios conectados y sendas listas de partidas creándose y jugándose.
Estos dos tipos de partidas se deberán diferenciar de alguna forma visual. Podrá entrar en
cualquiera de los dos tipos de partidas: si estuviera creada y jugándose, entrará como
espectador y podrá usar un chat común de la partida, pero no verá ninguna carta; si estuviera
creada pero no iniciada, entrará dentro de la configuración de la partida.
La configuración de la partida debe ser una interfaz que ayudase a los creadores de
partidas a configurar la partida deseada. En el caso del mus, mostrará un chat y cuatro huecos
para los jugadores, donde uno de ellos será el propio creador. Los usuarios que entren a la
partida aparecerán en orden dentro de esta interfaz: si sólo estuviera el creador dentro, siendo
éste el jugador número 1, el siguiente usuario en entrar pasará a ser por defecto el jugador
número 2. Cada usuario, incluyendo al creador, podrá decidir su rol: jugador 1, 2, 3, 4 o
espectador; ya que las partidas tendrán un máximo de huecos o slots para espectadores que
sólo deseen observar, y 4 para los jugadores. Estos slots son configurables por el creador,
pudiendo cerrarlos, abrirlos o establecer manualmente una máquina como jugador, eligiendo
entre dificultades fácil, media o difícil. En todos los casos, si en el slot en cuestión se ubicase
otro usuario, este sería expulsado.
Si un usuario está viendo una partida como espectador, tendrá la opción de volver al
salón en cualquier momento deseado. Si, en cambio, está jugando una partida y no es el
creador, tendrá la opción de salir al final de cada partida de mus. Si fuese el creador, además
de esto, tendrá la opción de guardar la partida y pausarla, además de poder finalizarla al final
de cada partida.
Al salir de una partida, el usuario debe volver a visualizar la ventana del salón en el que
se encontraba antes de entrar en dicha partida.
10
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
Registrar todos los datos referentes a los usuarios y al sistema: salones, partidas
guardadas, etc.
Prestar los servicios de chat y de juego a los usuarios.
Además, gracias a esta centralización, el servidor poseerá una visión global del sistema
la cual le capacitará para ejercer un control completo sobre él.
En este caso la inteligencia artificial deberá recibir las entradas de la partida de mus,
tales como las cartas, el tanteo... procesar esa información y proporcionar la mejor jugada
según sus criterios.
Los usuarios podrán conectarse a estos servidores y podrán utilizar la aplicación para
chatear en el salón, jugar una partida contra la maquina o jugar y chatear en una partida con
otros jugadores
11
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
Ilustración 1, esquema conceptual que refleja las funcionalidades principales del sistema de juego.
2
Data Base Management System, sistema de gestión de bases de datos.
12
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
Pobre
Portabilidad Completa
Windows 9x no soportado
Más lenta
Velocidad Muy rápida
Fork por conexión
Media
Seguridad Media
Sensible a ataques DoS3
4.2.2 Software
En esta sección, razonaremos la tecnología a usar para la creación de los programas
cliente y servidor, basándonos en la descripción conceptual previa de nuestro sistema. Además,
explicaremos el funcionamiento de cada uno de los programas.
4.2.2.1 Cliente
Definiremos la tecnología a emplear para la implementación del cliente, además de de
definir de una forma más técnica su funcionamiento general.
4.2.2.1.1 Tecnología
Nos hemos planteado la utilización tanto de Java o de C para la implementación del
programa cliente. En base a un análisis comparativo entre estos dos lenguajes, nos hemos
decantado por Java (Anexos: Comparación entre Java y C).
Las razones de esta decisión son claras. Mientras que C ofrece una mejora en la
velocidad inapreciable para el usuario al cual está dirigido este programa, Java disminuiría el
tiempo de desarrollo, y por lo tanto, los costes del proyecto en un ámbito comercial. Además,
programando en java, conseguimos un código que es portable, ya que este código se va a
ejecutar a través de la maquina virtual que ofrece este lenguaje y así no depende del Sistema
Operativo que tenga la ordenador del cliente.
3
Denial of Service, ataque que se basa en inhabilitar uno o varios servicios de una máquina. En
PostgreSQL, si un usuario puede conectarse a la base de datos, este puede ejecutar CREATE TABLE
debido a una vulnerabilidad del sistema, permitiendo perpetrar ataques DoS.
13
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
Otro punto positivo de Java respecto a C, es la facilidad para crear un entorno grafico,
muy interesante para la aplicación cliente.
El cliente, al inicializarse, creará dos sockets4 para comunicarse con el servidor, uno
para un hilo asistente que escuchar al usuario y otro para un hilo refrescador que actualiza la
información de la pantalla. Es decir, el primero enviará las peticiones del usuario al servidor y
escuchará las respuestas que le envíe este servidor y el último se encargará de refrescar la
pantalla con la información que pida y posteriormente reciba desde el servidor. Esto permite
que el programa no deba esperar peticiones del usuario para mostrar información de
importancia enviada por el servidor.
En todos los casos, los chats serán totalmente independientes, es decir, ellos mismos
crearán dos hilos (receptor y emisor) que se encargarán de enviar los mensajes del usuario y
recibir los mensajes de otros usuarios. Estos chats se basarán en IP multicast5 y sockets UDP6.
Realizamos esta separación para aprovechar la tecnología IP multicast, la cual se identifica y
simplifica el funcionamiento del chat. Usamos UDP por su velocidad y ligereza frente a TCP, ya
que en el caso del chat el orden de los paquetes no es relevante.
4
Un socket es un punto de entrada y salida de datos desde un proceso hacia otro proceso. En el caso de
los sockets de red, esta comunicación se realiza vía Internet.
5
Método de direccionamiento de red para el envío de información a todo un grupo de usuarios de
forma simultánea.
6
User Datagram Protocol, protocolo para la comunicación en Internet rápido y ligero. Éste no asegura
que los datos lleguen a su destino, ni tampoco que lleguen en el mismo orden de envío.
14
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
informará a este sobre los cambios en los datos. En este último caso, el hilo refrescador deberá
actualizar con cierta regularidad la información sobre los salones, las partidas disponibles, la
información de configuración de las partidas o los espectadores de una partida en juego.
4.2.2.2 Servidor
En este apartado, al igual que en la sección dedicada al cliente, estudiaremos la
tecnología a emplear para la implementación del servidor y definiremos de una forma más
técnica el funcionamiento general de este programa.
4.2.2.2.1 Tecnología
Analizaremos los lenguajes de programación Java y C para poder llevar a cabo la
elección del lenguaje de programación a emplear para la implementación del servidor (Anexos:
Comparación entre Java y C).
Por esta razón se ha elegido emplear Java para el desarrollo del servidor. Ofrece
mejores resultados que C salvo en la velocidad. Hay que señalar que esto no sería un problema
para la aplicación proyectada, ya que no es necesaria una gran velocidad: no es importante ser
veloz, sino no ser lento.
El proceso principal del servidor se encargará de aceptar a los usuarios que deseen
conectarse. Al aceptar a cada usuario, el servidor creará un objeto que le represente, el cual
lanzará dos hilos: asistente y refrescador. El primero se encargará de escuchar y atender las
peticiones del usuario en cuestión y el segundo enviará información de refresco a petición del
mismo. Para esto son necesarios dos sockets por cada cliente.
En el lado del servidor, no hace falta ningún tipo de conexión ni concurrencia para los
chats; lo único que hay que hacer es especificar la dirección IP Multicast y el puerto de cada
chat para enviar estos datos a los usuarios que deseen conectarse a ellos.
15
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
El mayordomo esperará a que el cliente le diga en que partida quiere entrar o si quiere
crear una partida. En el primer caso, el mayordomo enviará un paquete entrarAPartida, en el
segundo, un paquete crearPartida. En ambos casos el servidor devolverá un paquete de
Repuesta (positiva o negativa). Si hubiera pedido entrar en una partida, el servidor enviará
después En el constructor de partida, se creará un chat, se añadirá al creador como tal y se le
mandará al salón la partida. Los dos hilos de mayordomo pasarán de refrescar e interactuar
con el salón a hacerlo con la partida de tal modo, que el mayordomo escuchara y mandará
todos los datos de la partida al cliente y el hilo de refresco refrescará la partida. Si la partida
estuviese ya creará (y en modo configuración) el mayordomo llamaría al salón y le pediría
permiso para entrar en la partida, y este a su vez al mayordomo creador correspondiente.
El creador podrá empezar la partida cuando haya mínimo entre maquinas y clientes 4
jugadores. Al empezar la partida el hilo de refresco también cambiará para poder refrescar la
partida.
Durante la partida, se seguirá un orden, contrario a las agujas del reloj, en el que la
maquina irá preguntando uno por uno a cada jugador su jugada dependiendo de la ronda. El
asistente se encargará de preguntar al cliente la jugada correspondiente, y escuchar su
respuesta para luego mandar la información a partida.
16
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
menú de salones, o salón principal. Desde cualquier punto de la aplicación se podrá salir,
destruyendo los hilos del mayordomo.
Por la mayor identificación con el sistema a desarrollar, elegimos JESS como recurso
principal para el desarrollo del agente. Con JESS tan sólo debemos implementar la base de
conocimiento que contenga las reglas y hechos relacionados con el juego del mus. Para
conseguir JESS, fue necesario realizar una petición de licencia académica gratuita, la cual
implica el cumplimiento de las normas en ella descritas (Anexos: Licencia JESS).
17
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
base de datos del sistema, la cual contendrá información como los registros de los usuarios y
partidas guardadas.
5 Planificación
En esta sección se presentan una planificación general de las diferentes tareas a realizar
para llegar a la culminación del proyecto, una descripción más concreta de la fase de
implementación, la forma de dividir el trabajo entre los miembros del equipo y las diferentes
herramientas que nos permitirán trabajar más dinámicamente.
18
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
Ilustración 3, diagrama de Gantt donde se muestras las diferentes tareas e hitos del proyecto.
19
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
módulos que permiten funcionar al resto, es decir, la base de datos y los sockets. Estos
módulos se ubican dentro de una capa de datos, en el centro del sistema. Comienza en ese
momento el desarrollo de un chat, componente muy usado en el programa, para seguir con la
implementación del cliente y del servidor en paralelo. Por último, se desarrollará el agente
inteligente.
Por esta razón, todos y cada uno de los miembros participarán en cada fase del
proyecto. En la fase de implementación, gracias a la orientación a objeto, Assembla y
Subclipse, se podrá trabajar de forma conjunta y de la manera más eficiente posible (Anexos:
Assembla, Subclipse).
6 Desarrollo
Se explicará el proceso de desarrollo que llevó al resultado final del proyecto. Desde la
modelización hasta los resultados finales, pasando por la implementación.
6.1 Modelización
Pasaremos a presentar los modelos creados para el diseño de las diferentes partes del
sistema: base de datos, programa cliente y programa servidor. Estos modelos han sido
realizados mediante el uso de diferentes programas y siguiendo normas como, por ejemplo,
UML.
Para la creación del diagrama se usó MySQL Workbench (Anexos: MySQL Workbench).
20
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
6.1.2 Software
21
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
Estos dos diagramas ayudan a identificar el problema, adquirir una primera idea de la
forma del sistema.
Tras esto, pasamos a crear un diagrama de casos de uso, el cual ilustra de manera
sencilla las distintas funcionalidades que ofrecerá el sistema a los usuarios potenciales del
mismo.
22
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
Este diagrama es de gran utilidad para la comunicación entre el equipo que desarrolla
el proyecto y el cliente.
6.1.2.2 Análisis
-Diagrama de clases del servidor y del cliente
23
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
6.2 Implementación
7 Resultados
8 Líneas de expansión
24
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
9 Anexos
9.1 Objetivos de aprendizaje
Es difícil decantarse por una de ellas, por lo cual se realizará un pequeño análisis sobre
las diferentes ventajas y desventajas que tenga cada lenguaje en diversas áreas (7).
9.2.1.1 Lenguaje
C fue creado como un lenguaje de programación muy expresivo y potencialmente muy
económico, dado a lo reducido de su sintaxis para programas pequeños y medianos. Pero a la
hora de crear programas complejos con miles de líneas de código, la labor de programar puede
tornarse muy oscura, en gran parte debido a los punteros y a su aritmética.
Por su parte, Java aporta diferentes herramientas que facilitan la labor del
programador. A continuación, citaremos algunas de las muchas que ofrece: la sobrecarga de
operadores dota al lenguaje de una gran expresividad; las excepciones permiten procesar de
un modo claro los errores; la sintaxis de clases y objetos permite manipular convenientemente
diversas estructuras de datos y operaciones, y además evita el uso de punteros sin que esto
merme su expresividad, gracias en parte al recolector de basura, la cual se encarga de liberar
de la memoria datos no referenciados.
9.2.1.2 Desarrollo
El desarrollo de programas en C puede tornarse complicado debido a su sintaxis. Es
cierto que el uso de punteros le da una gran versatilidad, pero, a la vez, ocasionan la
proliferación de errores en programas de grandes dimensiones.
9.2.1.3 Seguridad
Como ya se ha comentado anteriormente, el uso de punteros en C le da una gran
versatilidad y potencia al lenguaje, pero muchas veces a costa de la seguridad del programa.
Por ello java elimina los punteros, sin que esto afecte a la expresividad y encima añade la
encapsulación, la cual confiere una gran robustez al código.
25
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
9.2.1.4 Velocidad/Eficiencia
Es bien sabido que las CPU7 sólo comprenden el llamado lenguaje máquina. Por lo
tanto, todos los lenguajes de programación deben ser traducidos en algún momento a
lenguaje máquina para que los programas sean ejecutados. En este punto C posee estructuras
de datos muy simples que generalmente suelen tener una traducción muy sencilla al lenguaje
máquina. Esta sencillez otorga al lenguaje C una excelente eficiencia.
En cambio, Java fue creado desde un principio para ser ejecutado en cualquier clase de
dispositivo o CPU, es decir, sin que importase la arquitectura de la máquina en cuestión. Esto
lo consigue gracias a que no se compila directamente en el lenguaje máquina del CPU en uso,
sino en un pseudolenguaje máquina denominado byte code. Debido a esto, se precisa de un
programa especial que se encargue de la traducción del byte code al lenguaje máquina. Este
programa es conocido como JVM8, y es por ello que al código de Java se le conoce como
código interpretado.
Todo esto conlleva que un programa compilado en byte code debe ser además
traducido a lenguaje máquina. En general, esto resulta más lento que un programa ya
traducido al lenguaje máquina del CPU, aunque con cada versión de Java se acorta cada vez
más esta diferencia.
En definitiva, Java suele ser notoriamente más lento si la tarea principal consiste en
operaciones lógico-matemáticas, mientras que la eficiencia suele ser pareja a la de C para
aplicaciones que hacen uso de muchos componentes y librerías diferentes.
9.2.1.5 Portabilidad
C presenta importantes deficiencias en el tema de la portabilidad. Es cierto que al
tener características que dependen de la implementación permite una gran optimización del
programa en términos de eficiencia; pero esto mismo supone una gran pesadilla para
conseguir cierto grado de portabilidad.
7
Central Processing Unit
8
Java Virtual Machine
26
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
Java, por otro lado, al ser diseñado como un lenguaje que no depende del entorno en
el que será ejecutado, si bien esto le resta eficiencia, basta con escribir una vez el código para
poder ejecutarlo en cualquier dispositivo o sistema operativo que tenga instalada JVM.
Característica C Java
Por otro lado, Prolog Café es un traductor de código de Prolog a Java y viceversa.
Transforma el código usando una WAN11, para entonces compilarlo con un compilador de Java
corriente.
Por último, encontramos JESS 12 , una librería de Java que implementa una Shell
genérica para el desarrollo de sistemas expertos. El motor de inferencia que ofrece se basa en
9
Java Internet Prolog.
10
Java Native Interface, framework de Java que permite que un programa escrito en Java interactúe con
otro escrito en un lenguaje diferente.
11
Warren Abstract Machine, máquina abstracta que ejecuta código escrito en Prolog.
12
Java Expert System Shell.
27
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
una versión mejorada del algoritmo de Rete. Además, da la posibilidad de usar un lenguaje de
scripting que permite el uso de todas las API13 de Java. Dispone además de un entorno de
desarrollo basado en Eclipse.
Motor de Inferencia Sí No No
Integración con
Sí No No
Eclipse
A través de
Integración con JAVA Sí Sí
traducción
13
Application Programming Interface, conjunto de funciones y procedimientos que ofrece cierta
biblioteca para ser utilizado por otro software como una capa de abstracción.
28
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
Flujo de eventos:
Diagrama de actividades:
29
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
Flujo de eventos:
Pos requisitos: El usuario puede jugar una partida configurada a lo largo del proceso de
creación.
Diagrama de actividades:
30
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
Flujo de eventos:
Pos requisitos: El usuario puede ver el desarrollo de una partida, pudiendo además participar
en el chat de la misma, pero sin poder ver las cartas de los jugadores.
Diagrama de actividades:
Ilustración 10, diagrama de actividades del caso de uso Ver una partida.
31
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
Flujo de eventos:
Pos requisitos: Debe quedar almacenada en la base de datos del sistema la información
relacionada con la partida, para que posteriormente pueda ser cargada y ejecutada en las
mismas condiciones que se guardaron.
Diagrama de actividades:
Ilustración 11, diagrama de actividades del caso de uso Guardar una partida.
32
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
33
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
Bloque fin
Bloque inicial
Nombre
$p09 #
PIniciarPartida
Ilustración 21, paquete de petición de inicio de partida.
34
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
Bloque fin
Bloque inicial
Nombre
$pr01 #
PInfoSalones
Ilustración 23, paquete de petición de refresco de la información general de los salones.
35
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
Bloque
Bloque
Bloque información fin
inicial
Bloque
Bloque
Bloque información fin
inicial
Sep
Nombre Info Sep Info Sep
$rr02 … Info … #
User Partida
RInfoSalon % / %
Ilustración 28, paquete de respuesta con la información de refresco de un salón concreto.
Bloque
Bloque
Bloque información fin
inicial
Sep
Nombre Info Sep Start
$rr03 … Info #
Posicion
RInfoPartidaConf % / boolean
Ilustración 29, paquete de respuesta con la información de refresco de una partida en proceso de configuración.
36
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
Bloque
Bloque
Bloque información fin
inicial
Bloque información
Bloque información
Bloque información
Bloque información
37
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
9.7.2 Assembla
9.7.3 Subclipse
38
El Juego del Mus
Proyecto de desarrollo de un mus interactivo
Grupo de PBL de 3º de Ingeniería Técnica en Informática de Sistemas
10 Bibliografía
1. Wikipedia. Mus. [En línea] 21 de Octubre de 2008. [Citado el: 26 de Octubre de 2008.]
http://es.wikipedia.org/wiki/Mus.
2. Ocean Global Holding. Garena Help & FAQ. Garena. [En línea] [Citado el: 6 de November de
2008.] http://ww.garena.com.
3. Fermilab Computing Division. PostgreSQL versus MySQL. [En línea] Fermi National
Accelerator Laboratory, 15 de Febrero de 2005. [Citado el: 11 de Noviembre de 2008.]
http://www-css.fnal.gov/dsg/external/freeware/pgsql-vs-mysql.html.
4. Hunter, Shylon Ray. TechRepublic. MySQL vs PostgreSQL. [En línea] 1 de Julio de 2002.
[Citado el: 10 de Noviembre de 2008.] http://articles.techrepublic.com.com/5100-10878_11-
1050671.html.
5. William Siler, James J. Buckley. Fuzzy Expert Systems and Fuzzy Reasoning. s.l. : Wiley, 2005.
978-0-471-38859-3.
6. School of Computer Science, Carnegie Mellon University. FAQ: Fuzzy Logic and Fuzzy Expert
Systems. [En línea] [Citado el: 28 de Octubre de 2008.]
http://www.cs.cmu.edu/Groups/AI/html/faqs/ai/fuzzy/part1/faq.html.
7. America TI. Ventajas y Desventajas: Comparación de los lenguajes C, C++ y Java. [En línea]
11 de Noviembre de 2006. [Citado el: 3 de Noviembre de 2008.]
http://www.americati.com/doc/ventajas_c/ventajas_c.html#id2488972.
39