This project is a continuation and enhancement of the Futoshiki logic puzzle game developed in the previous assignment. It was created for the Object-Oriented Programming course at the Instituto Tecnológico de Costa Rica and focuses on applying software maintenance techniques through architectural and functional improvements.
The main goal of this project was to restructure and enhance the existing Futoshiki application by:
- Applying the MVC (Model-View-Controller) design pattern
- Implementing new gameplay features
- Ensuring a scalable, maintainable, and user-friendly system
- Supports board sizes of 5x5 to 9x9
- Grid size is configurable by the user via the settings menu
- XML file format for puzzle data updated to include grid size
- Players progress through
Easy
→Medium
→Hard
levels automatically - The game timer spans across all levels
- Each level’s result is evaluated for inclusion in the Top 10 leaderboard
- New
Multilevel
option added in game configuration
- Users can request possible valid values for a specific cell
- Suggestion logic accounts for:
- Row and column constraints
- Inequality restrictions around the cell (>, <, ˅, ˄)
- Real-time validation based on current game state
- Interactive and dynamic interface supports all new features
- Updated game configuration screen with:
- Difficulty: Easy / Medium / Hard / Multilevel
- Clock type: Real-time / Timer / None
- Digit panel position: Left / Right
- Grid size: 5–9
- Support for saving/loading the current game
- Improved Top 10 leaderboard by level
- Visual feedback for invalid plays and suggestions
futoshiki2022partidas.xml
: Puzzle definitions, now includes<cuadricula>
tagfutoshiki2022top10.dat
: Leaderboard data (Top 10 per level)futoshiki2022juegoactual.dat
: Stores current game statefutoshiki2022configuración.dat
: User configuration settings
- Java (OOP principles)
- Java Swing or JavaFX for GUI
- MVC architecture:
- Model: Game logic, file I/O, and state
- View: GUI components
- Controller: Coordinates user actions and model updates
- Stack-based undo/redo
- Java serialization and XML handling
- Clone the repository
- Open it in a Java IDE (IntelliJ, Eclipse, NetBeans)
- Make sure Java 11+ is installed
- Build and run the main class
- Use the configuration menu to choose difficulty, grid size, and other preferences
- JavaDoc comments in source code
- UML Class Diagrams (updated with new features)
- Description of added functionalities
- Overview of the MVC architecture used
- Setup instructions, conclusions, and known issues
Developed by students Steven Sequeira and Brayton Solano of Object-Oriented Programming, Semester II - 2022
Instituto Tecnológico de Costa Rica