An epidemic simulation with visuals to practice design patterns. Many design principles was in my mind while I implemented it. Put extra effort to get familiar with modern Java practices with functional programming paradigms which I love. An over-engineered example for sure...
Make sure you have maven and javac then you can type:
mvn clean javafx:run
Starting window asks some parameters for the simulation. You can change them every run and see how it changes the Death Count.
Spoiler Alert: You don't go extinct when you stay home & wear mask.
Red Squares: People currently in social interaction.
Blue Squares: People walking around without social interaction.
Squares with Green Circles: Infected people.
Stats are gather by a decorated component of the simulation to demonstrate the decoupling of components.
Used Component Pattern. Similar to what Unity has. See media/diagram
for more.
Why so over-engineered? Because the main purpose was to practice...