RACKET pause/continue 游戏按钮

RACKET pause/continue button for game

我有一个学校项目要在 racket 中创建一个版本的俄罗斯方块,我必须 实现一个我一直坚持的 pause/continue 按钮。我的尝试:

(define *my-timer*
  (new timer%
       [notify-callback (lambda () (send *my-game-canvas* refresh))]))

(define *pause*
  (new button%
       [parent *my-window*]
       [label "Pause"]
       [callback (lambda ()
                   (send *my-timer* stop))]))

目前只实现了暂停功能,没有实现。我在第二个定义中收到一条错误消息。

*my-game-canvas * 是 canvas 游戏图形发生的地方。

感谢所有的回答。

/卡斯帕

编辑:

我得到的错误:

initialization for button%: contract violation
  expected: (procedure-arity-includes/c 2)
  given: #<procedure:...0160511/game.rkt:61:17>

这个子句有问题:

   [callback (lambda ()
               (send *my-timer* stop))]

回调需要两个参数:按钮和事件。

试试这个:

   [callback (lambda (button event)
               (send *my-timer* stop))]