我正在尝试在Racket 5.0.2版本中创建一个名称为“Same”的游戏。
以下是对游戏的解释: http://download.racket-lang.org/docs/5.0.2/html/games/same.html?q=games
我创建了一行并绘制它:
a: width
b: height
r: radius
(define (color x) ///for random colors
(cond [(< (random x) 100) 'blue]
[(< (random x) 200) 'purple]
[(< (random x) 300) 'yellow]
[(< (random x) 400) 'red]
[else 'green]))
(define-struct top (coord color))
(define (row x y)
(if (> x (- a r)) empty
(cons (make-top (make-posn x y)(color 500)) (row (+ x (* 2 r)) y))))
(define (draw-row L)
(if (empty? L) #f
(and
(draw-solid-disk (top-coord (first L)) r (top-color (first L)))
(draw-row (rest L)))))
所以我有一个包含20个随机颜色的磁盘的顶行。但我需要20行10列的200个磁盘。所以我创建了一个这样的板子:
(define (board x y)
(if (> y (- b r)) empty
(cons (row x y) (board x (+ y (* 2 r))))))
但我无法画画。我尝试创建一个“draw-row”函数,但是我收到了错误。
所以我的问题是:我如何画这个板?
答案 0 :(得分:1)
你可以绘制一行,而一块板只是一个行列表,所以我希望
(define (draw-board b)
(for-each draw-row b))
到Just Work。
根据您的评论,我希望工作的一个例子:
(draw-board (board 10 10))
它至少对我有用。