Proyecto X-Soldiers V1 Mayo 2011
|
00001 #ifndef _CAJA_H_ 00002 #define _CAJA_H_ 00003 00004 //puede que utilizemos este fichero para definir una caja de colisiones 00005 struct Caja{ 00007 float x, y; 00008 00010 float w, h; 00011 00012 float derecha(){ return x + w; } 00013 float abajo(){ return y + h; } 00014 00015 bool colisionaCon(Caja & B){ 00016 if(x > B.x + B.w || B.x > x + w) 00017 return false; 00018 00019 if(y > B.y + B.h || B.y > y + h) 00020 return false; 00021 00022 return true; 00023 } 00024 }; 00025 00026 00027 struct Pj : public Caja{ 00028 00029 //int jug; 00030 00031 Pj(){ 00032 w = h = 48; 00033 // tipo = BLOQUE_VACIO; 00034 } 00035 00036 int tocado(Caja & B){ 00037 if(colisionaCon(B)){ 00038 int up, left, right, down; 00039 up = left = right = down = 0; 00040 00041 if(B.x < x && x < B.derecha() && B.derecha() < derecha()){ 00042 left = x - B.x; 00043 } 00044 00045 if(x < B.x && B.x < derecha() && derecha() < B.derecha()){ 00046 right = B.derecha() - derecha(); 00047 } 00048 00049 if(B.y < y && y < B.abajo() && B.abajo() < abajo()){ 00050 up = y - B.y; 00051 } 00052 00053 if(y < B.y && B.y < abajo() && abajo() < B.abajo()){ 00054 down = B.abajo() - abajo(); 00055 } 00056 00057 int horizontal = (left > right)? left : right; 00058 int vertical = (up > down) ? up : down; 00059 00060 return 1 + (int)(horizontal > vertical); 00061 00062 } 00063 return 0; 00064 } 00065 }; 00066 /* // 00067 #define BLOQUE_VACIO 0 00068 #define BLOQUE_NARANJA 1 00069 #define BLOQUE_AZUL 2 00070 #define BLOQUE_VERDE 3 00071 #define BLOQUE_ROJO 4 00072 #define BLOQUE_AMARILLO 5 00073 00074 struct Bloque : public Caja{ 00075 00076 int tipo; 00077 00078 Bloque(){ 00079 w = h = 48; 00080 tipo = BLOQUE_VACIO; 00081 } 00082 00083 int tocado(Caja & B){ 00084 if(colisionaCon(B)){ 00085 int up, left, right, down; 00086 up = left = right = down = 0; 00087 00088 if(B.x < x && x < B.derecha() && B.derecha() < derecha()){ 00089 left = x - B.x; 00090 } 00091 00092 if(x < B.x && B.x < derecha() && derecha() < B.derecha()){ 00093 right = B.derecha() - derecha(); 00094 } 00095 00096 if(B.y < y && y < B.abajo() && B.abajo() < abajo()){ 00097 up = y - B.y; 00098 } 00099 00100 if(y < B.y && B.y < abajo() && abajo() < B.abajo()){ 00101 down = B.abajo() - abajo(); 00102 } 00103 00104 int horizontal = (left > right)? left : right; 00105 int vertical = (up > down) ? up : down; 00106 00107 return 1 + (int)(horizontal > vertical); 00108 00109 } 00110 return 0; 00111 } 00112 }; 00113 */ 00114 00115 #endif /* _CAJA_H_ */