CompSci 308
Spring 2024
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

Deliverables

You will submit this project in stages:

Specification

Individually, write a Java program using OpenJFX that allows someone to play a multi-level game of Breakout, a game originally designed by Steve Jobs and Steve Wozniak (the founders of Apple, Inc.). The basic game displays a ball bouncing around the window destroying blocks as it hits them. The player controls a paddle to keep the ball from exiting the window, causing the player to lose a life and reseting the ball to its starting position. If the player misses the ball too many times, the player loses. If all the blocks are cleared from the screen, the level ends and a new one loaded. If the player clears all the levels, the game ends and the player wins.

You are expected to go beyond creating a basic version of the game (a common CompSci 101 level assignment), with multiple levels, multiple lives, and unique behaviors that make the game more complete. However, 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.

The full list of requirements is given here.

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.

Individual Responsibilities

This project is intended to be a fun introduction to the course's procedures and goals and to give us an understanding of your current coding and design level. It will not impact your final grade (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

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