]> git.llucax.com Git - z.facultad/75.07/algowars.git/blob - doc/ref/index-unit.html
Import inicial después del "/var incident". :(
[z.facultad/75.07/algowars.git] / doc / ref / index-unit.html
1 <HTML>\r
2 <H2>Unit Index</H2>\r
3 <dl>\r
4 <dt><li><A HREF=Armas.html>Armas</A></dt>\r
5 <dd>Contiene las armas que pueden ser usadas por las diferentes naves.<br>\r
6     <i>Cambios:</i>\r
7     <PRE>\r
8     10/11/00: Se agrega el manejo de excepciones para evitar un BUG en cMisilDirigido. Si el objetivo del misil\r
9               dirigido es destruido, la velocidad permanece constante y en mGetDebugInfo se informa que esta destruido.\r
10     27/11/00: Se le agrega el manejo de la velocidad maxima a la clase cArma y se agrega el Alcance del arma, cambiando\r
11               el anterior por la Duracion.\r
12     01/12/00: Se cambiaron las dimensiones de las armas para que los disparos sean mas "jugables".\r
13     </PRE></dd>\r
14 <dt><li><A HREF=Camara.html>Camara</A></dt>\r
15 <dd>Implementa una cámara que se encarga de representar los objetos en 2D.<br>\r
16     <i>Cambios:</i>\r
17     <PRE>\r
18     10/11/00: Se agrega el manejo de excepciones para evitar usar la camara cuando el cameraman fue destruido.\r
19               Para lograr esto se crea una excepcion (ECameramanDestruido) que se lanza cuando hay una excepcion\r
20               de violacion de acceso a memoria. Esta excepcion debe ser manejada por quien meneje la camara y puede\r
21               ser lanzada por mGetDebugInfo o mProyectar.\r
22     01/12/00: Se elimina el atributo aApertura porque era absolutamente inecesario.\r
23               Se cambia la estructura interna para que el filtrado de los objetos los realice un cFiltro.\r
24     07/12/00: Se agregan nuevos métodos (protegidos) para obtener información de la cámara para poder crear subclases,\r
25               para lo cual tambien se hace virtual el método mProyectar.\r
26     08/12/00: Se quita el método para setear el filtro y se agrega un contructor que admite un filtro para reemplazarlo.\r
27               Se cambia esta clase para que sea abstracta. Se deja la implementacion del método mProyectar para las\r
28               subclases exlusivamente ya que ahora es abstracto. La cámara frontal (que antes se implementaba en\r
29               esta unidad), ahora está implementado la unidad Camaras al igual que el resto.\r
30     </PRE></dd>\r
31 <dt><li><A HREF=Camaras.html>Camaras</A></dt>\r
32 <dd>Se implementan varias cámaras en diferentes direcciones.<br>\r
33     <i>Cambios:</i>\r
34     <PRE>\r
35     09/12/00: Se agrega la clase cCamaraMapa.\r
36     </PRE></dd>\r
37 <dt><li><A HREF=Coordenadas.html>Coordenadas</A></dt>\r
38 <dd>Implementa un sistema de coordenadas y metodos para rotarlo.<br>\r
39     <i>Cambios:</i>\r
40     <PRE>\r
41     28/10/00: Se agregaron métodos para modificar el sistema de coordenadas, asignandole a un versor\r
42               particular la direccion de un vector arbitrario (mSetI, mSetJ, mSetK).\r
43     </PRE></dd>\r
44 <dt><li><A HREF=Espacio.html>Espacio</A></dt>\r
45 <dd>Se encarga de controlar la interacción entre\r
46     las naves y el responsable de manejar el tiempo.<br>\r
47     <i>Cambios:</i>\r
48     <PRE>\r
49     05/10/00: Se corrigió para que utilice los nuevos metodos de cNaveEnemiga y cObjetoVolador\r
50               Se corrigió el método mComunicarPosicion para que solo se comunique la posicion\r
51               a las naves que estan en el campo de radar de la nave espia.\r
52     07/10/00: Se agregaron los métodos mDestruir y mActualizarObjetoVolador. Se modificó el\r
53               método mActualizar (para usar los nuevos) y el método mDetectarColisiones para\r
54               manejar de forma más eficiente y clara la destrucción de objetos sin energía.\r
55     03/11/00: Se sacan los metodos mIniciay y mParar, ya que el control del tiempo y el encargado\r
56               de actualizar el espacio sera el Controlador (Controller).\r
57               Se agregaron métodos para facilitar la manipulación del espacio:\r
58               mQuitarObjeto, mGetObjetos, mSetObjetos y mSetNavePropia\r
59     05/11/00: Se corrigió un BUG que hacia que siempre el espacio se inicialice con una lista vacia\r
60               y una nave propia estandar (en el constructor).\r
61     09/11/00: Se corrigió un BUG que hacía que la nave espia no pueda escapar, ya que se avisaba a si misma.\r
62               Tambien se hace que ignore otras naves espias que esten avisando para evitar problemas similares.\r
63               (en el método mComunicarPosicion).\r
64     10/11/00: Se reemplaza el método mNavePropiaDestruida por una excepción (ENavePropiaDestruida).\r
65               Es lanzada por el método mActualizar y otros metodos privados que utilizan la nave propia.\r
66     27/11/00: Se agrega el control de disparos de las naves enemigas en el método mActualizar\r
67     29/11/00: Se elimina el método temporal mActualizarNavePropia.\r
68     01/12/00: Se modifica el método mActualizar para manejar los disparos de la nave propia.\r
69     </PRE></dd>\r
70 <dt><li><A HREF=Filtro.html>Filtro</A></dt>\r
71 <dd>Es una clase abstracta que representa filtro que recibe una lista de objetos y devuelve otra filtrada.<br>\r
72     <i>Cambios:</i>\r
73     <PRE>\r
74     06/12/00: Se agregan nuevos métodos (protegidos) para obtener información del filtro para poder crear subclases,\r
75               para lo cual tambien se hace virtual el método mVisible.\r
76     08/12/00: Se cambia esta clase para que sea abstracta. Se deja la implementacion del método mVisible para las\r
77               subclases exlusivamente ya que ahora es abstracto. El filtro frontal (que antes se implementaba en\r
78               esta unidad), ahora está implementado la unidad Filtros al igual que el resto.\r
79     </PRE></dd>\r
80 <dt><li><A HREF=Filtros.html>Filtros</A></dt>\r
81 <dd>Se implementan varios filtro en diferentes direcciones.<br>\r
82     <i>Cambios:</i>\r
83     <PRE>\r
84     09/12/00: Se agrega la clase cFiltroMapa.\r
85     </PRE></dd>\r
86 <dt><li><A HREF=FormConfig.html>FormConfig</A></dt>\r
87 <dd>Formulario para configurar la aplicación</dd>\r
88 <dt><li><A HREF=FormMain.html>FormMain</A></dt>\r
89 <dd>Formulario principal de la aplicación<br>\r
90     <i>Cambios:</i>\r
91     <PRE>\r
92     29/11/00: Se agregan algunos controles gráficos con indicadores de energía y velocidad.\r
93               No se incluyen en una clase Vista porque son muy pequeños.\r
94     01/12/00: Se modifica levemente la interfaz.\r
95               Se agregan controles para los disparos y metodos pertinentes.\r
96     06/12/00: Se cambian minimamente los menúes, poniendo la parte del manejo\r
97               de escenarios en un submenú del menú Archivo.\r
98     08/12/00: Se termina de implementar la funcionalidad de los menúes\r
99                 Archivo -> Abrir ...\r
100                 Archivo -> Guardar ...\r
101                 Archivo -> Escenario -> Abrir ...\r
102                 Archivo -> Escenario -> Guardar ...\r
103               Se completa el 'destructor', ya que faltaban liberar bastantes\r
104               objetos.\r
105     </PRE></dd>\r
106 <dt><li><A HREF=Lista.html>Lista</A></dt>\r
107 <dd>Lista exactamente igual a TList, solo que el destructor tambien destruye\r
108     todos los objetos que contiene</dd>\r
109 <dt><li><A HREF=Meteorito.html>Meteorito</A></dt>\r
110 <dd>Representa un objeto volador básico. Tiene una velocidad constante.<br>\r
111     <i>Cambios:</i>\r
112     <PRE>\r
113     01/12/00: Se cambiaron las dimensiones por defecto para que los disparos sean mas "jugables".\r
114     </PRE></dd>\r
115 <dt><li><A HREF=Nave.html>Nave</A></dt>\r
116 <dd>Contiene una clase abstracta con elementos comunes a todas las naves.<br>\r
117     <i>Cambios:</i>\r
118     <PRE>\r
119     27/11/00: Se agrega toda la parte del manejo de disparos, agregándose los métodos mPuedeDispararLaser,\r
120               mPuedeDispararMisil, mPuedeDispararMisDir y mDisparar, además de varios atributos para manejar\r
121               los retardos de las armas. El método mDisparar se hace virtual ya que puede ser modificado por\r
122               las subclases para que cambie su mecanismo de disparos.\r
123     29/11/00: Se agregan métodos para obtener la cantidad de armamento que le queda a la nave para poder ser\r
124               mostrados (mGetMisiles y mGetMisilesDirigidos)\r
125     01/12/00: Se modifican levemente los metodos mPuedeDispararXxxx para que permitan disparar si el puntero\r
126               al Objeto Volador objetivo es nil.\r
127               Se Agregan los métodos mRetardarLaser, mRetardarMisil, mRetardarMisDir que resetea el contador\r
128               del retardo, mActualizarRetardos que resta el dT a los retardos, y mCrearLaserDisparado,\r
129               mCrearMisilDisparado y mCrearMisDirDisparado que crea el arma correspondiente (actualizando\r
130               retardos y todo lo que sea necesario) para que las subclases puedan escribir su propio mDisparar.\r
131               Se cambia el orden de los argumentos de mDisparar para aprovechar los argumentos por defecto.\r
132     08/12/00: Se sobreescribieron los métodos para establecer la velocidad y su módulo para evitar que se\r
133               sobrepase el límite de la velocidad máxima.\r
134     </PRE></dd>\r
135 <dt><li><A HREF=NaveEnemiga.html>NaveEnemiga</A></dt>\r
136 <dd>La clase cNaveEnemiga esta pensada como una clase abtracta. En ella se encuentran\r
137     características comunes a todas las naves enemigas.<br>\r
138       <i>Cambios:</i>\r
139     <PRE>\r
140     05/10/00: Se cambio el metodo mGetRadar por el metodo mDetectado, que devuelve true\r
141               si un objeto volador esta destro del campo de radar. De esta manera se logra\r
142               una abstracción mayor y un manejo mas intuitivo del radar.\r
143     </PRE></dd>\r
144 <dt><li><A HREF=NavePropia.html>NavePropia</A></dt>\r
145 <dd>Es la nave que será controlada por el jugador.<br>\r
146     <i>Cambios:</i>\r
147     <PRE>\r
148     05/10/00: Se corrigió el método mAcelerar porque tenía algunos bugs cuando la velocidad llegaba a cero.\r
149     01/12/00: Se implementan los disparon sobreescribiendo el método mDisparar de cNave y agregando algunos\r
150               atributos (aArmaSelect, aDisparando y aLockeado) y algunos métodos (mIntentarDisparo,\r
151               mSeleccionarArma, mSeleccionarArmaSig, mGetArmaSelect, mSetLockeado, mGetLockeado).\r
152               Se cambiaron las dimensiones de la nave para que los disparos sean mas "jugables".\r
153               Se cambia el orden de los argumentos de mDisparar para aprovechar los argumentos por defecto.\r
154               Se arreglaron un par de BUGs con punteros que apuntaba a objetos destruidos (aLockeado).\r
155     08/12/00: Se arregló una falla en el constructor que permitia crear la nave con una velocidad superior\r
156               a la máxima.\r
157     09/12/00: Se cambia el atributo disparando por un puntero a un arma que se disparara en el proximo turno.\r
158               También se cambia los métodos que lo utilizan y en particular se convierte el método\r
159               mIntentarDisparo en una función que devuelve dicho puntero para implementar la cámara en el arma.\r
160     </PRE></dd>\r
161 <dt><li><A HREF=NavesEnemigas.html>NavesEnemigas</A></dt>\r
162 <dd>Distintos tipos de Naves Enemigas<br>\r
163     <i>Cambios:</i>\r
164     <PRE>\r
165     27/11/00: Se realizan algunos cambios para adaptarse a la nueva implementacion de cNave con disparos.\r
166     01/12/00: Se cambiaron las dimensiones de la nave para que los disparos sean mas "jugables".\r
167               Se cambia el orden de los argumentos de mDisparar para aprovechar los argumentos por defecto.\r
168     </PRE></dd>\r
169 <dt><li><A HREF=Objeto.html>Objeto</A></dt>\r
170 <dd>Es una clase abstracta para agregar algunos métodos generales útiles\r
171     para el resto de las clases que implementemos. Podría considerarse una\r
172     extensión a la funcionalidad básica dada por TObject.</dd>\r
173 <dt><li><A HREF=ObjetoPersistente.html>ObjetoPersistente</A></dt>\r
174 <dd>Es una clase abstracta para hacer persistente un objeto.\r
175     Básicamente provee métodos para serialización.<br>\r
176     <U>NOTA:</U>\r
177     <PRE>\r
178       Es importante que el ID del objeto sea el primer atributo en la\r
179       serialización, de otra manera puede ser malinterpretado al des-\r
180       serializarlo.\r
181       El orden del resto de los atributos deben ser respetados también.\r
182       Aunque es bastante probable que fucione si están en otro órden,\r
183       no está 100% asegurado y si se hace en otro orden los resultados\r
184       pueden ser inesperados o pueden surgir errores.\r
185     <PRE></dd>\r
186 <dt><li><A HREF=ObjetoVolador.html>ObjetoVolador</A></dt>\r
187 <dd>Clase abstracta, implementa todas las funcionalidades básicas de los objetos voladores.\r
188     De esta van a derivar la mayor parte del resto de las clases.<br>\r
189     <i>Cambios:</i>\r
190     <PRE>\r
191     05/10/00: Se agregaron los métodos mGetDistancia y mColisiono. De esta manera se deja\r
192               a los objetos voladores manejar las colisiones mas intuitivamente.\r
193     30/10/00: Se agregó un atributo <b>aCoordenadas</b> para que se pueda orientar al objeto volador.\r
194     02/11/00: Se agregaron métodos para cambiar solamente el modulo de la velocidad, para cambiar solo\r
195               la direccion de la velocidad y para extraer directamente copias de los versores i, j, k y\r
196               para rotar el objeto volador en todas direcciones.\r
197               Los nuevos métodos son: mSetVelModulo, mSetVelDir, mGetVelModulo,\r
198                                       mGetI, mGetJ, mGetK, mRotarEnI,\r
199                                       mRotarEnJ, mRotarEnK\r
200     07/11/00: Se agrega un nuevo método (mSetPosicion) y se hace a público otro (mSetVelocidad) para\r
201               que se pueda cambiar la configuración (es temporal, se planea cambiar el sistema de\r
202               configuración del juego para que esto no sea necesario)\r
203     29/11/00: Se arregla un BUG en mSetVelModulo que no modificaba el modulo si la velocidad pasada\r
204               como argumento era menor que cero. En este caso el modulo de la velocidad se setea en 0.\r
205     02/12/00: Se cambio el dato que devuelve el método mDibujar. Ahora devuelve un tipo de dato enumerado\r
206               tObjetosVoladores. Todas sus subclases fueron actualizadas también.\r
207     08/12/00: Se agregan menúes para manejar la nueva vistas con varias camaras. Se agrega la opcion de\r
208               alta calidad en el menú vista. Se carga un escenario por defecto (si existe) al iniciar el\r
209               juego, el nombre de dicho escenario debe ser 'comun.eaw'.\r
210               Se agrega una nueva tecla para cambiar de cámara ('C'), además de las que se provee con las\r
211               teclas de atajo.\r
212     </PRE></dd>\r
213 <dt><li><A HREF=RegExpr.html>RegExpr</A></dt>\r
214 <dd>Implementación de expresiones regulares para Delphi</dd>\r
215 <dt><li><A HREF=SerializacionUtils.html>SerializacionUtils</A></dt>\r
216 <dd>Funciones útiles para complementar la utilización de la serialización en\r
217     este modelo en particular</dd>\r
218 <dt><li><A HREF=Tipos.html>Tipos</A></dt>\r
219 <dd>En esta unidad se definen todos los tipos que usaremos en el proyecto\r
220     Decidimos mantener los tipos por separado por el caso de que sea\r
221     necesario un cambio de implementacion.</dd>\r
222 <dt><li><A HREF=Vectores.html>Vectores</A></dt>\r
223 <dd>Es la implementación de un vector físico. Esta clase es el esqueleto de\r
224     la aplicación ya que todas las velocidades y posiciones son del tipo cVector.\r
225     Todos los calculos de movimientos, distancias, etc. se manejan con los metodos de esta clase<br>\r
226     <i>Cambios:</i>\r
227     <PRE>\r
228     05/10/00: Se corrigió el método mAddModulo para que al verificar el signo del modulo resultante,\r
229               si es negativo, setee el modulo a cero.\r
230     28/10/00: Se cambiaron todos los metodos en los que se realizan operaciones con el vector para\r
231               que devulvan un puntero a si mismo (para poder hacer asignaciones luego de la operacion).\r
232               Ahora todos los métodos son funciones\r
233     </PRE></dd>\r
234 <dt><li><A HREF=Vista.html>Vista</A></dt>\r
235 <dd>Interpreta y dibuja los datos del modelo en un formulario<br>\r
236     <i>Cambios:</i>\r
237     <PRE>\r
238     10/11/00: Se maneja la excepción para evitar usar la camara cuando el cameraman fue destruido (ECameramanDestruido).\r
239               Esta es propagada (por ahora) para que el controlador (formulario) frene el timer\r
240     02/12/00: Se mejoran los graficos usando transparencias en los bitmaps y se da la opcion de presentar\r
241               los graficos con transparencias (alta calidad) o no (a través del atributo aAltaCalidad y\r
242               los métodos mSetAltaCalidad, mSetBajaCalidad y mCambiarCalidad).\r
243               Se mejora la performance gracias a la nueva implementación de mDibujar, ya que los\r
244               bitmas se cargan una sola vez en memoria (en un array aBitmaps) en vez de cargarse\r
245               y liberarse cada vez que se actualiza la pantalla como sucedía anteriormente.\r
246               Se implementa el soporte de visualización de un objeto volador lockeado (utilizando\r
247               otra lista de bitmaps con los gráficos de los objetos lockeados, aBitmapsLockeados).\r
248     08/12/00: Se agregan múltiples cámaras: Derecha, Izquierda, Arriba, Abajo, Atrás, Del Misil. Para hacerlo\r
249               se agragega un array de camaras y un atributo que indica la camara actual. Tambien se agregan\r
250               métodos para cambiar la cámara actual, etc.\r
251               Se arregla el destructor que no liberaba todos los objetos.\r
252     09/12/00: Se reemplaza la vista del misil por una mas general (vista del arma) que permite ver a traves de\r
253               cualquier arma disparada. Se implementa correctamente esta vista.\r
254               Se agrega una vista tipo mapa. \r
255     </PRE></dd>\r
256 </dl></HTML>\r