Brick Breaker is a remake of the original arcade Arkanoid, Breakout, or Brick Breaker (depending on which version that you have seen). Using my Standards library as a framework, combined with SDL, I decided to remake one of my oldest projects in C nonetheless. Everything here is written from scratch, including the data structures and algorithms. The only unoriginal parts are the sound effects/music, the bricks/balls, and the background. Viola Crotts drew the life graphic, the various powerup animations, the ball, and paddle. Everything else is from an assets package I purchased.
In the /lib/ directory is my Standards library, converted to C. This, unlike the Java version, does not have an external component (such as a .JAR file). So, the Standards files are simply copied from that project to this one. There are, however, SDL dependencies.
If you want to run the game, just download the runtime binaries at the provided links below. Conversely, if you wish to build the project, you will need to grab the development libraries for your system. For my purposes, I used the MinGW versions.
Windows: To rebuild the code, clone the repository to your computer. This project is compiled with MinGW and a makefile. The SDL .dll files are not included and will need to be downloaded separately to build from source without modifications to the makefile. Compile the code via mingw32-make
.
MacOS: For MacOS, run the following commands in your terminal to get the appropriate development files for SDL:
brew install SDL2
brew install SDL2_image
brew install SDL2_ttf
brew install SDL2_mixer
Then, compile via make
.
Linux (Ubuntu/Debian): The process is similar to the former, with the exception of having to install SDL files to your system in Linux. Run the following commands (or their distro-equivalent) in your terminal:
sudo apt-get install libsdl2-dev
sudo apt-get install libsdl2-image-dev
sudo apt-get install libsdl2-ttf-dev
sudo apt-get install libsdl2-mixer-dev
Then, compile via make
.
See the Issues Tab.
The master branch encompasses all significant changes. The development branch is used for in-progress modifications.
Code Quality Note (03/07/2022): I recognize that this repository has some very bad code, like shockingly bad. It produces large memory leaks and is generally just a poor representation of what C programming ought to be. So, while this may be a cool game, it is far from well-designed (despite what I thought two years ago when I wrote the game).