





Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Es un ejemplo por si quereis repasarlo. Solo me deja subir lo que es el enunciado. si quereis los archivos para hacer en eclipse mandarme un correo a [email protected] y os lo pasare con mucho gusto. Espero que os sirva de ayuda para que aprobeis!!!!
Tipo: Guías, Proyectos, Investigaciones
1 / 9
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!






Entrega y prueba de evaluación ................................................................................................................................. 1 Material que se debe entregar ................................................................................................................................... 2 Calificación del proyecto .......................................................................................................................................... 2 Descripción del juego Block Merge ............................................................................................................................. 2 Nuestra versión de Block Merge ................................................................................................................................ 3 Normas de implementación....................................................................................................................................... 4 Tipos abstractos de datos ......................................................................................................................................... 5 Librería entorno .......................................................................................................................................... 5 TAD Casilla ................................................................................................................................................ 6 TAD tablero ................................................................................................................................................ 6 TAD Juego ................................................................................................................................................. 7 Planificación .......................................................................................................................................................... 7 Documentación ...................................................................................................................................................... 8 Documentación interna ..................................................................................................................................... 8 Documentación externa .................................................................................................................................... 8 A continuación se detallan los requisitos para la elaboración del proyecto de programación obligatorio de la asignatura Introducción a la programación para el curso 201 9 /20 20. El objetivo de este proyecto es diseñar, implementar en C++ y documentar una versión del juego Block Merge con ayuda de una serie de módulos ya escritos para manejar el entorno gráfico.
Se deben cumplir todos los requisitos que se indican en este documento. Este proyecto puede realizarse en grupos de dos o individualmente. La cantidad de trabajo que hay que realizar está pensada para dos estudiantes pero, opcionalmente, se puede hacer de manera individual. En el apartado correspondiente del aula virtual de la asignatura se puede encontrar toda la información sobre el proyecto, un ejecutable de prueba como modelo de lo que debe entregarse, un proyecto base con los archivos del entorno, una plantilla para la documentación y la rúbrica de evaluación. Además, se puede usar el foro de la asignatura para preguntar dudas y aclaraciones. Es responsabilidad del estudiante la custodia y protección de su proyecto. Solo las personas del grupo y los profesores de la asignatura pueden ver el código desarrollado para un proyecto. Si ves el programa de otra persona, estás copiando. Si dejas tu proyecto a otra persona, estás copiando. Se utilizará un software de detección de copias en los programas entregados. En caso de encontrar similitudes en partes significativas de los programas, todos los implicados tendrán una nota de SUSPENSO (0) en la asignatura.
La entrega final del proyecto de programación se realizará mediante la actividad correspondiente del aula virtual. El plazo de presentación se avisará con suficiente antelación. En cada convocatoria será siempre uno o dos días antes del día del examen oficial de la asignatura. Cada miembro del grupo deberá entregar exactamente la misma información. Tanto en la documentación interna como en la externa deberán aparecer los nombres de las personas que han realizado el trabajo.
El día del examen final de la asignatura se realizarán las correspondientes pruebas de evaluación del proyecto , en el horario que se publicará en la convocatoria oficial. Esta prueba solo hay que hacerla si se ha entregado el proyecto en el plazo indicado. La prueba se realizará de manera individual, independientemente de que el proyecto se haya realizado en pareja o individualmente. Es necesario comprobar que se ha enviado la información correctamente y que está accesible en el aula virtual. MATERIAL QUE SE DEBE ENTREGAR Al entregar el proyecto se debe presentar un único fichero comprimido (. zip o. tar.gz ) con el nombre de las personas que han hecho el programa, nombre1_nombre2.zip (o .tar.gz ) que contenga los siguientes archivos:
El juego terminará cuando no haya ningún bloque en el tablero o cuando se alcance el valor objetivo indicado en el archivo de configuración. También se acabará cuando el usuario pulse la tecla Escape. La nota máxima que se puede obtener en el proyecto con esta versión básica es de 8. Ampliaciones Existe la posibilidad de presentar, junto con el proyecto básico explicado anteriormente, versiones ampliadas. Con estas ampliaciones se podrá llegar a obtener la calificación de 10 (personas que presenten individualmente el proyecto) o 12 (parejas), siempre que el proyecto básico esté correctamente implementado y documentado. Si existen errores graves en la versión básica o en la documentación no se tendrán en cuenta las ampliaciones. Ampliaciones propuestas para todos: Se pueden incluir una o dos propuestas de este bloque. Por tanto, se pueden conseguir 2 puntos como máximo.
TIPOS ABSTRACTOS DE DATOS Tras un análisis del problema, surge la necesidad de modelar los siguientes elementos que se manejan con las librerías o tipos abstractos correspondientes: El entorno gráfico de la aplicación, responsable de la interacción con el usuario. La librería entorno es la que se encargará de gestionar la interfaz de usuario. El TAD Casilla gestionará el estado de una casilla (si está vacía o no y su valor) y las operaciones correspondientes. El tablero , compuesto por un conjunto más o menos grande de casillas, según lo que se indique en el archivo de configuración. El TAD Tablero gestionará esa información con las correspondientes operaciones para iniciarlo aleatoriamente o a partir del fichero de configuración, determinar si una casilla pertenece o no a un bloque, eliminar un bloque, añadir nuevas casillas, etc. El TAD Juego realiza el control de todo el proceso, encargándose de gestionar las teclas que se pulsan, los movimientos del cursor y el fin del juego, así como de mantener la coherencia entre la información que se almacena en el tablero y lo que se representa en pantalla en cada instante del juego. Este es el esquema de relación entre los tipos abstractos de datos que se pueden definir y utilizar, y la librería principal del entorno que debe usarse para programar la interfaz del juego. Si se considera necesario, se pueden implementar más tipos. Este esquema es una simple recomendación. LIBRERÍA ENTORNO Con el fin de facilitar la labor de desarrollo se entrega, en un proyecto de eclipse , una librería con los módulos necesarios para gestionar el entorno gráfico. Desde los módulos desarrollados por el programador solo se deben usar las operaciones definidas en entorno.h. Estos módulos no pueden modificarse. En el aula virtual hay un fichero BlockMergeBase.zip con un proyecto base con los ficheros del entorno y un pequeño ejemplo de funcionamiento (no se usan todas las operaciones del entorno), que debe usarse como proyecto base para añadir el resto de módulos. En entorno.h aparecen las constantes definidas y las funciones de manejo del entorno (con su especificación con pre/postcondiciones). Podemos suponer que todas las funciones del entorno tienen un coste constante, O(1). También se define el tipo enumerado con los valores que devuelve la función entornoLeerTecla , con los valores de las únicas teclas aceptadas (cursores, Enter y Escape). Si se pulsa cualquier otra tecla, la función devuelve TNada. (Se reconoce también la tecla Y que, en principio, no se utiliza en el juego, pero que se podría usar en alguna modificación del proyecto.) El juego se configurará a partir de la información presente en el fichero merge.cnf que debe estar situado en el directorio del proyecto. La estructura de este fichero de texto, que nos permite cargar la configuración inicial del juego, es la siguiente: En la primera línea, el tamaño del tablero, n, que será un valor entre 4 y 8. En la segunda línea, el valor objetivo que se deberá alcanzar para terminar el juego, ob , que será un valor positivo.
Para determinar si una casilla concreta del tablero forma parte de un bloque basta comprobar si alguna de las casillas que la rodean (encima, debajo, a la derecha o a la izquierda) tiene el mismo valor. Hay que tener en cuenta que hay casillas que no están rodeadas por 4 casillas. Por ejemplo, las casillas de la primera fila no tienen ninguna encima; las casillas de la última columna no tienen ninguna a la derecha. La función para vaciar todas las casillas de un bloque, a partir de una casilla dada, debe ser una función recursiva. Habrá que llamarla después de haber comprobado que esa casilla dada forma parte de un bloque. A continuación se muestra un pseudocódigo de esa función. módulo vaciarBloque (Tablero &t, int fila, int col, int valor ) inicio si las coordenadas (fila, col) son válidas (están dentro del tablero) entonces si la casilla que está en (fila, col) no está vacía entonces si el valor de la casilla que hay en (fila, col) es igual a valor entonces vaciar la casilla que está en (fila, col) vaciarBloque (t, fila+1, col, valor) vaciarBloque (t, fila-1, col, valor) vaciarBloque (t, fila, col+1, valor) vaciarBloque (t, fila, col-1, valor) finsi finsi finsi fin La llamada inicial a vaciarBloque se hará pasando como parámetros el tablero completo, la fila y la columna de la casilla dada y el valor que hay en esa casilla). TAD JUEGO El TAD Juego es el que realiza la gestión del juego completo. Será el que gestione el tablero, la interacción con el usuario a través del teclado y la actualización del entorno gráfico del juego (la pantalla). La estructura de datos correspondiente al juego debe guardar, como mínimo:
Horas Tarea 4 Lectura de la documentación inicial, planificación del trabajo en grupo (2 horas cada persona) 2 Prueba del proyecto base 2 Diseño general de la aplicación y de los TAD necesarios 2 Diseño e implementación del TAD Casilla (estructura de datos, implementación de operaciones y pruebas) 2 Definición del TAD tablero (estructura de datos y operaciones necesarias) 16 Implementación del TAD tablero (juegos de pruebas y operaciones) 8 Definición e implementación del TAD juego (operaciones) 4 Pruebas de integración del proyecto 6 Ampliaciones del proyecto 4 Escritura final de la documentación (una parte de esta tarea se debe realizar a lo largo de todo el proceso, mientras se implementan los TAD) Total: 50 horas DOCUMENTACIÓN El proyecto debe ir acompañado de su correspondiente documentación interna y externa. DOCUMENTACIÓN INTERNA En el fichero .h de cada TAD se debe incluir la especificación con pre/postcondiciones y la complejidad de cada operación. En el fichero .h de las librerías de prueba de cada TAD deben incluir, con comentarios, el diseño de las pruebas que se hacen en cada módulo. DOCUMENTACIÓN EXTERNA En el aula virtual se puede encontrar una plantilla que sirve de guía para la redacción de la documentación externa, con la información que debe contener. El formato de la página de la cubierta debe ser el indicado en la plantilla de la documentación, que incluye la identificación de los estudiantes, el grupo al que pertenecen y su profesor de laboratorio. A continuación se explican brevemente los distintos apartados que, como mínimo, debe contener la documentación externa entregada.
Toda documentación de programas debe incluir una breve introducción sobre el software desarrollado, explicando el objetivo principal y los requisitos satisfechos.
Una vez que conocemos cuál es el problema en cuestión, descrito en la introducción, debemos comprender el problema y analizar qué entidades intervienen en el mismo. Además, será necesario asociar a cada una de estas entidades las principales acciones que pueden realizar. La documentación relativa al análisis facilita la comprensión del problema, ya que, sin entrar en demasiados detalles, se describen los tipos abstractos de datos que posteriormente serán implementados y las principales decisiones tomadas. En el diseño de la aplicación se detalla cada uno de los tipos abstractos de datos utilizados para desarrollar la aplicación. Para cada uno de los tipos abstractos se debe explicar su composición y las operaciones relacionadas. Esta sección se debe iniciar con el esquema de los tipos abstractos usados (similar al que aparece en la página 4), pasando después a describir cada uno de los tipos de abstractos de datos y el programa principal.