plt-scheme: захват события щелчка мыши на холсте

Я пишу игру в крестики-нолики по схеме plt в качестве своего курсового проекта по ИИ. Идея графического интерфейса - это сетка с 9 блоками, каждое с холстом, с использованием панелей ... Когда пользователь щелкает по холсту, соответственно отрисовываются 'X' или 'O' ...

Вопрос в том, как я могу поймать событие щелчка мышью на холсте? Я узнал, что мне нужно использовать на мероприятии, но все еще не знаю, как? Какие-нибудь подсказки?


person Thura    schedule 02.02.2010    source источник


Ответы (2)


Ладно, я понял ...

(define canvas-box%
  (class canvas%
    (define/override (on-event e)
           (when (equal? (send e get-event-type) 'left-down) (foobar-callback)))
    (super-new)))
person Thura    schedule 02.02.2010

У меня есть все команды мыши и клавиатуры для использования где угодно здесь.

(define my-canvas%

(class canvas%
  (define/override (on-event event)
    (and 
        (send test reader (list (number->string (send event get-x))
                     (number->string (send event get-y)) ))
        (send test reader (list (send event get-event-type)))))
(define/override (on-char event)
  (define pressed (send event get-key-code))
   (if (char? pressed) (send test reader (list (make-string 1 pressed))) '()))  
  (super-new)))

(define tester%
 (class object%
  (super-new)
  (define command '())

  (define/public (reader x)
    (and (set! command x)
         (display x))
   )
  (define/public (outer)
    command)
  ))
person p l meena    schedule 16.04.2013