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

На данный момент реализована только функция паузы, но она не работает. Я получаю сообщение об ошибке при втором определении.

*my-game-canvas * — это холст, на котором размещается игровая графика.

Я ценю все ответы.

/ Каспер

Редактировать:

Ошибка, которую я получаю:

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

person aaa    schedule 17.05.2016    source источник
comment
Какую ошибку вы получаете?   -  person soegaard    schedule 17.05.2016
comment
Я добавил ошибку внизу поста, моя ошибка.   -  person aaa    schedule 17.05.2016


Ответы (1)


Проблема в этом пункте:

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

Обратный вызов должен принимать два аргумента: кнопку и событие.

Попробуй это:

   [callback (lambda (button event)
               (send *my-timer* stop))]
person soegaard    schedule 17.05.2016