Language: Java
In this project, I designed a working copy of one of my favorite childhood games, FreeCell, that runs on the command line. Some of the features I paid attention to were:
- Ability to move multiple cards between cascade piles
- Ability to reject invalid moves with warning messages
- Ability to determine game end with a congratulating message
- Randomize the start of the game by shuffling the deck before each game
- Allow users to begin a new game in the midst of a running game
Through the process of developing this project, some of the concepts and practices I gained experience with were:
- Using the Model View Controller design pattern to delegate various functions of the program
- Designing appropriate interfaces/classes that are easy to build upon but resistant to change
- Consciously designing interdependence and distinguishing between public, private, and protected functions
- Developing a program that takes input from users and outputs text on a command line