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