;--------------------------------------------------------------------------------- ; 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)) ) )