CompSci 308
Spring 2024
Advanced Software Design and Implementation

Breakout : Complete Implementation

Complex systems can be viewed either by focusing upon things or processes; there are compelling reasons for applying object-oriented decomposition, in which we view the world as a meaningful collection of objects that collaborate to achieve some higher level behavior. — Grady Booch

Build your planned Breakout game. Focus on just the basics of OpenJFX and Git (each assignment will cover more of these technologies so don't get carried away this week).

Along the way, as you get parts of your project working, it is recommended that you consider the design requirements and refactor your code (making multiple drafts to make sure you understand how every line works together and to get past the ugliness left over from all the things you tried just to "make it work") to practice thinking about code beyond just its functionality. As a reminder, you are expected to consistently adhere to DESIGN-01 through DESIGN-05

While you may not achieve this on the first project, meeting these Design Goals should make it easier to write code for the later levels.



Practice using GIT more effectively on your own before working in a team, by creating many, small, purposeful commits, rather than just one or two large "kitchen sink" or "submit-only" commits. To help with this goal, in your commit message, reference the single Functional or Design Requirement ID represented by the code change.

As a reminder, your final submission is the last commit on the main branch of the provided breakout_NETID project hosted in the course's Gitlab group before 3:08am in the morning.


In addition to organizing your code according to the Submission Guidelines and documenting your code, complete your README file — especially documenting your cheat keys, assumptions, and attributions for any images or resources you used.

A README file is common for most software projects that helps new developers get started with the project.