Curl-2D is a 2D curling simulation built with JavaFX. I use this project to practice game physics, architecture, testing, and clean code standards.
- Employer summary:
EMPLOYER_HIGHLIGHTS.md - Repo:
https://github.com/dev-ricks/Curl-2D - Releases:
https://github.com/dev-ricks/Curl-2D/releases
- Creates and launches curling stones from player input
- Converts mouse drag into launch strength and launch angle
- Applies pre-launch spin with keyboard controls
- Renders a live HUD for strength, angle, and spin
- Includes in-game help, pause/resume, and round reset
N: create a new launch stone (only when there is no active launch stone)Mouse Press: start aimingMouse Drag: set launch strength and launch angleMouse Release: launch the active stoneW: move launch point up (pre-launch only)S: move launch point down (pre-launch only)Q: decrease spin (pre-launch only)E: increase spin (pre-launch only)P: pause/resume simulationR: reset round (clear all stones)Helpbutton: show/hide the control panel
- Launch angle cap:
±12° - Launch angle dead zone:
12%around center - Spin cap:
±3.0 - Spin step:
0.5per keypress (6presses to max)
- Sweeping
- Team turn flow
- End scoring and scoreboard
- Switching ends
- Sound effects and audio
Requirements:
- JDK 17
- Maven 3.9+
Clone:
git clone https://github.com/dev-ricks/Curl-2D.git
cd Curl-2DBuild:
mvn clean packageRun:
mvn javafx:runDefault test run:
mvn testRun including TDD-named suites:
mvn -Ptdd-tests testThe Release Bundles GitHub Actions workflow builds platform zip bundles:
curl-2d-linux.zipcurl-2d-macos.zipcurl-2d-windows.zip
On a published GitHub Release, these files are attached automatically.
- Sweeping is not implemented yet
- Team turn sequencing is not implemented yet
- Full scoring/ends flow is not implemented yet
- Sound system is not implemented yet
src/main/java/com/curl2d/game: game loop and utilitiessrc/main/java/com/curl2d/physics: physics and vector mathsrc/main/java/com/curl2d/model: domain models and constantssrc/main/java/com/curl2d/render: renderers and coordinate mappingsrc/main/java/com/curl2d/ui: HUD and input normalizationsrc/test/java: unit and integration tests
MIT. See LICENSE.