Sobre este proyecto
it-programming /
Abierto
Necesito desarrollar un programa en gtk + con compilador en c, les agradeceria mucho, es urgente.
DESCRIPCIÓN DEL SISTEMA Se desea un programa que permita a dos personas jugar "Scrabble". La función del programa será de árbitro, es decir, se encargará de verificar que las tiradas de ambos jugadores respeten las reglas del juego. En cualquier momento, los usuarios tendrán la capacidad de terminar el juego, siempre teniendo la opción de salvarlo, para poder continuar jugando más tarde.
III.ALCANCES Y LIMITACIONES • El programa hará la función de árbitro, el cual deberá verificar todas y cada una de las reglas permitidas en este juego. • El programa deberá desarrollarse en un ambiente gráfico, utilizando las bibliotecas de GTK. • El juego no tiene límite de tiempo
IV. REQUISITOS DEL SISTEMA El programa, al comenzar, debe desplegar una pantalla de presentación, en la que se incluya el nombre del programa, así como el nombre de los desarrolladores. A continuación debe desplegarse en pantalla el tablero de juego. El tablero cuenta con 225 casillas, 15 por lado. Cada jugador empieza el juego con 7 letras. Dichas letras se darán al jugador de manera aleatoria. El valor de cada una de las letras es el siguiente: • 1punto:A,E,O,I,S,N,L,R,UyT • 2puntos:DyG
• 3puntos:C,B,MyP
• 4puntos:H,F,VyY con una estrella. A su vez, el tablero tendrá casillas identificadas como “DP”, “TP”, “DL”, “TL”, los cuales se refieren a “Doble Palabra”, “Triple Palabra”, “Doble Letra” y “Triple Letra”. Dichas casillas deberán estar distribuidas a lo largo y ancho del tablero. Deberá haber 8 casillas de “TP”, 12 casillas de “DP”, 12 de “DP” y 28 de “TL” y cada una deberá estar identificada por un color diferente. No se permite que estas casillas estén agrupadas en un solo sector del tablero o que todas las casillas de un mismo tipo estén adyacentes entre sí. Si la palabra tirada por los jugadores queda sobre alguna de dichas casillas, se sumarán los puntos correspondientes al total de la palabra tirada. El diseño de la interfase gráfica, así como la distribución y los elementos del tablero se dejan totalmente al criterio de los desarrolladores, sin embargo, se deberán contemplar las siguientes funcionalidades: • Al terminarse un juego se deberá indicar mediante un mensaje y se preguntará si se desea jugar otra vez. • Indicar tiempo (minuto y segundos) que han transcurrido del juego en curso. • Llevar un registro (con nombre y tiempo) de los cinco ganadores que hayan terminado el juego en el menor tiempo. • Llevar un registro en pantalla del número de letras que quedan por jugador. • Barra de herramientas. • Barra de estado. Al empezar el juego, se deberá crear una palabra, ya sea • Tooltips. • Accesos directos para las opciones del menú. • Despliegue del nombre de los jugadores • Tener una opción de Ayuda que indique las
instrucciones generales y reglas del juego. • Tener una opción de "Acerca de..." que indique información de los desarrolladores del
programa. • Tener una opción de "Juego" en el menú, con las
siguientes opciones: ♦ Jugar
♦ Guardar
♦ Recuperar
♦ Terminar • Tener una opción de “Herramientas” en el menú,
con las siguientes opciones: ♦ Deshacer
♦ Rehacer
A continuación se detallan cada una de las opciones anteriores:
A. Jugar
Una vez que el usuario seleccionó esta opción, se le preguntará el tipo de juego que desea: Jugador vs. Jugador, Jugador vs. Computadora. En el supuesto caso de que aplique, el programa debe preguntar por el o los nombres de los jugadores. También se deberá preguntar qué jugador comienza el juego.
En el caso de un juego Jugador vs. Jugador, la función del programa es de árbitro, es decir, debe verificar que la palabra escrita sea válida, así como las posiciones de las letras en cada turno del jugador, o bien indicar quién es el ganador del juego.
En el caso de Jugador vs. Computadora, la función del programa es jugar contra el usuario, respetando las reglas del juego. De igual manera, tiene que hacer las funciones de árbitro. Los tiros de la computadora no deben ser aleatorios, y deberá jugar tanto defensiva como ofensivamente.
B. Guardar
Esta opción sólo puede ser seleccionada si existe un juego en curso. De alguna manera, el programa lleva un "estado histórico" del juego, es decir, tiene la capacidad de "recordar" todas las jugadas que se han ido efectuando. Al guardar, primero debe solicitar al usuario el nombre del archivo. Si el archivo ya existiera, debe preguntar si se desea reescribirlo o no. Siempre, la extensión de los archivos debe ser ".scb", y el programa debe verificar que el nombre del archivo sea válido. Es importante mencionar que en el archivo debe almacenarse toda la historia del juego. No es permitido,  ni tiene ningún sentido, guardar el tablero de cada jugada. C. Recuperar Al seleccionar esta opción, el programa debe preguntar al usuario el nombre del archivo que desea recuperar. Debe verificar que el nombre de archivo sea válido (recuérdese que la extensión siempre debe ser ".scb"), y que el mismo exista. En el caso de que el archivo no exista deberá desplegarse un mensaje de error. En el caso de que el archivo exista, se debe ir desplegando la historia del juego en el tablero, jugada por jugada. Para pasar de una jugada a la siguiente, se deberá dar clic (o un enter). Una vez que se llega al punto en el que los jugadores pueden continuar su juego, el programa deberá indicarlo por medio de un mensaje. D. Terminar Al seleccionar esta opción, si hay un juego en curso, se deberá preguntar al usuario si se desea guardar o no. en caso afirmativo, se deberá comenzar la rutina "Guardar", descrita anteriormente. E. Deshacer El juego deberá tener la capacidad de deshacer las todas las jugadas, hasta que se llegue a la primera jugada del juego dando clic en un botón. F. Rehacer De la misma manera, el juego deberá tener la capacidad de rehacer las jugadas realizadas, hasta que se llegue a la última jugada del juego dando clic en un botón.

VI. RESTRICCIONES DE PROGRAMAICÓN • El código del programa debe estar debidamente comentado e identado según lo visto en clase. • El programa se deberá codificar de una manera
modular. • Se recomienda utilizar compilación condicional
para la verificación del programa. • Se deberá crear un Makefile para la
automatización de la compilación. • No está permitido el uso de variables globales.
Categoría Programación y Tecnología
Plazo de Entrega: 05 Diciembre, 2012
Habilidades necesarias