Ver Mensaje Individual
  #9  
Antiguo 05-11-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Pues yo abogo porque un cuadrado esté formado por 2 lineas nada más .

La idea es que esas líneas son las que estarían al Norte y al Oeste del centro del cuadrado, y dos Vecinos, VecinoSur, VecinoEste.

Supongo que no se entiende, aqui va pintado un Timbiriche de 4 casillas Cada color representa un solo cuadrado.
Código:

 -  -
|1 |2
 -  -
|3 |4

Ya sé que queda Abierto por la derecha y por abajo, veamos la declaración en delphi:
Código Delphi [-]
type
Tcuadrado = class;

Tcuadrado = Class(Tobject)
public
   Norte: Boolean;
   Oeste:Boolean;
   VecinoSur:Tcuadrado;
   VecinoEste:Tcuadrado;
end;

Si VecinoSur es nil significa que ese lado corresponde con el borde inferior del Timbiriche.

Si VecinoEste es nil significa que ese lado corresponde con el borde Derecho del Timbiriche.

Para pintar el borde izquierdo del timbiriche, pondríamos a true el Oeste de ese cuadro.
Para pintar el borde superior del timbiriche, pondríamos a true el Norte de ese cuadro.

Para que se cierre un cuadrado comprobamos los siguientes elementos:
- Norte = True
- Oeste = True
- VecinoSur = nil ó bien que VecinoSur.Norte = True
- VecinoEste =nil ó bien que VecinoEste.Oeste = True

Personalmente lo veo conceptualmente más claro[...] una vez que se ha entendido el concepto

Quizás declararlo como TObject sea demasiado, quizás con punteros sería más eficiente, por claridad, lo pongo así.

PD: Desarrollar esta idea surge de las aportaciones de roman y Delphius, ya que tener claro qué cuadrado se va a pintar, y acceder a sus vecinos es bastante engorroso, quizás este híbrido pueda servir de ayuda.

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: 05-11-2005 a las 19:28:53.
Responder Con Cita