RACKET暂停/继续按钮用于游戏



我有一个学校项目要在球拍中创建俄罗斯方块的版本,我必须实现一个我被卡住的暂停/继续按钮。我的尝试:

(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))]))

目前只实现了暂停功能,但它不起作用。我在第二次定义时收到一条错误消息。

*我的游戏画布*就是游戏图形所在的画布。

我感谢所有的答案。

/卡斯珀

编辑:

我得到的错误:

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))]

最新更新