基本球拍:最终价值

Basic Racket: End Values

我正在学习编程入门 class。我们在 DrRacket 中使用学生语言。

问题:我想return在big-bang游戏结束时的某个值(需要2htdp/universe)`。

当前输出:游戏结束时,DrRacket return是我当前的世界状态,这是我在游戏中使用的结构列表。

解决方案的进展:stop-with似乎可以帮助我,但我不确定如何使用它。

长话短说:
问题:游戏结束 --> Returns 世界状态(结构列表)
想要:游戏结束 --> Return 其他值(数量)

如果我能以任何方式澄清,请告诉我!谢谢!

编辑:我想我找到了解决方案。我用我通常所说的结束我的表达?函数并将其作为 cond 分支放在我的 on-tick 函数中。当在我的 on-tick 函数中调用该函数时,它将世界状态更改为我想要输出的任何内容。那么,到底是我呢?功能,我只是检查世界状态是否与通常不同。

感谢您的帮助!

解决方案:

; A Test Case (TC) is a (make-tc Number)
(define-struct tc [number ticks])
; number is a number used to test this problem

; TC -> Number
; Begins the main big-bang function; outputs the inverse of tick speed
; times the number of ticks elapsed when the game ends. 
(define (main tick-speed)
   ( * (/ 1 tick-speed) 
        (tc-ticks (big-bang (make-tc 0 0)
           [to-draw draw]
           [on-tick check tick-speed]
           [stop-when end? end-scene]))))

原回答post:

; A Test Case (TC) is a (make-tc Number)
(define-struct tc [number ticks])
; number is a number used to test this problem

; TC -> Number
; Begins the main big-bang function; outputs the inverse of tick speed
; times the number of ticks elapsed when the game ends. 
(define (main tick-speed)
   ( * (/ 1 tick-speed) 
        (tc-ticks (big-bang (make-tc 0 0)
           [to-draw draw]
           [on-tick check tick-speed]
           [stop-when end? end-scene]))))