Skip to content

Java-based logic puzzle game Futoshiki, featuring MVC architecture, multi-level gameplay, customizable grid sizes (5x5–9x9), real-time validation, and user-friendly GUI. Includes save/load support and dynamic hint system.

Notifications You must be signed in to change notification settings

EngSteven/OOP-project-3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

Futoshiki Puzzle Game – Software Maintenance (MVC + Functional Enhancements)

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.

🧱 Project Scope

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

🚀 New Functionalities

✅ 1. Dynamic Grid Sizes

  • 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

✅ 2. Multilevel Gameplay Mode

  • Players progress through EasyMediumHard 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

✅ 3. Suggested Moves per Cell

  • 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

🖼 GUI Improvements

  • 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

🗂 File Structure

  • futoshiki2022partidas.xml: Puzzle definitions, now includes <cuadricula> tag
  • futoshiki2022top10.dat: Leaderboard data (Top 10 per level)
  • futoshiki2022juegoactual.dat: Stores current game state
  • futoshiki2022configuración.dat: User configuration settings

🧠 Technologies and Patterns

  • 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

💾 How to Run

  1. Clone the repository
  2. Open it in a Java IDE (IntelliJ, Eclipse, NetBeans)
  3. Make sure Java 11+ is installed
  4. Build and run the main class
  5. Use the configuration menu to choose difficulty, grid size, and other preferences

🧾 Documentation

  • 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

👨‍💻 Authors

Developed by students Steven Sequeira and Brayton Solano of Object-Oriented Programming, Semester II - 2022
Instituto Tecnológico de Costa Rica


About

Java-based logic puzzle game Futoshiki, featuring MVC architecture, multi-level gameplay, customizable grid sizes (5x5–9x9), real-time validation, and user-friendly GUI. Includes save/load support and dynamic hint system.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages