#lang racket/gui

(require "Matrices.rkt")
(require "Reglas-vecindad.rkt")
(require "Animat.rkt")
;;;;;;;;;;;;;;
(define elemento%
  (class color%
    (init-field
     (estado 0)
     (dureza 0)
     (olor 'objeto_tipo_olor)
     )
    (define/public set-olor
      (lambda (obj)
        (set! olor obj)
        ))
    (define/public get-olor
      (lambda ()
        olor
        ))
    (define/public get-rgb
      (lambda ()
        (let ((r (send this red))
              (g (send this green))
              (b (send this blue))
              (o (send this alpha))
              )
          (list r g b o)
          )
        ))
    (define/public get-color
      (lambda ()
        this ))
    (define/public get-estado
      (lambda ()
        estado ))
    (define/public get-dureza
      (lambda ()
        dureza ))
;;aquí se añaden los procedimientos de computación    
    (super-new)
    ))
;;Objetos del tipo OLOR
(define olor%
  (class object%
    (init-field
     (tipo 0)
     (intensidad 0)
     )
    (define/public get-olor
      (lambda ()
        (cons tipo intensidad) ))
    (define/public get-intensidad
      (lambda ()
        intensidad ))
    (define/public update-intensidad
      (lambda (valor);entero positivo o -1
        (set! intensidad
              (+ intensidad valor))
        ))
    (super-new)
    ))
;;;;;;;;;;;;
(define olor0;inodora
  (make-object olor% 0 0))
(define olor1;feromonas
  (make-object olor% 1 30))
(define olor2;comida
  (make-object olor% 2 10))
(define olor3;
  (make-object olor% 3 10))
;;Estado dureza olor R   G   B   O
(define blanco
  (make-object elemento% 0 0 olor0 255 255 255 1.0))
(define rojo
  (make-object elemento% 1 5 olor0 255 0 0 1.0))
(define verde
  (make-object elemento% 2 2 olor2 0 255 0 1.0))
(define azul
  (make-object elemento% 3 7 olor0 0 0 255 1.0))
(define negro
  (make-object elemento% 4 10 olor0 0 0 0 1.0))
;;;;;;;;;;;;;;
;;;;;;;;;;;;;;
(define entorno%
  (class object%
    (init-field
     (ff 0)
     (cc 0)
     )
    (define set-matriz
      (lambda (matriz)
        (let rows ((i 0)
                   (j ff))
          (if (= i j)
              matriz
              (let columnas ((m 0)
                             (n cc))
                (if (= m n)
                    (rows (add1 i) j)
                    (begin
                      (matriz-set! matriz i m blanco)
                      (columnas (add1 m) n))
                    )
                )
              )
          )
        ))
    (define/public set-configuracion
      (lambda ()
        (set! configuracion (es-configuracion))
        ))
    (define es-configuracion
      (lambda ()
        (map
         (lambda (fila)
           (map
            (lambda (obj)
              obj;
              )
            (vector->list fila))
           )
         (vector->list matriz-objetos)
         )
        ))
    (define/public set-locus!
      (lambda (f c obj)
        (matriz-set! matriz-objetos f c obj)
        #t
        ))
    (field
     (matriz-objetos
      (set-matriz
       (make-matriz ff cc)))
     (configuracion (es-configuracion))
     )
    (define/public get-matriz
      (lambda ()
         matriz-objetos ))
    (define/public get-dimensiones
      (lambda ()
        (cons ff cc) ))
    (define/public get-obj
      (lambda (x y)
        (matriz-ref matriz-objetos x y vector-ref)
        ))
    (define/public get-configuracion
      (lambda ()
        (es-configuracion) ))
    (define son-estimulos
      (lambda (e1 e2 e3 e4 e5 e6 e7 e8 orientacion)
        (cond
          ((eq? orientacion 'N) (values e1 e2 e3))
          ((eq? orientacion 'E) (values e3 e4 e5))
          ((eq? orientacion 'S) (values e5 e6 e7))
          ((eq? orientacion 'O) (values e7 e8 e1))
          )
        ))
    (define ley-basica
      (lambda (vec anim clave)
        (let* ((vec_obj (matriz-ref matriz-objetos (car vec) (cdr vec) vector-ref))
               (rgb_vec (send vec_obj get-rgb))
               )
          (cond
            ((eq? clave 'avanzar) (equal? rgb_vec (send blanco get-rgb)))
            ((eq? clave 'comer) (equal? rgb_vec (send verde get-rgb)))
            (else #f)
            )
          )
        ))
    (define/public procesar!
      (lambda (iter)
        (let rows
          ((i 0)
           (j ff)
           )
          (if (= i j)
              (set! configuracion (es-configuracion))
              (let columns
                ((m 0)
                 (n cc)
                 )
                (if (= m n)
                    (rows (add1 i) j)
                    (let ((Obj (matriz-ref configuracion i m list-ref))
                          )
                      (cond
                        ((is-a? Obj animat%)
                         (printf "Iteración-~a  " iter)
                         (let*-values
                             ([(v1 v2 v3 v4 v5 v6 v7 v8) (Moore i m (sub1 ff) (sub1 cc))]
                              [(obj-v1)
                               (matriz-ref 
                                configuracion (car v1) (cdr v1) list-ref)]
                              [(obj-v2)
                               (matriz-ref 
                                configuracion (car v2) (cdr v2) list-ref)]
                              [(obj-v3)
                               (matriz-ref 
                                configuracion (car v3) (cdr v3) list-ref)]
                              [(obj-v4)
                               (matriz-ref 
                                configuracion (car v4) (cdr v4) list-ref)]
                              [(obj-v5)
                               (matriz-ref 
                                configuracion (car v5) (cdr v5) list-ref)]
                              [(obj-v6)
                               (matriz-ref 
                                configuracion (car v6) (cdr v6) list-ref)]
                              [(obj-v7)
                               (matriz-ref 
                                configuracion (car v7) (cdr v7) list-ref)]
                              [(obj-v8)
                               (matriz-ref 
                                configuracion (car v8) (cdr v8) list-ref)]
                              [(vecinos-coord) (list v1 v2 v3 v4 v5 v6 v7 v8)]
                              [(vecinos-obj) (list obj-v1 obj-v2 obj-v3 obj-v4 obj-v5 obj-v6 obj-v7 obj-v8)]
                              [(accion vec anim)
                               (send Obj procesar! i m vecinos-coord vecinos-obj)]
                              )
                           (cond
                             ((eq? accion 'avanzar)
                              (when (ley-basica vec anim accion)
                                (let
                                    ((vec_obj (matriz-ref matriz-objetos (car vec) (cdr vec) vector-ref)) )
                                  (matriz-set! matriz-objetos (car vec) (cdr vec) Obj)
                                  (matriz-set! matriz-objetos i m vec_obj)
                                  )) )
                             ((eq? accion 'comer)
                              (when (ley-basica vec anim accion)
                                (matriz-set! matriz-objetos (car vec) (cdr vec) blanco)) )
                             ((eq? accion 'girar) )
                             )
                           (rows j j)
                           ) )
                        (else (columns (add1 m) n))
                        )
                      )
                    )
                )
              )
          )
        ))
    (super-new)
    ))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define M (make-object entorno% 50 50))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(send M set-locus! 2 2 negro)
(send M set-locus! 2 3 negro)
(send M set-locus! 2 3 negro)
(send M set-locus! 4 2 azul)
(send M set-locus! 4 3 azul)
(send M set-locus! 4 6 azul)
(send M set-locus! 4 7 azul)
(send M set-locus! 8 3 verde)
(send M set-locus! 8 4 verde)
(send M set-locus! 8 5 verde)
(send M set-locus! 9 3 verde)
(send M set-locus! 10 3 verde)
(send M set-locus! 14 15 negro)
(send M set-locus! 15 15 negro)

(send M set-locus! 12 22 verde)
(send M set-locus! 12 23 verde)
(send M set-locus! 12 23 verde)
(send M set-locus! 14 22 azul)
(send M set-locus! 14 23 azul)
(send M set-locus! 14 26 azul)
(send M set-locus! 14 27 azul)
(send M set-locus! 18 23 verde)
(send M set-locus! 18 24 verde)
(send M set-locus! 18 25 verde)
(send M set-locus! 19 23 verde)
(send M set-locus! 20 23 verde)
(send M set-locus! 24 35 verde)
(send M set-locus! 25 35 verde)

(send M set-locus! 22 2 verde)
(send M set-locus! 22 3 verde)
(send M set-locus! 22 3 verde)
(send M set-locus! 24 2 azul)
(send M set-locus! 24 3 azul)
(send M set-locus! 24 6 azul)
(send M set-locus! 24 7 azul)
(send M set-locus! 28 3 verde)
(send M set-locus! 28 4 verde)
(send M set-locus! 28 5 verde)
(send M set-locus! 29 3 verde)
(send M set-locus! 30 3 verde)
(send M set-locus! 34 15 negro)
(send M set-locus! 35 15 negro)

(send M set-locus! 30 26 azul)
(send M set-locus! 30 27 azul)
(send M set-locus! 30 28 azul)
(send M set-locus! 30 29 azul)
(send M set-locus! 30 30 azul)
(send M set-locus! 30 31 azul)
(send M set-locus! 30 32 azul)
(send M set-locus! 30 33 azul)
(send M set-locus! 30 34 azul)
(send M set-locus! 30 35 azul)
(send M set-locus! 30 36 azul)
(send M set-locus! 30 37 azul)
(send M set-locus! 29 37 azul)
(send M set-locus! 31 37 azul)

(send M set-locus! 29 26 negro);;
(send M set-locus! 29 27 negro);;
(send M set-locus! 29 28 negro);;
(send M set-locus! 29 29 negro);;
(send M set-locus! 29 30 negro);;
(send M set-locus! 29 31 negro);;
(send M set-locus! 29 32 negro);;
(send M set-locus! 29 33 negro);;
(send M set-locus! 29 34 negro);;

(send M set-locus! 33 26 azul)
(send M set-locus! 33 27 azul)
(send M set-locus! 33 28 azul)
(send M set-locus! 33 29 azul)
(send M set-locus! 33 30 azul)
(send M set-locus! 33 31 azul)
(send M set-locus! 33 32 azul)
(send M set-locus! 33 33 azul)
(send M set-locus! 33 34 azul)
(send M set-locus! 33 35 azul)
(send M set-locus! 32 35 azul)
(send M set-locus! 34 35 azul)
(send M set-locus! 35 35 azul)
(send M set-locus! 36 35 azul)
(send M set-locus! 32 26 azul)
(send M set-locus! 31 26 azul)
(send M set-locus! 36 26 azul)
(send M set-locus! 36 27 azul)
(send M set-locus! 36 28 azul)
(send M set-locus! 36 29 azul)
(send M set-locus! 36 30 azul)
(send M set-locus! 36 31 azul)
(send M set-locus! 36 32 azul)
(send M set-locus! 36 33 azul)
(send M set-locus! 36 34 azul)
(send M set-locus! 36 35 azul)
(send M set-locus! 36 36 azul)
(send M set-locus! 36 37 azul)
(send M set-locus! 36 38 azul)
(send M set-locus! 37 36 azul)
(send M set-locus! 38 36 azul)
(send M set-locus! 39 36 azul)

(send M set-locus! 8 26 azul)
(send M set-locus! 8 27 azul)
(send M set-locus! 8 28 azul)
(send M set-locus! 8 29 azul)
(send M set-locus! 8 30 azul)
(send M set-locus! 8 31 azul)
(send M set-locus! 8 32 azul)
(send M set-locus! 8 33 azul)
(send M set-locus! 8 34 azul)
(send M set-locus! 8 35 azul)
(send M set-locus! 7 35 azul)
(send M set-locus! 9 35 azul)
(send M set-locus! 10 35 azul)
(send M set-locus! 11 35 azul)
(send M set-locus! 7 26 azul)
(send M set-locus! 6 26 azul)
(send M set-locus! 11 26 azul)
(send M set-locus! 11 27 azul)
(send M set-locus! 11 28 azul)
(send M set-locus! 11 29 azul)
(send M set-locus! 11 30 azul)
(send M set-locus! 11 31 azul)
(send M set-locus! 11 32 azul)
(send M set-locus! 11 33 azul)
(send M set-locus! 11 34 azul)
(send M set-locus! 11 35 azul)
(send M set-locus! 11 36 azul)
(send M set-locus! 11 37 azul)
(send M set-locus! 11 38 azul)
(send M set-locus! 11 36 azul)
(send M set-locus! 13 36 azul)
(send M set-locus! 13 36 azul)

(send M set-locus! 25 15 azul)
(send M set-locus! 25 16 azul)
(send M set-locus! 26 13 azul)
(send M set-locus! 26 14 azul)
(send M set-locus! 26 17 azul)
(send M set-locus! 26 18 azul)
(send M set-locus! 27 15 azul)
(send M set-locus! 27 16 azul)

(send M set-locus! 40 15 negro)
(send M set-locus! 40 16 negro)
(send M set-locus! 41 13 negro)
(send M set-locus! 41 14 negro)
(send M set-locus! 41 17 negro)
(send M set-locus! 41 18 negro)
(send M set-locus! 42 15 negro)
(send M set-locus! 42 16 negro)

(send M set-locus! 39 25 negro)
(send M set-locus! 39 26 negro)
(send M set-locus! 39 27 negro)
(send M set-locus! 39 28 negro)
(send M set-locus! 39 29 negro)
(send M set-locus! 39 30 negro)
(send M set-locus! 39 31 negro)
(send M set-locus! 39 25 negro)
(send M set-locus! 40 25 negro)
(send M set-locus! 41 25 negro)
(send M set-locus! 41 24 negro)
(send M set-locus! 42 24 negro)
(send M set-locus! 43 24 negro)
(send M set-locus! 42 27 negro)
(send M set-locus! 43 27 negro)
(send M set-locus! 44 25 negro)
(send M set-locus! 44 24 negro)
(send M set-locus! 45 25 negro)
(send M set-locus! 44 26 negro)
(send M set-locus! 45 26 negro)
(send M set-locus! 44 27 negro)

(send M set-locus! 48 48 verde)
(send M set-locus! 48 47 verde)
(send M set-locus! 48 46 verde)
(send M set-locus! 48 45 verde)
(send M set-locus! 48 44 verde)
(send M set-locus! 48 43 verde)
(send M set-locus! 48 42 verde)
(send M set-locus! 48 41 verde)
(send M set-locus! 48 40 verde)
(send M set-locus! 48 39 verde)
(send M set-locus! 48 38 verde)
(send M set-locus! 48 37 verde)
(send M set-locus! 48 36 verde)
(send M set-locus! 48 35 verde)
(send M set-locus! 46 35 verde)
(send M set-locus! 47 35 verde)
(send M set-locus! 45 35 verde)
(send M set-locus! 45 36 verde)
(send M set-locus! 45 37 verde)
(send M set-locus! 45 38 verde)
(send M set-locus! 45 39 verde)
(send M set-locus! 45 42 verde)
(send M set-locus! 45 43 verde)
(send M set-locus! 45 44 verde)
(send M set-locus! 45 45 verde)
(send M set-locus! 45 46 verde)
(send M set-locus! 45 47 verde)
(send M set-locus! 45 48 verde)
(send M set-locus! 46 48 verde)
(send M set-locus! 47 48 verde)

(send M set-locus! 25 9 verde)
(send M set-locus! 25 10 verde)
(send M set-locus! 25 11 verde)
(send M set-locus! 25 12 verde)
(send M set-locus! 25 8 verde)
(send M set-locus! 26 8 verde)
(send M set-locus! 27 8 verde)
(send M set-locus! 28 8 verde)
(send M set-locus! 29 8 verde)
(send M set-locus! 30 8 verde)
(send M set-locus! 31 8 verde)
(send M set-locus! 32 8 verde)
(send M set-locus! 33 8 verde)
(send M set-locus! 34 8 verde)
(send M set-locus! 35 8 verde)
(send M set-locus! 36 8 verde)
(send M set-locus! 37 8 verde)
(send M set-locus! 38 8 verde)
(send M set-locus! 39 8 verde)
(send M set-locus! 40 8 verde)
(send M set-locus! 41 8 verde)
(send M set-locus! 28 10 verde)
(send M set-locus! 29 10 verde)
(send M set-locus! 30 10 verde)
(send M set-locus! 31 10 verde)
(send M set-locus! 32 10 verde)
(send M set-locus! 33 10 verde)
(send M set-locus! 34 10 verde)
(send M set-locus! 35 10 verde)
(send M set-locus! 36 10 verde)
(send M set-locus! 37 10 verde)
(send M set-locus! 38 10 verde)
(send M set-locus! 39 10 verde)
(send M set-locus! 40 10 verde)
(send M set-locus! 41 10 verde)
(send M set-locus! 42 10 verde)
(send M set-locus! 43 10 verde)

(send M set-locus! 10 45 verde)
(send M set-locus! 11 45 negro)
(send M set-locus! 12 45 azul)
(send M set-locus! 13 45 verde)
(send M set-locus! 14 45 negro)
(send M set-locus! 15 45 azul)
(send M set-locus! 16 45 verde)
(send M set-locus! 17 45 negro)
(send M set-locus! 18 45 azul)
(send M set-locus! 19 45 verde)
(send M set-locus! 20 45 negro)
(send M set-locus! 21 45 azul)
(send M set-locus! 22 45 verde)
(send M set-locus! 23 45 negro)
(send M set-locus! 24 45 azul)
(send M set-locus! 25 45 verde)
(send M set-locus! 26 45 negro)
(send M set-locus! 27 45 azul)
(send M set-locus! 28 45 verde)
(send M set-locus! 29 45 negro)
(send M set-locus! 30 45 azul)
(send M set-locus! 31 45 azul)
(send M set-locus! 32 45 verde)
(send M set-locus! 33 45 negro)
(send M set-locus! 34 45 azul)
(send M set-locus! 35 45 verde)
(send M set-locus! 36 45 negro)
(send M set-locus! 37 45 azul)
(send M set-locus! 38 45 verde)
(send M set-locus! 39 45 negro)
(send M set-locus! 40 45 azul)
(send M set-locus! 41 45 azul)
(send M set-locus! 42 45 azul)
(send M set-locus! 42 44 azul)
(send M set-locus! 42 43 azul)

(send M set-locus! 18 2 azul)
(send M set-locus! 19 2 azul)
(send M set-locus! 20 2 negro)
(send M set-locus! 21 2 azul)
(send M set-locus! 22 2 azul)
(send M set-locus! 23 2 negro)
(send M set-locus! 24 2 azul)
(send M set-locus! 25 2 azul)
(send M set-locus! 26 2 negro)
(send M set-locus! 27 2 azul)
(send M set-locus! 28 2 azul)
(send M set-locus! 29 2 negro)
(send M set-locus! 30 2 azul)
(send M set-locus! 31 2 azul)
(send M set-locus! 32 2 azul)
(send M set-locus! 33 2 negro)
(send M set-locus! 34 2 azul)
(send M set-locus! 35 2 azul)
(send M set-locus! 36 2 negro)
(send M set-locus! 37 2 azul)
(send M set-locus! 38 2 azul)
(send M set-locus! 39 2 negro)
(send M set-locus! 40 2 azul)
(send M set-locus! 41 2 azul)
(send M set-locus! 42 2 azul)
(send M set-locus! 42 3 azul)
(send M set-locus! 42 4 azul)
(send M set-locus! 42 5 azul)

(send M set-locus! 2 20 negro)
(send M set-locus! 3 20 negro)
(send M set-locus! 4 20 negro)
(send M set-locus! 4 21 negro)
(send M set-locus! 4 22 negro)
(send M set-locus! 4 23 negro)
(send M set-locus! 4 24 negro)
(send M set-locus! 4 25 negro)
(send M set-locus! 4 28 negro)
(send M set-locus! 4 29 negro)
(send M set-locus! 4 30 negro)
(send M set-locus! 4 31 negro)
(send M set-locus! 4 34 negro)
(send M set-locus! 4 35 negro)
(send M set-locus! 4 36 negro)
(send M set-locus! 4 37 negro)
(send M set-locus! 3 36 negro)
(send M set-locus! 4 37 negro)
(send M set-locus! 2 26 negro)
(send M set-locus! 2 21 negro)
(send M set-locus! 2 22 negro)
(send M set-locus! 2 23 negro)
(send M set-locus! 2 24 negro)
(send M set-locus! 2 25 negro)
(send M set-locus! 2 26 negro)
(send M set-locus! 2 27 negro)
(send M set-locus! 2 28 negro)
(send M set-locus! 2 29 negro)
(send M set-locus! 2 30 negro)
(send M set-locus! 2 31 negro)
(send M set-locus! 2 32 negro)
(send M set-locus! 2 33 negro)
(send M set-locus! 2 34 negro)
(send M set-locus! 2 35 negro)
;(send M set-locus! 2 36 negro)
(send M set-locus! 2 37 negro)
(send M set-locus! 2 38 negro)
(send M set-locus! 2 39 negro)
(send M set-locus! 2 40 negro)

(send M set-locus! 44 2 verde)
(send M set-locus! 45 2 verde)
(send M set-locus! 47 4 verde)
(send M set-locus! 46 4 verde)
;(send M set-locus! 46 2 verde)
(send M set-locus! 47 3 verde)
(send M set-locus! 47 4 verde)
(send M set-locus! 47 2 verde)
(send M set-locus! 48 2 verde)
(send M set-locus! 49 2 verde)

(send M set-locus! 44 12 verde)
(send M set-locus! 45 12 verde)
(send M set-locus! 46 12 verde)
(send M set-locus! 47 12 verde)
(send M set-locus! 48 12 verde)
(send M set-locus! 49 12 verde)
(send M set-locus! 46 13 verde)
(send M set-locus! 47 14 verde)
(send M set-locus! 48 14 verde)

(send M set-locus! 10 12 verde)
(send M set-locus! 11 12 verde)
(send M set-locus! 12 12 verde)
(send M set-locus! 13 12 verde)
(send M set-locus! 14 12 verde)
(send M set-locus! 15 12 verde)
(send M set-locus! 16 13 verde)
(send M set-locus! 17 14 verde)
(send M set-locus! 18 14 verde)

(send M set-locus! 1 12 azul)
(send M set-locus! 2 12 azul)
(send M set-locus! 3 12 azul)
(send M set-locus! 4 12 azul)
(send M set-locus! 5 12 azul)
(send M set-locus! 6 12 azul)
(send M set-locus! 7 13 azul)
(send M set-locus! 8 14 azul)
(send M set-locus! 9 14 azul)

(send M set-locus! 1 42 azul)
(send M set-locus! 2 42 azul)
(send M set-locus! 3 42 azul)
(send M set-locus! 4 42 azul)
(send M set-locus! 5 42 azul)
(send M set-locus! 6 42 azul)
(send M set-locus! 6 43 azul)
(send M set-locus! 7 43 azul)
(send M set-locus! 7 44 azul)
(send M set-locus! 8 44 azul)
(send M set-locus! 9 44 azul)

(send M set-locus! 44 22 verde)
(send M set-locus! 45 22 verde)
(send M set-locus! 46 22 verde)
(send M set-locus! 48 22 verde)
(send M set-locus! 49 22 verde)
(send M set-locus! 46 23 verde)
;(send M set-locus! 46 24 verde);
(send M set-locus! 47 24 verde)
(send M set-locus! 47 25 verde)
(send M set-locus! 47 26 verde)

(send M set-locus! 14 12 verde)
(send M set-locus! 15 12 verde)
(send M set-locus! 16 12 verde)
(send M set-locus! 18 12 verde)
(send M set-locus! 19 12 verde)
(send M set-locus! 16 13 verde)
(send M set-locus! 16 14 verde);
(send M set-locus! 17 14 verde)
(send M set-locus! 17 15 verde)
(send M set-locus! 17 16 verde)

;(send M set-locus! 17 17 A);38 38 A)
;(send M set-locus! 48 3 A)

(define blancos-en
  (lambda (matriz dimensiones)
    (let rows
      ((i 0)
       (j (car dimensiones))
       (salida '())
       )
      (if (= i j)
          salida
          (let columns
            ((m 0)
             (n (cdr dimensiones))
             )
            (if (= m n)
                (rows (add1 i) j salida)
                (if (equal? (list 255 255 255 1.0)
                            (send
                             (send M get-obj i m)
                             get-rgb))
                    (begin
                      (set! salida (cons (cons i m) salida))
                      (columns (add1 m) n)
                      )
                    (columns (add1 m) n))
                )
            )
          )
      )
    ))
(define ubica-animat
  (lambda (animat)
    (let* 
        ((hay-blancos
          (blancos-en (send M get-matriz) (send M get-dimensiones)))
         (azar (random (length hay-blancos)))
         (locus (list-ref hay-blancos azar))
         )
      (send M set-locus! (car locus) (cdr locus) animat)
      locus
      )
    ))
(ubica-animat A1)
;(ubica-animat A2)
                
(provide M)
