这个就是在之前的程序基础上增加一张图,然后在“render”这个函数里加一个判断语句就可以了。
具体代码如下,如果觉着有用的话麻烦给我点个赞哟
(require 2htdp/image)
(require 2htdp/universe)
; 定义常量
; Graphical constants
(define CAT1 .)
(define CAT2 .)
(define CAT-BUFFER 10)
(define Y-CAT1 (/ (+ (image-height CAT1) CAT-BUFFER) 2))
(define BACKGROUND (empty-scene (* 10 (image-width CAT1)) (+ (image-height CAT1) CAT-BUFFER)))
;根据奇数偶数放不同的图片
(check-expect (render 3) (place-image/align CAT1 3 Y-CAT1 "right" "center" BACKGROUND))
(check-expect (render 100) (place-image/align CAT2 100 Y-CAT1 "right" "center" BACKGROUND))
(define (render ws)
(cond
[(odd? ws) (place-image/align CAT1 ws Y-CAT1 "right" "center" BACKGROUND)]
[else (place-image/align CAT2 ws Y-CAT1 "right" "center" BACKGROUND)]))
;;tock
; WorldState -> WorldState
(check-expect (tock (+ (image-width BACKGROUND) (image-width CAT1))) 3)
(check-expect (tock (/ (image-width BACKGROUND) 2)) (+ (/ (image-width BACKGROUND) 2) 3))
(define (tock ws)
(modulo (+ ws 3) (+ (image-width BACKGROUND) (image-width CAT1))))
;;main
; WorldState -> WorldState
; 主程序与之前无异
(define (main ws)
(big-bang ws
[on-tick tock]
[to-draw render]))