You are on page 1of 12

LAB II

Profesor: Rubn Calabuig OOP: Videojuego.

TP Integrador N 02

FICHA TCNICA
EDAD DE LOS ALUMNOS: Alumnos del 2 cuatrimestre de TSP.

COMPETENCIAS
Para desarrollar el TP, debers tener conocimientos previos de los siguientes temas: Programacin bsica en lenguaje C++. Programacin modular y estructurada. Programacin orientada al objeto (OOP).

Al finalizar la tarea debers ser capaz de: Comprender los fundamentos de la OOP. Disear y administrar clases y objetos. Realizar un un juego utilizando el paradigma OOP de mediana complejidad.

TAREA
Durante el desarrollo de la tarea debers disear y desarrollar un videojuego utilizando como paradigma OOP. NOTA: Te sugiero que realices un batalla naval, aunque puedes elegir cualquier tipo de videojuego (accin, azar, lgica, etc.).

CONSIGNAS
CONSIGNAS PARA EL DESARROLLO
Lee atentamente todas las consignas antes de iniciar la tarea. Para llevar a cabo la tarea, te sugiero que dividas el proceso en etapas:

El programa debe ser desarrollado en C++ utilizando como entorno de desarrollo


el IDE Code::Blocks, con el compilador GNU gcc. El videojuego debe ser desarrollado en su totalidad en modo grfico. Para tal fin, la ctedra suministrar un sistema de clases basadas en las libreras grficas SDL (Simple DirectMedia Layer) de Sam Lantinga, que se distribuyen bajo licencia GPL (General Public License). El paradigma de programacin a utilizarse para el desarrollo del videojuego es la Programacin Orientada a Objetos (OOP).

NOTA: Todo el desarrollo debe estar basado en clases, las que se definirn en archivos independientes tipo .h, los que sern incluidos en el archivo que contiene a la funcin main(). El uso de funciones independientes slo ser permitido en casos muy justificados. La interfase del usuario debe presentar las siguientes caractersticas: El videojuego debe comenzar con una pantalla de presentacin y pantalla de despedida.

terminar con

El control del programa debe realizarse a travs de un sistema de mens de varios niveles. Debe existir la posibilidad de acceder en cualquier momento de la ejecucin a un sistema de ayuda en lnea (pantallas explicativas, ejemplos, ayudas contextuales, etc.). Se debe tener la posibilidad de guardar y recuperar un juego iniciado. Debe generar, mantener y mostrar un archivo de los 10 mejores puntajes. Debe existir la posibilidad de salir del programa en cualquier momento de su ejecucin. Segn el momento de ocurrida la peticin de abandono, pueden presentarse diferentes situaciones que se detallan a continuacin: Si se presion la opcin salir del Men Principal, debe terminarse el programa. Si se presion la opcin salir, la tecla ESC o se realiz alguna accin equivalente, desde algn submen, debe retornarse al Men Principal. Si se presion la tecla ESC o se realiz alguna accin equivalente durante la ejecucin del videojuego debe pedirse confirmacin, ofrecerse la posibilidad de guardar el juego iniciado y retornar al Men Principal. NOTA: Los alumnos podrn realizar propuestas de mejoras sobre estos tpicos.

CONSIGNAS PARA LOS ARCHIVOS FUENTES


El proyecto debe ser entregado con todos sus archivos fuentes (programas y libreras). Los archivos fuentes deben presentar el encabezado de autor, y cada una de las funciones debe, tambin, presentar un encabezado explicativo.

LAB II

Profesor: Rubn Calabuig OOP: Videojuego.

TP Integrador N 02

Ejemplo de documentacin de un archivo fuente de programa.


//############################################################################# // // ************************************************************************** // * El software libre no es una cuestion economica sino una cuestion etica * // ************************************************************************** // // Este programa es software libre; puede redistribuirlo o modificarlo bajo los // terminos de la Licencia Publica General de GNU tal como se publica por la // Free Software Foundation; ya sea la version 3 de la Licencia, o (a su // eleccion) cualquier version posterior. // // Este programa se distribuye con la esperanza de que le sea util, pero SIN // NINGUNA GARANTIA; sin incluso la garantia implicita de MERCANTILIDAD o // IDONEIDAD PARA UN PROPOSITO PARTICULAR. // // Vea la Licencia Publica General GNU para mas detalles. // // Deberia haber recibido una copia de la Licencia Publica General de GNU // junto con este programa, si no es asi, escriba a la Free Software Foundation, // Inc, 59 Temple Place - Suite 330, Boston, MA 02111-1307, EE.UU. // //############################################################################# // ARCHIVO : tipito.cpp // AUTOR : Ruben Alberto Calabuig. // VERSION : 0.1 beta. // FECHA DE CREACION : 15/02/2011. // ULTIMA ACTUALIZACION: 26/09/2011. // LICENCIA : GPL (General Public License) - Version 3. //============================================================================= // SISTEMA OPERATIVO : Linux (Ubuntu) / Windows XP. // IDE : Code::Blocks - 8.02. // COMPILADOR : GNU GCC Compiler. //============================================================================= // DEDICATORIA: A mi Padre Amadeo Calabuig (28/12/1924 - 10/03/1995). //============================================================================= // DESCRIPCION: // Este archivo es un demo sobre la programacion OOP con el sistema // de clases graficas adn++. // //============================================================================= // // NOTA: El personaje Tipito es una idea del Licenciado Daniel Enrique Kloster. // /////////////////////////////////////////////////////////////////////////////// //============================================================================= // COMPILACION EN WINDOWS //----------------------------------------------------------------------------// Si este programa se va a compilar en Windows, descomente las tres lineas // siguientes. //----------------------------------------------------------------------------/* #ifndef _WIN32 # define _WIN32 #endif */ //----------------------------------------------------------------------------//============================================================================= // INCLUSION DEL SISTEMA adn++ //----------------------------------------------------------------------------#include "./adn++_2.1/adn++.h" //=============================================================================

// VALORES DE LA RESOLUCION DE VIDEO //----------------------------------------------------------------------------// MUY IMPORTANTE!!!! // // Antes de compilar hay que verificar que los valores de las variables de // entorno: SCREEN_WIDE (ancho de pantalla), SCREEN_HIGH (alto de pantalla) y // SCREEN_DEPH (profundidad de colores) tengan los valores correspondientes al // entorno fisico donde se ejecutara el sistema. //----------------------------------------------------------------------------#ifdef WIN32 #define SCREEN_WIDE 1280 #define SCREEN_HIGH 724 #define SCREEN_DEPH 32 #else #define SCREEN_WIDE 1280 #define SCREEN_HIGH 800 #define SCREEN_DEPH 16 #endif //============================================================================= // INCLUSION DE LA CLASE clsTipito. //----------------------------------------------------------------------------#include "clsTipito.h" //############################################################################# // PROGRAMA PRINCIPAL //============================================================================= int main ( int argc, char** argv ) { return 0; // Fin del programa principal. } //### FIN DE ARCHIVO ##########################################################

Ejemplos de encabezado de un archivo de clases y encabezados de mtodos.


//############################################################################# // // ************************************************************************** // * El software libre no es una cuestion economica sino una cuestion etica * // ************************************************************************** // // Este programa es software libre; puede redistribuirlo o modificarlo bajo los // terminos de la Licencia Publica General de GNU tal como se publica por la // Free Software Foundation; ya sea la version 3 de la Licencia, o (a su // eleccion) cualquier version posterior. // // Este programa se distribuye con la esperanza de que le sea util, pero SIN // NINGUNA GARANTIA; sin incluso la garantia implicita de MERCANTILIDAD o // IDONEIDAD PARA UN PROPOSITO PARTICULAR. // // Vea la Licencia Publica General GNU para mas detalles. // // Deberia haber recibido una copia de la Licencia Publica General de GNU // junto con este programa, si no es asi, escriba a la Free Software Foundation, // Inc, 59 Temple Place - Suite 330, Boston, MA 02111-1307, EE.UU. // ////############################################################################# // ARCHIVO : clsBaseScreen.h // AUTOR : Ruben Alberto Calabuig. // VERSION : 2.3 beta. // FECHA DE CREACION : 15/02/2011. // ULTIMA ACTUALIZACION: 23/09/2011. // LICENCIA : GPL (General Public License) - Version 3. //=============================================================================

LAB II

Profesor: Rubn Calabuig OOP: Videojuego.

TP Integrador N 02

// SISTEMA OPERATIVO : Linux (Ubuntu) / Windows XP. // IDE : Code::Blocks - 8.02. // COMPILADOR : GNU GCC Compiler. //============================================================================= // DESCRIPCION: // Este archivo contiene la definicion de la clase abstracta // clsBaseScreen perteneciente al sistema adn++ (Sistema de // Clases para Modo Grafico para C++). // // La clase clsBaseScreen es heredera de la clase clsError y // contiene los elementos basicos necesarios para la administracion // de las pantallas en el modo grafico. // //----------------------------------------------------------------------------// ___________________ // | clsAbstract | // |-----------------| // |-----------------| // | inherit(): void | // |_________________| // ^ // | // | // ___________|___________ // | clsError | // |---------------------| // | errorSDL: int | // | errorID : int | // |---------------------| // | showError(): void | // | getError(): int | // |_____________________| // ^ // | // | // __________________________________ // | clsBaseScreen | // |--------------------------------| // | imagen: SDL_Surface* | // | ancho: int | // | alto : int | // | color: colorRGB | // |--------------------------------| // | loadImage(char* archivo): bool | // | paste(SDL_Surface*): void | // | clean(): void | // | clean(colorRGB): void | // | getWide(): int | // | getHigh(): int | // | getPtr(): SDL_Surface* | // |________________________________| // ///////////////////////////////////////////////////////////////////////////////// #ifndef _CLSBASESCREEN_H #define _CLSBASESCREEN_H //############################################################################# // DEFINICION DE LA CLASE //============================================================================= class clsBaseScreen: virtual public clsError { //--------------------------------------------------------------------------// ATRIBUTOS //--------------------------------------------------------------------------protected: //--------------------------------------------------------------------------// METODOS

//--------------------------------------------------------------------------public: //------------------------------------------------------------------------// DE ACCION //------------------------------------------------------------------------//------------------------------------------------------------------------// DE INFORMACION //------------------------------------------------------------------------}; //***************************************************************************** // DEFINICION DE LOS METODOS //============================================================================= // METODO : bool loadImage(char* archivo) // ACCION : Carga un archivio de imagen de tipo bmp en memoria correspon// diente (RAM o Video). // PARAMETROS: char* archivo -> cadena con el path y nombre de archivo. // DEVUELVE : true -> exito / false -> fracaso. //----------------------------------------------------------------------------bool clsBaseScreen::loadImage(char* archivo) { } #endif // _CLSBASESCREEN_H //### FIN DE ARCHIVO ##########################################################

Ejemplo de encabezado de una funcin.


//====================================================================== // FUNCION : int random(int n) // ACCION : Devuelve un numero aleatorio entero entre 0 y n-1. // PARAMETROS: int n -> numero tope del rango aleatorio. // DEVUELVE : int n -> numero aleatorio generado. //----------------------------------------------------------------------

NOTA: En cada caso los parmetros deben ser correctamente explicados (tipo, nombre, funcin que cumple).

CONSIGNAS PARA MANUALES Y DOCUMENTACIN


La documentacin mnima a presentar est integrada por: Archivos fuentes. Gua de usuario (slo para los que lleguen a instancia de examen final). NOTA: En esta gua se debe explicar claramente los distintos tpicos del programa (uso del men, detalle de las opciones, pantallas, teclas, comandos, ayudas, estrategias sugeridas, etc.). Debe entregarse con formato libre .odt (Open Document Text).

LAB II

Profesor: Rubn Calabuig OOP: Videojuego.

TP Integrador N 02

Gua del programador (slo para los que lleguen a instancia de examen final).
NOTA: En esta gua se debe explicar claramente los distintos tpicos que hacen a los detalles del sistema y su instalacin (descripcin clara de cada librera y funcin, listado de mensajes de error con sus correspondientes soluciones, requisitos y mtodos de instalacin.). Debe entregarse con formato libre .odt (Open Document Text). Licencia de distribucin NOTA: En este documento se debe presentar toda la informacin pertinente al tipo de licencia requerida para la distribucin del software (GNU, Open Source, GPL, etc.). Debe entregarse con formato libre .odt (Open Document Text).

NOTA: Bajo ningn concepto se permitirn distribuciones de tipo propietario o que no incluyan los cdigos fuentes y la documentacin de licencias correspondientes..

CONSIGNAS PARA LA ENTREGA

La documentacin mnima a presentar est integrada por: Todo el trabajo prctico deber ser entregado en un archivo comprimido llamado LAB2 apellido de alumno TP 2.ZIP, que incluya: Archivos fuentes: cbp, cpp, h. Otros archivos imprescindibles para la compilacin y el funcionamiento del sistema.

Archivos grficos (slo es posible el uso de formato BMP). Archivos de sonido (mp3 o wav). Archivos de fuentes TTF (debern ser fuentes de uso libre).
Manual del usuario (slo si se llega a instancia de examen final). Manual del programador (slo si se llega a instancia de examen final). Licencia de distibucin. Crditos de otros autores.

PRODUCTO

Un proyecto de Code:Blocks con los siguientes elementos:


Archivo de proyecto .cbp. Archivo principal con la funcin int main() con extensin .cpp. Archivos de biblioteca con extensin .h. Archivos complementarios necesarios para la compilacin del sistema.

PROCESO
Etapa 1: Organizacin

Organzate! Sin orden no podrs alcanzar los objetivos. Recuerda que tienes pocas clases para entregar tu produccin.

Lleva un cuaderno de bitcora donde registres todos los datos que te


resulten relevantes para el desarrollo de la tarea (ideas que se te vayan ocurriendo, etc.). Crea una carpeta en tu disco, donde puedas guardar todo el material que consideres necesario para tu sistema.

Etapa 2: Diseo de la interfase

No te apresures, piensa.

Dedica tiempo a ordenar tus ideas. Lee bien esta gua, y asegrate de haber entendido bien todo lo que se te pide.

LAB II

Profesor: Rubn Calabuig OOP: Videojuego.

TP Integrador N 02

Anota en la bitcora todo lo que se te vaya ocurriendo. Asgnale niveles jerrquicos a lo que vayas anotando. Repasa lo escrito. En papel haz un esquema de los niveles de men que necesitas, y de las opciones que figuran en cada uno de ellos.

Etapa 3: Prototipo del sistema de mens


Prepara en Code:Blocks un prototipo del sistema de mens. Prubalo y corrgelo hasta que veas que funciona aceptablemente. NO TE OLVIDES DE: Validar todos los ingresos. Trabajar con mdulos pequeos. Poner cada clase en una librera independiente. Documentar todos los archivos, clases y mtodos.

Etapa 4: Diseo de las clases


Revisa nuevamente los requisitos datos mnimos y relacinalos con los objetos que formarn parte de tu videojuego. Disea las clases que creas necesarias. RECUERDA QUE

Las caractersticas y compartimientos que tiene una persona, no son las mismas que
las que tienen una piedra, un rbol, un perro, un avin, un contador de vueltas o un medidor de tiempo ( Piensa en objetos no en funciones).

Etapa 5: Diseo de las entradas y salidas


Prepara en Code:Blocks un prototipo de las pantallas de ingresos de datos y salida de informacin (listados, ayudas, ingresos de datos, mensajes de error, indicadores, etc.) Prubalo y corrgelo hasta que veas que funciona aceptablemente. NO TE OLVIDES DE: Validar todos los ingresos. Trabajar con mdulos pequeos. Poner cada clase en una librera independiente. Documentar todos los archivos, clases y mtodos.

Etapa 6: Diseo de los archivos


Revisa nuevamente los requisitos datos mnimos. Disea los archivos que creas necesarios.

RECUERDA QUE No es lo mismo guardar un listado de nombres de personas con sus mejores puntajes, que guardar todo los datos que necesitas para reanudar un juego suspendido.

Etapa 7: Diseo de las ayudas


Prepara en Code:Blocks un prototipo de los objetos que te permitan obtener ayuda en todo momento. Prubalo y corrgelo hasta que veas que funciona aceptablemente. NO TE OLVIDES DE: Validar todos los ingresos. Trabajar con mdulos pequeos. Poner cada clase en una librera independiente. Documentar todos los archivos, clases y mtodos.

Etapa 8: Integracin
Integra en Code:Blocks todos los prototipos desarrollados en las etapas anteriores. Prueba y ajusta la integracin. NO TE OLVIDES DE: Validar todos los ingresos. Trabajar con mdulos pequeos. Poner cada clase en una librera independiente. Documentar todos los archivos, clases y mtodos.

RECURSOS
Esta Gua: "Lab2 Trabajo Prctico Integrador 1 Pautas 2011.odt Curso de Cpp - Pozo Coronado.pdf Introduccin a la OOP - Grupo EIDOS.pdf

LAB II

Profesor: Rubn Calabuig OOP: Videojuego.

TP Integrador N 02

Sitio de descarga gratuita de LibreOffice Org en espaol.

C++ con clase Excelente sitio de programacin Coronado.

en C y C++ de Salvador Pozo

Curso de C++ Libro de C++ para descargar --> Autor: Salvador Pozo Coronado.

Code:Blocks IDE multiplataforma y multilenguaje Open Source. Sitio Oficial.

Libreras SDL Conjunto de libreras grficas diseadas por Sam Lantinga.

Adn++ Sistema de clases diseadas a partir de las libreras SDL por Rubn Calabuig.

Foxti Reader: Lector de archivos PDF (Portable Document Format), es una gran alternativa, aunque su licencia no es libre, sino freeware. 7Zip Programa libre para la compresin de archivos tipo ZIP

Computadora

Acceso a Internet

PACIENCIA Y SOBRE TODO

EVALUACIN
La nota de este trabajo se obtendr de los siguientes tpicos: Compilacin: 2 Ejecucin e interactividad: 2 Paradigma: 2 Documentacin: 2 Cumplimiento de todas las consignas: 2 La nota mnima de aprobacin es 6 (seis) puntos. Nota: los trabajos entregados fuera de plazo, sern aceptados en fechas acordadas con la ctedra. En los casos de entrega fuera de plazo, se descontarn 2 puntos. No se aceptarn trabajos vencidos estos plazos.

You might also like