1
(define SCENE (empty-scene 500 500))
(define-struct pos (x y))
(define-struct ball (img pos))

;(define (render lst))



(define game (list
               (make-ball (circle 10 "solid" "blue") (make-pos 250 250))
               (make-ball (circle 10 "solid" "red") (make-pos 150 150))))

(big-bang game
  [to-draw render])

Lets say i just want to render all my ball-struct-elements in the list on the SCENE. How can i do this? I know how to do it without a list, but with a list i got some problems.

Im using the beginner student version of racket.

I am thankful for every answer

I tried it recursive but just cant work it out

tim123908
  • 21
  • 2

1 Answers1

1

See 2.3.4 Placing Images & Scenes for functions like place-image or place-images.

Function place-images requires using posn structure. If you want to use your own pos structure, you will have to use place-image.

Beginning Student Language also doesn't provide foldl, so you have to use some recursion, placing pictures on the scene one by one:

(require 2htdp/image)
(require 2htdp/universe)

(define scene (empty-scene 500 500))
(define-struct pos (x y))
(define-struct ball (img pos))

(define (place-on-scene scene lst)
  (if (empty? lst)
      scene
      (place-on-scene
       (place-image (ball-img (first lst))
                    (pos-x (ball-pos (first lst)))
                    (pos-y (ball-pos (first lst)))
                    scene)
       (rest lst))))

(define (render lst)
  (place-on-scene scene lst))

(define game (list
              (make-ball (circle 10 "solid" "blue") (make-pos 250 250))
              (make-ball (circle 10 "solid" "red") (make-pos 150 150))))

(big-bang game
  [to-draw render])
Martin Půda
  • 7,353
  • 2
  • 6
  • 13