#lang racket/gui

;;;;;;;;;;;;;;
(define elemento%
  (class color%
    (init-field
     (estado 0)
     (al_tacto 0)
     (al_olfato 'objeto_tipo_olor)
     )
    (define/public set-al_olfato
      (lambda (obj)
        (set! al_olfato obj)
        ))
    (define/public get-al_olfato
      (lambda ()
        al_olfato
        ))
    (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-al_tacto; get-resistencia
      (lambda ()
        al_tacto ))
    (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 Al_tacto Al_olfato 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))
;;;;;;;;;;;;;;
(provide blanco rojo verde azul negro)

