Ver Mensaje Individual
  #3  
Antiguo 28-05-2024
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 360
Reputación: 3
navbuoy Va por buen camino
Gracias por responder Neftali

te cuento, el bucle de dibujado de rectangulos/hexagonos es asi



Código:
	

#define ICON_WIDTH 76
#define ICON_HEIGHT 76

for (int y = 0; y < 17; ++y)
	{
		for (int x = 0; x < 12; ++x)
		{


			TPoint pos = PosPt(x, y);
                        celda[x][y].rect = TRect(pos.x, pos.y, pos.x + ICON_WIDTH, pos.y + ICON_HEIGHT);
	

			if(color == 1) TABLERO->Canvas->Draw(pos.x, pos.y, hexbitmap1->Picture->Graphic);
			else if(color == 2) TABLERO->Canvas->Draw(pos.x, pos.y, Image20->Picture->Graphic);

			if(y%2 == 0) TABLERO->Canvas->Draw(pos.x, pos.y, small_hex_orange->Picture->Graphic);
                 }
       }
los if son simplemente un control para pintar diferentes graficos de hexagonos dependiendo del valor "color" que le pases a la funcion de pintado

y "celda" esta definido asi, aunque tiene otras variables que aun no uso la que nos compete es "TRect rect" que como es obvio, almacena las coordenadas del hexagono/rectangulo para luego hacer la comprobacion de PtInRect()

Código:
struct uni {
			  struct {

						TRect rect;
						bool flag;
						int icon;
						int owner;
						int energy_level;
						int faction;
						struct conv convoy[8];
			  } celda[12][17];

			 }  UNIVERSE[MAX_UNIVERSE];
Responder Con Cita