;---------------------------------------------------------------------------------
; D I S P L A Y
;---------------------------------------------------------------------------------
(setf Display (make-array '(40 40):initial-element '_)) ; Espacio muestral
;---------------------------------------------------------------------------------
; Mostrar el contenido de la matriz de ceros y unos
;---------------------------------------------------------------------------------
(defun MuestraCuadricula () (print Display) )
;---------------------------------------------------------------------------------
; SE CREAN LOS NUEVOS TIPOS DE DATO
;---------------------------------------------------------------------------------
;(defstruct triangulo
; (x 28)
; (y 6)
;)
(defclass figura ()
(
(x :accessor posicion_x :initarg :x)
(y :accessor posicion_y :initarg :y)
(Libre :accessor estado-Libre :initarg :Libre)
(EstaSobre :accessor estado-EstaSobre :initarg :EstaSobre)
(EstaBajo :accessor estado-EstaBajo :initarg :EstaBajo)
)
)
(defclass Triangulo (figura) () )
(defclass Cuadro (figura) () )
;---------------------------------------------------------------------------------
; SE MANDA LLAMAR AL MODULO DE GRAFICACION
; X=renglon Y=columna
;---------------------------------------------------------------------------------
;(setf XTriangulo 28) (setf YTriangulo 6)
;(setf XCuadro 28) (setf YCuadro 15)
(defun ColocaFiguras ()
(setf Fig_Triangulo (make-instance 'Triangulo :x 28 :y 06) )
(setf Fig_Cuadro (make-instance 'Cuadro :x 28 :y 15) )
(print Fig_Cuadro)
;(Dibuja Fig_Cuadro)
;(DibujaTriangulo XTriangulo YTriangulo)
;(DibujaCuadro XCuadro YCuadro)
;(MuestraCuadricula)
(setf x 0) ; solo para inhibir el doble print display
)
;===================================================================================================
;===================================================================================================
; A R E A D E D I B U J O
;===================================================================================================
;===================================================================================================
;___________________________________________________________________
; Dibuja el cuadro
;___________________________________________________________________
(defun Dibuja (X Y)
(dotimes (k 6)
(setf (aref Display X (+ Y k)) 1) ; Parte superior
(setf (aref Display (+ X 5) (+ Y k)) 1) ; Parte inferior
)
(dotimes (k 5)
(setf (aref Display (+ X k) Y) 1) ; Parte izquierda
(setf (aref Display (+ X k) (+ Y 5)) 1) ; Parte derecha
)
)
;___________________________________________________________________
; Dibuja el triAngulo
;___________________________________________________________________
(defun DibujaTriangulo (X Y)
; DIAGONAL
(setf renglon 0)
(dotimes (k 5)
(setf (aref Display (+ X renglon) (+ Y renglon)) 1)
(setf renglon (+ renglon 1))
)
; VERTICAL
(setf renglon 0)
(dotimes (k 5)
(setf (aref Display (+ X renglon) Y) 1)
(setf renglon (+ renglon 1))
)
; BASE
(dotimes (k 6)
(setf (aref Display (+ X 5) (+ Y k)) 1)
)
(setf (aref Display 1 5) 7)
)
;___________________________________________________________________
; Se genera un valor mayor que 5 y menor que 34 para garantizar que
; la figura ( de longitud 6 ) siempre va a quedar bien definida
;___________________________________________________________________
(defun ObtenValor()
(loop
(setq X (random 39))
(if (and (>= X 6) (<= X 33)) (return X))
)
)