29 ago 2004

29/8/04: Preparación

Diario de Guerra de Alejandro González, Alias "WaaghMan". Vigesimosegunda anotación:



Según parece, el padre de Héctor está dispuesto a ser mi director de proyecto (o a asignarme a alguno), así que me he puesto a trabajar un poco ya en el PFC.



Mi primer paso, y de enormes consecuencias, ha sido crear un nuevo usuario en Windows XP.



Esto parece poco, pero significa mucho: No habrá icono del eMule, no habrá MSN Messenger en el que recibir conversaciones, y no habrá enlaces al fotforo. En resumen, nada que pueda desconcentrarme de mi trabajo (al menos que aparezca en pantalla). Yo soy una persona que se concentra rápidamente, pero también pierdo la concentración con mucha facilidad. Así que cuantas menos interrupciones mejor.



Una vez hecho eso, y configurado adecuadamente el nuevo usuario (fondo de pantalla y apariencia, eso es obligatorio), he hecho unas interfaces para las clases que son ya prácticamente definitivas por mucho que cambie el diseño.



Por si a alguien le interesa, pondré un ejemplo de un .H de una de las clases. Está en C++:



#ifndef EXTREMIDAD_H

#define EXTREMIDAD_H

/*

Extremidad.H

------------

Autor: Alejandro González



Definición de la clase extremidad



Versiones:

2 - 29/8/04

-Añadidos los métodos setPuntoCentral y getPuntoCentral

-Añadido el constructor de copia en la parte privada

-Añadido un constructor que recibe un manejador XML

1 - 28/8/04

-Definición básica de la clase extremidad



*/

#include

#include

using namespace std;



class Extremidad;



#include "XML/tinyxml.h"

#include "articulacion.h"

#include "../Engine/Vector2D.h"





//Clase extremidad: Una extremidad es una parte del cuerpo del personaje que puede ser animada. Pueden enlazarse

// entre ellas mediante las articulaciones.

class Extremidad

{

public:

Extremidad(const string &imagen,const string &tipo,const string &descripcion);

Extremidad(const TiXmlHandle &);

virtual ~Extremidad();

virtual void addArticulacion(Articulacion *);

virtual void enlazarExtremidad(const unsigned int numarticulacion,Extremidad *);

virtual void setAnguloRelativo(const float);

virtual void setPuntoCentral(const Vector2D &);

// Métodos Selectores

virtual unsigned int getNumArticulaciones() const;

virtual Articulacion *getArticulacion(const unsigned int numarticulacion);

virtual const Articulacion *getArticulacion(const unsigned int numarticulacion) const;

virtual const string &getStrImagen() const;

virtual const string &getStrTipo() const;

virtual const string &getStrDescripcion() const;

virtual const Vector2D &getPuntoCentral() const;

virtual int getAncho() const;

virtual int getAlto() const;

virtual float getAnguloRelativo() const;

protected:

vector<> articulaciones;

Vector2D puntoCentral;

string imagen,tipo,descripcion;

int ancho,alto;

float anguloRelativo;

private:

Extremidad(Extremidad &) {}

};



#endif





Como podéis ver, bastante limpito todo, con montones de variables y métodos const para que todo cuadre. Se echa en falta más lineas de comentarios en la declaración de métodos, pero eso irá más tarde.



Notar que aunque está hecho el .H, ni siquiera existe aún el .CPP correspondiente. Sólo estoy haciendo las interfaces para comprobar que no hay problemas graves de diseño que puedan ocasionar problemas más tarde.



El diseño del motor gráfico será similar al LittleEngine que usé en el LittleRacersv2, aunque se reducirán sus posibilidades y se estructurará un poco mejor la clase principal del engine, para que no tenga decenas de métodos diferentes como posee el actual.



Por último, he estado pensando cómo haré los gráficos de los personajes. Tras un par de intentos, he decidido que cogeré imágenes de series como Gundam o Evangellion, y mediante la herramienta trazado del photoshop, haré un contorno similar para después trabajar con él. El problema de coger la imagen directamente sería que nunca estaría en la perspectiva deseada para el dibujo, y además así se controlan un poco mejor los colores utilizados.



Por el momento la cosa chuta, y aunque ya me he encontrado un par de incongruencias en el diseño, las he resuelto sin demasiada dificultad. Veamos que tal se comporta más adelante...

No hay comentarios: