100% satisfaction guarantee Immediately available after payment Both online and in PDF No strings attached
logo-home
Summary CPSC 110 PSET 3 SOLUTIONS - 2022 $18.49   Add to cart

Summary

Summary CPSC 110 PSET 3 SOLUTIONS - 2022

 2 views  0 purchase
  • Course
  • Institution

Solutions to cpsc 110 pset 3

Preview 2 out of 6  pages

  • August 28, 2022
  • 6
  • 2022/2023
  • Summary
avatar-seller
;; The first three lines of this file were inserted by DrRacket. They record
metadata
;; about the language level of this file in a form that our tools can easily
process.
#reader(lib "htdp-beginner-reader.ss" "lang")((modname pset-03-solution) (read-
case-sensitive #t) (teachpacks ()) (htdp-settings #(#t constructor repeating-
decimal #f #t none #f () #t)))
;; DO NOT PUT ANYTHING PERSONALLY IDENTIFYING BEYOND YOUR CWL IN THIS FILE.
;; YOUR CWLs WILL BE SUFFICIENT TO IDENTIFY YOU AND, IF YOU HAVE ONE, YOUR
;; PARTNER.
;;

(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)

;;
;; Remember that [0, 100] has 101 pixels, so subtract 1 from both BOT and RIG!
;;

, (define TOP (+ 0 BALL-RADIUS)) ;these constants define the "inner box"
(define BOT (- HEIGHT BALL-RADIUS 1)) ;that constrains the center of the ball
(define LEF (+ 0 BALL-RADIUS)) ;
(define RIG (- WIDTH BALL-RADIUS 1)) ;

(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)
;; <no tests for main functions>

(@template htdw-main)

(define (main b)
(big-bang b
(on-draw render-ball) ;Ball -> Image
(on-tick next-ball) ;Ball -> Ball
(on-mouse handle-mouse)));Ball Integer Integer MouseEvent -> Ball


(@htdf render-ball)
(@signature Ball -> Image)
;; place BALL on image at appropriate x, y coordinate
(check-expect (render-ball (make-ball 20 30 3 3))
(place-image BALL 20 30 MTS))
(check-expect (render-ball (make-ball (- WIDTH 4) (- HEIGHT 5) -2 -3))
(place-image BALL (- WIDTH 4) (- HEIGHT 5) MTS))
#;
(define (render-ball b) MTS)

The benefits of buying summaries with Stuvia:

Guaranteed quality through customer reviews

Guaranteed quality through customer reviews

Stuvia customers have reviewed more than 700,000 summaries. This how you know that you are buying the best documents.

Quick and easy check-out

Quick and easy check-out

You can quickly pay through credit card or Stuvia-credit for the summaries. There is no membership needed.

Focus on what matters

Focus on what matters

Your fellow students write the study notes themselves, which is why the documents are always reliable and up-to-date. This ensures you quickly get to the core!

Frequently asked questions

What do I get when I buy this document?

You get a PDF, available immediately after your purchase. The purchased document is accessible anytime, anywhere and indefinitely through your profile.

Satisfaction guarantee: how does it work?

Our satisfaction guarantee ensures that you always find a study document that suits you well. You fill out a form, and our customer service team takes care of the rest.

Who am I buying these notes from?

Stuvia is a marketplace, so you are not buying this document from us, but from seller travissmith1. Stuvia facilitates payment to the seller.

Will I be stuck with a subscription?

No, you only buy these notes for $18.49. You're not tied to anything after your purchase.

Can Stuvia be trusted?

4.6 stars on Google & Trustpilot (+1000 reviews)

76449 documents were sold in the last 30 days

Founded in 2010, the go-to place to buy study notes for 14 years now

Start selling
$18.49
  • (0)
  Add to cart