CompSci 308
Spring 2023
Advanced Software Design and Implementation

Onboarding Project: Breakout Game

If children can build, play and understand games that work, it's possible that someday they will understand and design systems that work. And the world is full of complicated systems. —Sara Corbett

Submitting Your Work

You will be provided a GIT repository, breakout_NETID, hosted in the course's Gitlab group to work on this project (do not fork this repository, just clone it directly). All project submissions for this course will be based on only the version of your files in the provided Gitlab repository by 3:08am in the morning on the day after that given on the course Calendar (effectively a few extra hours grace time past midnight).

As your submission for this project, use GIT to addcommit, and push the following

Your code is expected to follow the course coding conventions and be reasonably commented (full Javadoc comments are encouraged but not required yet).

Specification

Individually, write a Java program using OpenJFX that allows someone to play a multi-level game of Breakout, in which a ball bounces around the window destroying blocks as it hits them, and successive levels represent a different variation of the basic game. Thus, you are expected to go beyond creating a basic version of the game (a common CompSci 101 level assignment).

Focus on the following functionality features:

While the exact layout of the game is up to you, it should display at least the following different scenes:

Note, your game should not be so complex to require any buttons, menus, toolbars, or multiple "threads". Drawing and interacting with shapes, images, and text in fixed positions within the scene is completely sufficient for all the requirements. No level needs to be the greatest version created or even have sophisticated graphics — so everyone should be able to create a complete program by picking less complex variations if necessary.

Deliverables

You will submit this project in stages:

Project Goals

This project is intended to be a fun introduction to the procedures and goals for the course and to give us an understanding of your current coding and design level. Its grade will not impact your final grade in the course (unless you make no effort on it).

Specifically, it is intended as a warm-up to help you get used to the software, tools, and policies used throughout the semester

Design Specifications

You are not expected to follow the course's Code Design Habit Checklist yet, instead focus on the topics discussed in class

This is your opportunity (perhaps for the first time) to think beyond the functionality — about how you want to organize a program and how to make your code readable.

CompSci Context

This project highlights the following interesting and foundational Computer Science concepts. You are not expected to write a general or complete version of any of these concepts, but learning about them may help provide a context to begin thinking about some design issues or connect your work in this course to the broader computing community.

Resources

Take time now to learn and practice with these tools which will be used throughout the semester

You are welcome to look at the tutorial below (or any other ones you find online to learn about OpenJFX), but it is more complex than required for this project. In any case, your game should be distinctly different from any examples you find (i.e., create your own Breakout game, do not simply copy one).