- MVC
- Swing(for front of the application)
- Java 8 features( Functional interfaces, Lambdas ... etc )
- Main.java - creates and connects Model View and Controller, sets up Key Listeners for game.
- Model.java - encapsulates logic of the game(Inside we have helper classes like Logic.java,State.java..etc)
- View.java - encapsulates front of the application using Swing lib.Draw board,Snake on each iteration.
- Controller.java - Listens to model, whenever model is changed notifies view to update board/snake locations.