Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo Hace 4 Semanas
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.340
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Es difícil saber qué está fallando sin más código.
Hay referencias ahí que no están presentes (celda[x][y]).

Deberías generar un log con la posición de los hexágonos creados y el punto donde estás pulsando con el ratón, para detectar el error.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #2  
Antiguo Hace 4 Semanas
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 32
Poder: 0
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
  #3  
Antiguo Hace 4 Semanas
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 32
Poder: 0
navbuoy Va por buen camino
neftali, no se muy bien lo que he tocado pero ya lo he arreglado

me parece que lo que cambie es las coordenadas de los bucles de 17 puse 15 y ahora si que detecta todas las celdas

podria ser eso?
Responder Con Cita
  #4  
Antiguo Hace 3 Semanas
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 32
Poder: 0
navbuoy Va por buen camino
una cosa mas Neftali, si sabemos que los hexagonos van numerados en los bucles de izquierda a derecha y de arriba a abajo como haria para calcular la posicion del registro en la BD si tengo las coordenadas x,y de la celda de pantalla (hexagono)? son para X = 11 filas y para Y = 12 columnas el tablero

seria algo asi como X + (X * Y) ???


Te muestro como queda ahora


Última edición por navbuoy fecha: Hace 3 Semanas a las 16:35:07.
Responder Con Cita
  #5  
Antiguo Hace 3 Semanas
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.340
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por navbuoy Ver Mensaje
una cosa mas Neftali, si sabemos que los hexagonos van numerados en los bucles de izquierda a derecha y de arriba a abajo como haria para calcular la posicion del registro en la BD si tengo las coordenadas x,y de la celda de pantalla (hexagono)? son para X = 11 filas y para Y = 12 columnas el tablero

seria algo asi como X + (X * Y) ???

Si tienes 11 filas (X) y 12 columnas (Y), una posición Z, debería devolverte un indice con esta fórmula:

Código Delphi [-]
Z = ((Y-1) * 12) + X


Por ejemplo:
* Si pulsas la casilla 6 de la primera fila (6,1) => Z=((1-1)*12)+6 => Z=6
* Si pulsas la casilla 2 de la segunda fila (2,2) => Z=((2-1)*12)+2 => Z=14


NOTA: Si el primer índice es el 0, a la Z deberás restarle 1.

Por cierto, ¿la pantalla la has diseñado tú?
es espectacular!
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo Hace 3 Semanas
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 32
Poder: 0
navbuoy Va por buen camino
Si Neftali.... la hemos hecho yo y un dibujante de Peru me hizo los hexagonos, algunos de los iconos los cogimos de imagenes de naves de Google que habia asi de uso gratuito, esta un poco montado asi para ir viendo como quedaria aunque es posible que hagamos otros iconos de fichas para colocar en el tablero

El panel de Comprar/Vender tambien lo hizo mi amigo de Peru
Responder Con Cita
  #7  
Antiguo Hace 3 Semanas
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 32
Poder: 0
navbuoy Va por buen camino
Neftali en mi caso la formula no necesita el -1 ya que son coordenadas absolutas del propio array (que empieza en 0,0)

Código:
Z = ((Y) * 12) + X
ya veras cuando tenga algo mas programado para el juego, va a estar muy bien, tengo algunas cosas pensadas con mi amigo para añadirle otras funcionalidades

Última edición por navbuoy fecha: Hace 3 Semanas a las 07:28:20.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error muy raro con ntdll.dll moz_an Varios 8 05-01-2011 14:30:04
error raro 11_8_88 C++ Builder 1 03-12-2008 20:37:01
Un error raro..... Rafe Varios 3 28-07-2005 23:07:02
un error un poco raro merlin Conexión con bases de datos 2 19-07-2004 12:45:06


La franja horaria es GMT +2. Ahora son las 16:00:10.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi