Trabalho escolar para a cadeira de Programação avançada em NetBeans
The logic part is divided in states, which state represent a moment in game(fighting , selecting card, ect..). Using states it's easy to add changes in the program in the future.
For the GUI was used the architect MVC, with one view for each state, listeners for controllers and the logic represents the model. Again with the goal of in the future make it easy change it.
Also, this program comes with a Text User Interface (TUI), that also works thanks to the architecture of states used for the logic part combined with one good encapsulation of the logic classes