在Racket绘图表/板

时间:2013-12-13 15:03:40

标签: scheme racket

我正在尝试在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”函数,但是我收到了错误。

所以我的问题是:我如何画这个板?

1 个答案:

答案 0 :(得分:1)

你可以绘制一行,而一块板只是一个行列表,所以我希望

(define (draw-board b) 
    (for-each draw-row b))

到Just Work。

根据您的评论,我希望工作的一个例子:

(draw-board (board 10 10))

它至少对我有用。