FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
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. |
#2
|
|||
|
|||
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); } } 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]; |
#3
|
|||
|
|||
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? |
#4
|
|||
|
|||
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: 28-05-2024 a las 16:35:07. |
#5
|
||||
|
||||
Cita:
Si tienes 11 filas (X) y 12 columnas (Y), una posición Z, debería devolverte un indice con esta fórmula:
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. |
#6
|
|||
|
|||
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 |
#7
|
|||
|
|||
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 Última edición por navbuoy fecha: 30-05-2024 a las 07:28:20. |
|
|
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 |
|