diff options
Diffstat (limited to 'net/ricketyspace')
-rw-r--r-- | net/ricketyspace/ror/six/snake.rkt | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/net/ricketyspace/ror/six/snake.rkt b/net/ricketyspace/ror/six/snake.rkt index 90d40d3..17555c0 100644 --- a/net/ricketyspace/ror/six/snake.rkt +++ b/net/ricketyspace/ror/six/snake.rkt @@ -2,7 +2,7 @@ (require 2htdp/universe 2htdp/image) ;; data -(struct pit (snake goos)) +(struct pit (snake goos dinged)) (struct snake (dir segs)) (struct goo (loc expire)) (struct posn (x y)) @@ -39,7 +39,7 @@ (fresh-goo) (fresh-goo) (fresh-goo) - (fresh-goo))) + (fresh-goo)) 0) (on-tick next-pit TICK-RATE) (on-key direct-snake) (to-draw render-pit) @@ -48,10 +48,11 @@ (define (next-pit w) (define snake (pit-snake w)) (define goos (pit-goos w)) + (define dinged (pit-dinged w)) (define goo-to-eat (can-eat snake goos)) (if goo-to-eat - (pit (grow snake) (age-goo (eat goos goo-to-eat))) - (pit (slither snake) (age-goo goos)))) + (pit (grow snake) (age-goo (eat goos goo-to-eat)) (+ 1 dinged)) + (pit (slither snake) (age-goo goos) dinged))) (define (direct-snake w ke) (cond [(dir? ke) (world-change-dir w ke)] @@ -66,7 +67,11 @@ (or (self-colliding? snake) (wall-colliding? snake))) (define (render-end w) - (overlay (text "Game Over" ENDGAME-TEXT-SIZE "black") + (overlay (above (text "Game Over" ENDGAME-TEXT-SIZE "black") + (text (string-append "You dinged " + (number->string (pit-dinged w)) + " goos.") + ENDGAME-TEXT-SIZE "black")) (render-pit w))) @@ -146,7 +151,7 @@ (cons? (rest (snake-segs the-snake)))) (stop-with w)] [else - (pit (snake-change-dir the-snake d) (pit-goos w))])) + (pit (snake-change-dir the-snake d) (pit-goos w) (pit-dinged w))])) (define (opposite-dir? d1 d2) (cond [(string=? d1 "up") (string=? d2 "down")] |