Racket 把两个物体放入大爆炸中

Racket 把两个物体放入大爆炸中,racket,racket-student-languages,Racket,Racket Student Languages,如何放置两个具有自身坐标的对象 (define padle1 (rectangle 10 30 "solid" "red")) (define padle2 (rectangle 10 30 "solid" "red")) (define (place-dot-at ... ) ...) 宾邦函数 (big-bang ... [to-draw place-dot-at]) 我可以使用挂件清单吗 (define new-list (list padle1 padle2)) 我建议制作一个dr

如何放置两个具有自身坐标的对象

(define padle1 (rectangle 10 30 "solid" "red"))
(define padle2 (rectangle 10 30 "solid" "red"))
(define (place-dot-at ... ) ...)
宾邦函数

(big-bang ...
[to-draw place-dot-at])
我可以使用挂件清单吗

(define new-list (list padle1 padle2))

我建议制作一个
draw-paile
功能,在图像
I
上绘制一个划片

(define (draw-paddle p i)
   (overlay/xy (rectangle ...)  ; the paddle
               50 70            ; coordinates on paddle on screen
               i))              ; image of what's previously drawn
(define (draw-paddles ps i)
   (cond
      [(empty? ps) i]           ; no more paddles to draw
      [else        (draw-paddles 
                        (rest ps)       ; draw the rest of the paddles on top
                        (draw-paddle (first p) i))])) ; of the first paddle
                                                      ; ontop of i
然后制作一个函数,在图像
i
顶部的列表中绘制所有划片

(define (draw-paddle p i)
   (overlay/xy (rectangle ...)  ; the paddle
               50 70            ; coordinates on paddle on screen
               i))              ; image of what's previously drawn
(define (draw-paddles ps i)
   (cond
      [(empty? ps) i]           ; no more paddles to draw
      [else        (draw-paddles 
                        (rest ps)       ; draw the rest of the paddles on top
                        (draw-paddle (first p) i))])) ; of the first paddle
                                                      ; ontop of i
最后,您可以:

 (define (on-draw state)
     (draw-paddles (list paddle1 paddle2) my-background))

如果您没有背景,您可以使用
空图像
矩形
制作背景。我建议您制作一个
绘制拨片
功能,在图像上方绘制一个拨片

(define (draw-paddle p i)
   (overlay/xy (rectangle ...)  ; the paddle
               50 70            ; coordinates on paddle on screen
               i))              ; image of what's previously drawn
(define (draw-paddles ps i)
   (cond
      [(empty? ps) i]           ; no more paddles to draw
      [else        (draw-paddles 
                        (rest ps)       ; draw the rest of the paddles on top
                        (draw-paddle (first p) i))])) ; of the first paddle
                                                      ; ontop of i
然后制作一个函数,在图像
i
顶部的列表中绘制所有划片

(define (draw-paddle p i)
   (overlay/xy (rectangle ...)  ; the paddle
               50 70            ; coordinates on paddle on screen
               i))              ; image of what's previously drawn
(define (draw-paddles ps i)
   (cond
      [(empty? ps) i]           ; no more paddles to draw
      [else        (draw-paddles 
                        (rest ps)       ; draw the rest of the paddles on top
                        (draw-paddle (first p) i))])) ; of the first paddle
                                                      ; ontop of i
最后,您可以:

 (define (on-draw state)
     (draw-paddles (list paddle1 paddle2) my-background))

如果没有背景,您可以使用
空图像
矩形
大爆炸
制作背景,它只存储一条信息,通常称为“世界状态”。所有与
大爆炸
相关的功能,如绘图功能、记号处理程序等,必须接受该世界状态作为单个参数

由您决定在您的世界状态中存储什么。如果您想存储两个位置(每个桨一个),可以使用列表或结构。例如,下面是如何定义一个名为
world
的结构,它可以同时保持两个位置

; Create a type called `world` that holds two locations.
(define-struct world [paddle1 paddle2])

; Create a variable to store the initial state of the world.
(define initial-world (make-world (make-posn 0 100) (make-posn 300 100)))
编写绘图函数时,它必须立即接受整个世界状态:

(define (draw-game world)
   (place-image 
      paddle1
      (posn-x (world-paddle1 world))
      (posn-y (world-paddle1 world))
      (place-image 
         paddle2
         (posn-x (world-paddle2 world))
         (posn-y (world-paddle2 world))
         BACKGROUND)))
在你的《生活大爆炸》(big bang)中,像对待任何其他类型的数据一样对待世界状态:

(big-bang
  initial-world
  [to-draw draw-game])

bigbang
只存储一条信息,通常称为“世界状态”。所有使用
bigbang
的函数,如绘图函数、记号处理程序等,都必须将该世界状态作为单个参数接受

由您决定在您的世界状态中存储什么。如果您想存储两个位置(每个桨一个),可以使用列表或结构。例如,下面是如何定义一个名为
world
的结构,它可以同时保持两个位置

; Create a type called `world` that holds two locations.
(define-struct world [paddle1 paddle2])

; Create a variable to store the initial state of the world.
(define initial-world (make-world (make-posn 0 100) (make-posn 300 100)))
编写绘图函数时,它必须立即接受整个世界状态:

(define (draw-game world)
   (place-image 
      paddle1
      (posn-x (world-paddle1 world))
      (posn-y (world-paddle1 world))
      (place-image 
         paddle2
         (posn-x (world-paddle2 world))
         (posn-y (world-paddle2 world))
         BACKGROUND)))
在你的《生活大爆炸》(big bang)中,像对待任何其他类型的数据一样对待世界状态:

(big-bang
  initial-world
  [to-draw draw-game])

请详细说明你已经尝试了什么,你正在努力解决什么。检查打字错误。我正试图让一个游戏成为一个类似太空入侵者的游戏。请详细说明你已经尝试过的,你正在努力解决的问题。检查打字错误。我想让游戏像太空入侵者一样