The Heist is a small Java platformer game where the player moves through dangerous rooms, collects every jewel, and avoids hazards to finish the run. It utilizes core java principles to dynamically load in levels and test functions for programming efficiency. Designed, architected and programmed by Angad Batth. Images/Sprites and game assets generated by ChatGPT Imagine
- Multiple text dynamically loaded levels
- Player movement, jumping, collisions, and hazards
- High score saving with file I/O
- A state-driven menu / play / game over flow
- Claymorphic art assets and a packaged desktop build flow
A / LEFT= move leftD / RIGHT= move rightW / SPACE= jumpESC= pause / resumeR= restart current room while pausedM= return to menu while paused
This project gave me hands on practice with core Java and object oriented programming ideas:
OOPby breaking the game into models, views, controllers, and utilitiesEncapsulationby keeping entity data and behavior inside classes likePlayer,Obstacle, andLevelManagerInheritanceby building shared behavior through theEntitybase classPolymorphismby updating and rendering many entity types through shared parent referencesGame State Managementby separating menu, gameplay, pause flow, and game-over logicFile I/Oby loading level maps from text files and saving high scores to diskCollision Logicthrough shared physics helper methodsRecursionin theScannerAlgorithmutility and its related JUnit testTestingwith JUnit for utility logic and score loading behaviorPackagingby turning the project into a runnable jar and a desktop app image
src/= main Java source codeassets/= levels, data, and image assetsoptimization/tests/= JUnit testsscripts/= helper scripts for running, building, and packaging
Quick run:
./run-game.command- or
bash scripts/run-game.sh
./build-jar.command- or
bash scripts/build-jar.sh
This creates:
dist/the-heist.jar
./package-app.command- or
bash scripts/package-app.sh
This creates:
release/The Heist.app





