#lang racket

(define efector%
  (class object%
    (field
     (accion 'accion)
     )
;    (define-struct acto
;        (clave
;         ordinal_vecino
;         ocho_vecinos_coord
;         output_sensorial)
;        #:transparent
;        )
    (define/public proceso!
      (lambda (ordinal_vec output_sensorial lista-8vec-coord)
        (let ((item-e (list-ref output_sensorial ordinal_vec))
              )
          (cond
            ;((= (vector-ref output_sensorial (* 2 ordinal_vec)) 1)
            ((equal? item-e (cons 1 1))
             (set! accion 'comer)
             (values
              accion
              (list-ref lista-8vec-coord ordinal_vec)
;              (make-acto accion ordinal_vec lista-8vec-coord output_sensorial)
              )
             )
            (else
             (set! accion 'avanzar)
             (values
              accion
              (list-ref lista-8vec-coord ordinal_vec)
;              (make-acto accion ordinal_vec lista-8vec-coord output_sensorial)
              )
             )
            )
          )
        ))
    (super-new)
    ))

(define efectores (make-object efector%))

(provide efectores)

;(send efectores proceso! 2 '#(0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0) '(obstaculo obstaculo comida blanco blanco blanco blanco blanco))