L'interface graphique de mon Sudoku est assez simple.
Un ensemble de QLineEdit sous forme de grille et 6 boutons qui permettent les actions suivantes:
Charger : Permet de charger un fichier contenant une grille. Pour qu'il soit affiché dans la fenêtre de chargement, le fichier doit avoir l'extension .txt ou .sdk. La structure du fichier est assez libre, le seule contrainte est que les 81 premiers caractères valides doivent correspondrent aux chiffres de la grille.
Ainsi seuls les caractères suivants sont pris en compte
1-9: numéro imposé
a-i: numéro proposé par le joueur
0: case vide
Le programme ferme le fichier après avoir lu 81 caractères. Cela permet d'ajouter des informations diverses au document à la fin de celui-ci.
Sauver : Enregistre la table actuelle dans un fichier respectant le format décrit ci-dessus.
Vérifier : Vérifie si la grille respecte les règles du sudoku. Elle indique donc que la grille est invalide si:
- La grille n'est pas complète
- Un chiffre apparaît plusieurs fois dans une même ligne
- Un chiffre apparaît plusieurs fois dans une même colonne
- Un chiffre apparaît plusieurs fois dans une même sous-grille
Solution : Résouds la grille proposé. Il est possible de verrouiller les cases proposées par le joueur, si le joueur ne demande pas de les verrouillée, celles-ci sont enlevées avant la résolution.
Il utilise la technique du backtracking pour résoudre la grille et indique qu'il n'y a aucune solution possible si la grille n'est pas possible. Par contre, si plusieurs solutions existe, une des solutions sera proposée.
À propos : affiche une fenêtre "A propos..."
Quitter : Quitte le programme.
La génération de grille n'a pas été implémentée dans ce programme.