-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathpenguin.rkt
96 lines (81 loc) · 4.95 KB
/
penguin.rkt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#lang racket
;; characters that eat fish
;
;
; ;;;
; ; ;
; ; ;
; ;;;; ;; ;; ;;;;;; ;;;; ;;;; ; ;;; ;;; ;
; ; ; ; ; ; ; ; ;; ; ;; ; ; ; ;
; ;;;;;; ;; ; ;;;;;; ; ; ; ; ;
; ; ;; ; ; ; ; ; ;;;;; ;
; ; ;; ; ; ; ; ; ; ; ;
; ;; ; ; ; ; ;; ; ; ; ; ; ;; ;
; ;;;;; ; ; ;;; ;;;;; ; ; ; ;;; ; ;;;
;
;
;
;
(require (only-in pict pict?))
(define penguin/c (list/c string? pict?))
(provide
(contract-out
(penguin-color/c contract?)
(penguin/c contract?)
(penguin-colors (listof string?))
(penguins (listof penguin/c))))
;
;
; ; ; ;
; ; ;
; ; ;
; ;;; ; ;;;; ; ;;; ;;;; ; ;;; ;;; ; ;;;; ; ;;; ;;; ;;; ;;;; ;;;;
; ;; ;; ; ; ;; ;; ; ; ;; ; ;; ;; ; ; ;; ; ; ; ; ; ; ; ;
; ; ; ;;;;;; ; ; ;;;;;; ; ; ; ; ;;;;;; ; ; ; ; ;;;;;; ;
; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;;;;
; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
; ;; ;; ;; ; ;; ;; ;; ; ; ; ;; ;; ;; ; ; ; ; ; ; ;; ; ; ;
; ;;; ; ;;;;; ; ;;; ;;;;; ; ; ;;; ; ;;;;; ; ; ;;; ;;;;; ;;;;; ;;;;
; ;
; ;
; ;
;
(require Fish/Common/fish)
(require (except-in pict pict?))
(require pict/convert)
(require racket/runtime-path)
;
;
; ;
;
;
; ; ;;; ;;;; ; ;;; ;;; ; ; ; ;;; ; ;;; ;;;;
; ;; ;; ; ; ;; ; ;; ;; ; ; ; ;; ; ; ;
; ; ; ;;;;;; ; ; ; ; ; ; ; ; ; ;
; ; ; ; ; ; ; ; ; ; ; ; ; ;;;;
; ; ; ; ; ; ; ; ; ; ; ; ; ;
; ;; ;; ;; ; ; ; ;; ;; ; ;; ; ; ; ; ;
; ; ;;; ;;;;; ; ; ;;; ; ;;; ; ;;;;; ; ; ;;;;
; ; ;
; ; ; ;;
; ; ;;;
;
(define penguin-colors `["red" "white" "brown" "black"])
(define penguin-color/c (apply or/c penguin-colors))
(define-runtime-path penguin-place "../Resources/penguin.png")
(define (penguin c)
(let* ([.png (pict-convert (bitmap penguin-place))]
[base (freeze (scale .png (/ (- (* 2 TILE-SIZE) 4) (pict-height .png))))]
[back (filled-rectangle (pict-width base) (pict-height base) #:color c)]
[pict base #;(cc-superimpose back base)])
(define (bullet r c) (filled-ellipse r r #:color c))
(pin-over pict 20 28 (bullet 15 c))))
(define penguins
(for/list ([c penguin-colors])
(list c (penguin c))))
;; -----------------------------------------------------------------------------
(module+ picts
(map (λ (p) (cc-superimpose (empty-tile "orange") (cadr p))) penguins))
(module+ serialize
(provide avatar->jsexpr)
(define (avatar->jsexpr s) s))