我正在用 plt-scheme 编写一个井字游戏作为我的 AI 课程项目。gui 的想法是一个有 9 个框的网格,每个框都有一个画布,使用窗格......当用户点击画布时,将相应地绘制“X”或“O”......
问题是如何在画布上捕捉鼠标点击事件?我发现我需要使用 on-event,但仍然不知道如何?有什么线索吗?
我正在用 plt-scheme 编写一个井字游戏作为我的 AI 课程项目。gui 的想法是一个有 9 个框的网格,每个框都有一个画布,使用窗格......当用户点击画布时,将相应地绘制“X”或“O”......
问题是如何在画布上捕捉鼠标点击事件?我发现我需要使用 on-event,但仍然不知道如何?有什么线索吗?
Ok, I got it ...
(define canvas-box%
(class canvas%
(define/override (on-event e)
(when (equal? (send e get-event-type) 'left-down) (foobar-callback)))
(super-new)))
我得到了所有鼠标和键盘命令,可以在这里的任何地方使用。
(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)
))