#lang racket

;;;;;RECEPTORES
(define receptor%
  (class object%
    (field
     (tabla 
      (list
        (list 0 (cons 0 0))
        (list 1 (cons 0 1))
        (list 2 (cons 1 1))
        )
      )
     )
    (define/public proceso!
      (lambda (estimulo); 1 objeto clase elemento%
        (let ((estimulo-tipo (send estimulo get-tipo))
              )
          (ormap
           (lambda (row)
             (if (= estimulo-tipo (first row))
                 (second row)
                 #f))
           tabla)
          )
        ))
    (super-new) 
    ))
;;;;;;;;;;;;
(define sensor (make-object receptor%))
;;;;;;;;;;;;
;;;;;RECEPTOR SENSITIVO
(define receptor_sensitivo%
  (class object%
    (init-field
     (lista-sensores '())
     )
    (define/public proceso!
      (lambda (estimulos)
        (map
         (lambda (e s)
           (send s proceso! e)
           )
         estimulos lista-sensores)
        ))
    (super-new)
    ))
;;;;;;;;;;;;;;
(define receptor_sensorial
  (make-object receptor_sensitivo%
    (list sensor sensor sensor sensor sensor sensor sensor sensor)))
;;;;;;;;;;;;;;
(provide receptor_sensorial)

;(require "Objetos.rkt")
;(send receptor_sensorial proceso! (list blanco obstaculo comida blanco obstaculo comida blanco obstaculo))