#lang racket/gui

;;;;;;;;;;;;;;
(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-tipo
      (lambda ()
        tipo ))
    (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 verde
  (make-object olor% 2 10))
(define olor3;comida amarillo
  (make-object olor% 3 10))
(define olor4;el olor de una hormiga
  (make-object olor% 4 1))
(define olor5;el olor de otro autómata
  (make-object olor% 5 1))
(define olor6;el olor de azul y marrón
  (make-object olor% 6 1))
;;Estado dureza olor R   G   B   O
(define blanco
  (make-object elemento% 0 0 (make-object olor% 0 0) 255 255 255 1.0))

(define rojo
  (make-object elemento% 1 5 (make-object olor% 5 1) 255 0 0 1.0))
(define verde
  (make-object elemento% 2 2 (make-object olor% 2 10) 0 255 0 1.0))

(define negro
  (make-object elemento% 3 6 (make-object olor% 4 1) 0 0 0 1.0))
(define amarillo
  (make-object elemento% 4 3 (make-object olor% 3 10) 255 255 0 1.0))

(define azul
  (make-object elemento% 5 7 (make-object olor% 6 1) 0 0 255 1.0))
(define marron
  (make-object elemento% 6 8 (make-object olor% 6 1) 132 60 36 1.0))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(provide blanco rojo verde negro amarillo azul marron olor% olor0 olor1 olor2 olor3)

