8.12

This assignment is due on Sunday, February 25 at 11:59pm. Submit it using Handin as assignment lecture15.

Exercise 1. Write the template for a function that processes a MaybePosn. Make it look like a function called process-maybeposn, and do not put it in a comment. Here is the data definition:
 ; A MaybePosn is one of: ; - (make-none) ; - Posn (define-struct none [])

Then write the template for a function that processes a World. Make it look like a function called process-world, and do not put it in a comment. Here is the data definition:
 ; A World is (make-world ListOfPosns Number MaybePosn) (define-struct world [invaders player bullet]) ; *Interpretation*: the player is at the given X coordinate ;                   and the bottom of the screen
Hint: your template process-world should use process-listofposns and process-maybeposn in the places corresponding to where the data definition of World uses ListOfPosns and MaybePosn.

Exercise 2. Below are some constant definitions from the video above:
 (define b1 (make-none)) (define b2 (make-posn 70 50)) (define bullet-sprite (circle 5 "solid" "green"))
Finish designing the following function. Feel free to write your own examples, but be sure to use the bullet-sprite we define above.
 ; draw-bullet : MaybePosn Image -> Image ; draw the bullet on the given image (check-expect (draw-bullet b1 (place-image player-sprite 80 295 (draw-invaders ps2))) (place-image player-sprite 80 295 (draw-invaders ps2))) (check-expect (draw-bullet b2 (place-image player-sprite 100 295 (draw-invaders ps1))) (place-image bullet-sprite 70 50 (place-image player-sprite 100 295 (draw-invaders ps1)))) (define (draw-bullet b img) (cond [(none? b) (... img ...)] [(posn? b) (... (posn-x b) (posn-y b) img ...)]))
Hint: Watch the next video.

Optional: Read Chapters 10 and 11 of the textbook. You can also find more ideas for games to build in Chapter 12, such as Snake and Tetris.

Optional: Enjoy the song Rubber Biscuit by the Blues Brothers.