;; DO NOT PUT ANYTHING PERSONALLY IDENTIFYING BEYOND YOUR CWL IN THIS
FILE.
;; YOUR CWLs WILL BE SUFFICIENT TO IDENTIFY YOU.
;;
( require 2htdp/image)
(require 2htdp/universe)
(require spd/tags)
(@assignment psets/pset-03);Do not edit or remove this tag
;; Bounce a single ball around the screen.
;; IMPORTANT:
;; This problem set will form the basis for problem sets 4 and 5 as well.
;; You are strongly advised to put in the effort to do well on this
;; problem set so that you then have an easier time with problem sets
;; 4 and 5.
;;
;; For this problem set you must complete the design of a world program.
;; The complete program must have the following behaviour:
;; - there is a green background, with a single white ball
;; bouncing around inside that box
;; - when the ball hits the top/right/bottom/left of the box it
;; bounces in the usual way a ball would bounce off of a wall
;; - clicking the mouse replaces the ball with a new ball, at the
;; current mouse position, and with a small random x,y velocity
;;
;; Note that we are giving you significant help in the starter file.
;; There is a complete data design, some complete helper functions, as
;; well as a some wish list entries. You absolutely MUST
;; - not edit any of the complete design elements we give you
;; - complete the wish list entries we give you, and do so in a way
;; that is consistent with the rest of the design we give you
;; - must use the helpers we give you as part of your solution
;;
;; We recommend that you begin by first going through the entire file to
;; understand what is already complete and what you need to complete.
;;
(@problem 1)
(@htdw Ball)
;; Constants:
(define WIDTH 605)
(define HEIGHT 535)
(define BALL-RADIUS 10)
, ( define TOP (+ 0 BALL-RADIUS)) ;these constants define the "inner box"
(define BOT (- HEIGHT 1 BALL-RADIUS)) ;that constrains the center of the ball
(define LEF (+ 0 BALL-RADIUS)) ;
(define RIG (- WIDTH 1 BALL-RADIUS)) ;
(define BALL (circle BALL-RADIUS "solid" "white"))
(define MTS (rectangle WIDTH HEIGHT "solid" "green"))
;;
======================================================================
=====
;;
======================================================================
=====
;; Data definitions:
(@htdd Ball)
( define-struct ball (x y dx dy))
;; Ball is (make-ball Number Number Number Number)
;; interp. (make-ball x y dx dy) is ball
;; - position x, y in screen coordinates
;; - velocity dx, dy in pixels/tick
(define B1 (make-ball (/ WIDTH 2) (/ HEIGHT 2) 4 -3))
(@dd-template-rules compound)
(define (fn-for-ball b)
(... (ball-x b)
(ball-y b)
(ball-dx b)
(ball-dy b)))
;;
======================================================================
=====
;;
======================================================================
=====
;; Functions:
( @htdf main)
(@signature Ball -> Ball)
;; start the game, call with (main B1)
FILE.
;; YOUR CWLs WILL BE SUFFICIENT TO IDENTIFY YOU.
;;
( require 2htdp/image)
(require 2htdp/universe)
(require spd/tags)
(@assignment psets/pset-03);Do not edit or remove this tag
;; Bounce a single ball around the screen.
;; IMPORTANT:
;; This problem set will form the basis for problem sets 4 and 5 as well.
;; You are strongly advised to put in the effort to do well on this
;; problem set so that you then have an easier time with problem sets
;; 4 and 5.
;;
;; For this problem set you must complete the design of a world program.
;; The complete program must have the following behaviour:
;; - there is a green background, with a single white ball
;; bouncing around inside that box
;; - when the ball hits the top/right/bottom/left of the box it
;; bounces in the usual way a ball would bounce off of a wall
;; - clicking the mouse replaces the ball with a new ball, at the
;; current mouse position, and with a small random x,y velocity
;;
;; Note that we are giving you significant help in the starter file.
;; There is a complete data design, some complete helper functions, as
;; well as a some wish list entries. You absolutely MUST
;; - not edit any of the complete design elements we give you
;; - complete the wish list entries we give you, and do so in a way
;; that is consistent with the rest of the design we give you
;; - must use the helpers we give you as part of your solution
;;
;; We recommend that you begin by first going through the entire file to
;; understand what is already complete and what you need to complete.
;;
(@problem 1)
(@htdw Ball)
;; Constants:
(define WIDTH 605)
(define HEIGHT 535)
(define BALL-RADIUS 10)
, ( define TOP (+ 0 BALL-RADIUS)) ;these constants define the "inner box"
(define BOT (- HEIGHT 1 BALL-RADIUS)) ;that constrains the center of the ball
(define LEF (+ 0 BALL-RADIUS)) ;
(define RIG (- WIDTH 1 BALL-RADIUS)) ;
(define BALL (circle BALL-RADIUS "solid" "white"))
(define MTS (rectangle WIDTH HEIGHT "solid" "green"))
;;
======================================================================
=====
;;
======================================================================
=====
;; Data definitions:
(@htdd Ball)
( define-struct ball (x y dx dy))
;; Ball is (make-ball Number Number Number Number)
;; interp. (make-ball x y dx dy) is ball
;; - position x, y in screen coordinates
;; - velocity dx, dy in pixels/tick
(define B1 (make-ball (/ WIDTH 2) (/ HEIGHT 2) 4 -3))
(@dd-template-rules compound)
(define (fn-for-ball b)
(... (ball-x b)
(ball-y b)
(ball-dx b)
(ball-dy b)))
;;
======================================================================
=====
;;
======================================================================
=====
;; Functions:
( @htdf main)
(@signature Ball -> Ball)
;; start the game, call with (main B1)