Qué puntos en contra y a favor veis en esta forma de programar?
Pregunto por el archivo camara.cpp
area.hpp
#ifndef _AREAHPP_
#define _AREAHPP_
struct Area {
int x;
int y;
int w;
int h;
};
#endif
camara.hpp
#ifndef _CAMARAHPP_
#define _CAMARAHPP_
#include "area.hpp"
#include <iostream>
using namespace std;
class CamaraGame{
private:
Area CArea;
int LW;
int LH;
public:
CamaraGame(int _mw,int _mh,int _x,int _y,int _h,int _w);
bool Move(int x,int y);
bool ResizeLimit(int _lw,int _lh);
Area Get();
};
#endif
camara.cpp
#include "camara.hpp"
//
CamaraGame::CamaraGame(int _mw,int _mh,int _x,int _y,int _w,int _h){
if(_x>=0)CArea.x=_x;
else {
CArea.x=0;
cout << "\nERROR CAMARA 0007: valor inferior a 0, se le asigna 0\n";
}
if(_y>=0)CArea.y=_y;
else {
CArea.y=0;
cout << "\nERROR CAMARA 0008: valor inferior a 0, se le asigna 0\n";
}
if(_w>=0)CArea.w=_w;
else {
CArea.w=0;
cout << "\nERROR CAMARA 0009: valor inferior a 0, se le asigna 0\n";
}
if(_h>=0)CArea.h=_h;
else {
CArea.h=0;
cout << "\nERROR CAMARA 0010: valor inferior a 0, se le asigna 0\n";
}
if(_mw>=0)LW=_mw;
else {
LW=0;
cout << "\nERROR CAMARA 0011: valor inferior a 0, se le asigna 0\n";
}
if(_mh>=0)LH=_mh;
else {
LH=0;
cout << "\nERROR CAMARA 0012: valor inferior a 0, se le asigna 0\n";
}
};
bool CamaraGame::Move(int _x,int _y){
if(_x<0){
_x=0;
cout << "\nERROR CAMARA 0003: valor inferior a 0, se le asigna 0\n";
}
if(_y<0){
_y=0;
cout << "\nERROR CAMARA 0004: valor inferior a 0, se le asigna 0\n";
}
if(_x+CArea.w>LW){
_x=LW-CArea.w;
cout << "\nERROR CAMARA 0005: valor superior a lo permitido se le asigna " << _x << "\n";
}
if(_y+CArea.h>LH){
_y=LH-CArea.h;
cout << "\nERROR CAMARA 0006: valor superior a lo permitido se le asigna " << _y << "\n";
}
CArea.x=_x;
CArea.y=_y;
return true;
}
bool CamaraGame::ResizeLimit(int _w,int _h){
if(_w>=0)LW=_w;
else {
LW=0;
cout << "\nERROR CAMARA 0001: valor inferior a 0, se le asigna 0\n";
}
if(_h>=0 )LH=_h;
else {
LH=0;
cout << "\nERROR CAMARA 0002: valor inferior a 0, se le asigna 0\n";
}
return true;
}
Area CamaraGame::Get(){
return CArea;
}
¿A que te refieres?
Saludos ;D
a los mensajes por consola cuando los valores no están en el rango necesario para que todo funcione bien :)
Lo cierto es que no se ve muy bien que parametros hay que pasarle a las funciones, sobre todo en camaragame.
xafi, veo demasiados archivos no? No te parece demasiada carga emplear un archivo (area.hpp) únicamente para declarar una estructura? :S
Respecto a lo otro no te puedo ayudar, pero como dice daniyo, son bastante confusos los nombres de los argumentos pasados a las funciones tio xD.
Un saludo y cuidate mucho :)
Si tenés muchas estructuras chicas, armate un .hpp con el nombre Types por ejemplo, y poné todo ahí ...
Area diría que la declares clase, le agregues algunos operadores y un constructor, por que vá a permitirte hacer algo como esto : http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Flanguage%2Fref%2Fcplr388.htm
CamaraGame::CamaraGame(int _mw,int _mh,int _x,int _y,int _w,int _h): CArea(_x,_y,_w,_h,_mw,_mh)
Y después arrancás a verificar (que también, eso luce bastante "optimizable")
Por cierto, lo de los guiones bajos es algo que se vé feo en este contexto de los parámetros (yo tenía esa horrible costumbre, pero con variables privadas y que consideraba "privadas" - léase : encapsulamiento se fue de vacaciones - , me dá cáncer recordarlo x'D), te diría que cambies el estilo de nombramiento de variables ... relajalo en parámetros, para los internos de la clase podés estar prefijeando m, y con eso indicás "mine" como por ejemplo mWidth (tampoco abuse de este prefijo)
Y un consejo más personal? no mezcles idiomas en el código :S
Saludos.
La verdad que me hice un lío en los nombres de los parámetros.
Lo mezclar idioma ya estoy solucionando.
Gracias por los consejos los pondré en práctica.