Skip to content

olafwrieden/sudoku-gui

Repository files navigation

Logo

Sudoku GUI Java Game

As part of my Computer Science Degree, one of my assignments was to design and build a software product - a game.

The Design Brief

This project contains two stages:

  1. In Stage 1, you will need to develop a Command-line User Interface (CUI) version of the product. You will need to use text files to store input and output data from the program.
  2. In Stage 2 (this repo), you will upgrade the product to a Graphical User Interface (GUI) version. Meanwhile, you will include a Database component to the product, implement design patterns and include necessary unit tests.
  • Must be developed using Java in the NetBeans IDE.
  • Be bug-free and feature robust error handling.
  • Should be easy to build (no complex build configurations).
  • Needs to use Apache Derby (JavaDB) as the DBMS for the project.
  • Must contain basic unit tests for a few important functionalities of the program.
Expand Criteria & Requirements

Completed Requirement
✔️ User Interface (GUI)
  • Clear and well-designed graphical user interface
  • The interface is easy for users to interact with
✔️ Database
  • The program contains a database element
  • Can achieve database interactions and operations in the program
✔️ Software functionality and usability
  • The program is easy to compile and run without any manual configurations (e.g. set up input/output files, import .jar files, etc.)
  • The program can be easily interacted with without any errors
  • The complexity of the functionality
✔️ Software design & implementation
  • The program can be compiled successfully
  • Highly readable code
  • Meaningful and appropriate comments
  • Executes without runtime errors
  • Robust error handling
  • Clear class structure
  • Implementation of design patterns
  • Good coding and Object Orientation style
  • No obvious code smells
✔️ Unit Testing
  • Correct Tests
  • Tests cover important functionality well
  • Well-named tests

Game Overview

Home Screen

The Home Screen is shown after a user has logged in. From here, various application functions can be called and a list of high scores seen.

Home Screen

Sudoku Game

Inside the Sudoku Game, players are presented with a grid of chosen difficulty. Cell highlighting allows players to visually see all cells related to the selected one, as per Sudoku rules. Meanwhile, a timer keeps track of the game duration. NOTE: At any point in the game, you may exit. But unlike the CUI Version from Stage 1, your game will not be saved!

Sudoku Game

Need a Hint?

Sometimes players get stuck and need a hint. Based on the difficulty of the grid, a certain number of hints are available throughout the game to fill in a random cell that does not yet contain a digit. Don't run out!

Hints

Sudoku Rules

Unsure of how to play? From the home screen, or at any time during a game, players may view the Sudoku Rules. Read quickly because the timer isn't stopping for you!

Sudoku Rules

Sudoku Solved?

When a Sudoku puzzle is filled (provided there are no errors - these are caught throughout the game), players are presented with game statistics and awarded points depending on their grid's difficulty.

Sudoku Solved


User Access Controls

Sign Up or Log In

Sudoku is great when competing with friends, this game enables players to create an account and sign in so that every puzzle completed rewards points. This is where the database component comes in.

Sign Up Log In
Sign Up Log In

Account Controls

At signup/login duplicate email addresses and invalid credentials are not allowed.

Duplicate Email Invalid Credentials
Duplicate Email Invalid Credentials

Database Connection Error

If you have incorrectly configured the Apache Derby client required for this project, an error may be thrown preventing the game from starting. Only one instance of the Sudoku Game is currently supported.

Database Error

See something that can be improved?

While this is not an active project of mine, I would love to hear from you. Feel free to submit a Pull Request if you can improve this repository, or open an issue should you encounter a bug. 🐞