FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Bien pensado, hace falta:
Para poder navegar y propagar los cuadrados cerrados. Me refiero a cuando se cierra un cuadrado y se puede seguir cerrando otros cuadros más. Aquí se necesita tener las direcciones de los demás cuadrados y comprobar hacia donde se puede propagar el cierre de cuadros. saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 06-11-2005 a las 01:37:09. |
#2
|
||||
|
||||
Con respecto a la inteligencia artificial del juego de timbiriche, leí algunos artículos y en realidad no es nada sencillo programarlo; hay que meterse con árboles de búsqueda, heurísticas y lo propio de la inteligencia artificial, sin embargo encontré esta sencilla propuesta:
Cita:
Dot & Boxes |
#3
|
|||
|
|||
Hola, gracias por sus respuestas, he estado revisando con detenimiento cada una de las ideas expuestas, pero no alcanzo a comprenderlas del todo ya que soy relativamente nuevo en esto, además de que se me dificulta algo , pero la lucha le hago , si pudieran explicarme las ideas aún mas detalladas se los agradecería . En lo que respecta a las ideas que tenía para realizar este programa se me atraviesa un inconveniente; les expongo la idea:
Código:
pv:=0; ph:=0; for a := 0 to 5 do begin for b := 0 to 4 do begin Imagenes[a,b]:=TShape.Create(Self); Imagenes[a,b].Parent := Form1; Imagenes[a,b].Left := ph+10; Imagenes[a,b].Top := pv+10; Imagenes[a,b].height := 7; Imagenes[a,b].width := 7; Imagenes[a,b].Shape := stCircle; Imagenes[a,b].OnMouseDown:= CirclesMouseDown; Imagenes[a,b].OnMouseMove:= CirclesMouseMove; pv:=pv+50; if b=4 then begin pv:=0; end; end; ph:=ph+50; end; |
#4
|
||||
|
||||
En qué tienes dudas, y cual de las alternativas te gusta más, porque hay distintas formas de hacerlo en este mismo hilo.
Por cierto, siempre puedes hacer referencia a través de Imagenes[fila, columna]. Veo que estas intentando hacer el cuadriculado mediante TShapes, te aconsejo que busques algún componente ya hecho. En mi caso he usado el TLMDSimplePanel de las libreria LMDTOOLS (direccion en google), son gratis, y permite dibujar un panel, poniendo las lineas por separado, es decir, pinto los bordes de blanco, y cuando se hace clic en un lateral, pinto ese lado nada más de color negro. Pintar es simplemente decirle al panel BorderSides := BorderSides + bsLeft para añadir el borde izquierdo. Si tienes que implementarlo todo a mano.... mi más sincero pésame saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 09-11-2005 a las 10:56:44. |
#5
|
||||
|
||||
Cita:
Yo también preguntaría cuáles son las dudas específicas y de qué opción le interesa. Creo que nosostros ya hicimos nuestro esfuerzo. Ahora le toca a él. // Saludos |
#6
|
|||
|
|||
Hola, si me pudieran explicar Lepe y Roman sus metodos un poco mas a fondo ademas de como asociar la parte gráfica con el codigo que me proponen si no es mucha molestia.
En lo de hacer referencia a los objetos lo que pasa que al momento de seleccionarlo, ya en tiempo de ejecución, no encuentro la manera de saber cual de los componentes creados, los circulos en este caso, estoy seleccionando. Si me pudieran explicar tambien lo como hacer que las coordenadas de los pixeles me las de de acuerdo a la posicion que estan en la forma y no con respecto al objeto creado . Gracias . |
#7
|
||||
|
||||
En lo que me toca, ya he dicho que uso un panel al que se le pueden poner las lineas independientes, y la parte lógica (la clase TCuadro) informa mediante un evento cuando se cierra un cuadro a la parte gráfica. En ese evento es cuando repinto el fondo de un color si está cerrado o no.
El dibujar una linea, se hace en la parte gráfica, al hacer clic cerca de los bordes , detecto qué borde es y directamente lo pinto, despues informo a TCuadro, y este propaga un mensaje por sus vecinos para ver si se deben cerrar o no. Básicamente es como una onda expansiva, en cuanto a eficiencia no es nada bueno, pero son las primeras pruebas que he realizado. Mi Tcuadro queda así (aunque no descarto cambios):
Sur y Este, lo que hacen es ver si su vecino tiene el Oeste marcado, o si es el borde inferior/derecho del Timbiriche Al inicio, VecinoXXXXX será nil, y al crear la cuadrícula es cuando se unen unos con otros. Lineas y NLineas, son propiedades de ayuda, para ver qué lineas tiene pintada un cuadro determinado. Contro es el control de la interfaz gráfica al que está asociado, Mi Panel. Una vez creado el Panel en tiempo de ejecución, y la clase, los asocio mediante esa propiedad, igual que se hace con un TAction. Por último, tenemos el evento de cierre, que me indica el cuadro que se ha cerrado.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
|
|