Aller au menu - Aller au contenu

Fiche d'œuvre

Retour au concours

Auteur

Œuvre

Téléchargement
Rendu le 04/07/2008 à 23:46:23

Titre : QtSudoku
Concours : Le Sudoku : des nombres en folie !

Description de l'auteur

La version proposée en téléchargement ZIP sur le Site du Zéro est la révision 24. Si vous savez utiliser SVN (ou que vous voulez l'apprendre), vous avez tout à gagner. Il y a de très fortes chances que la version en ZIP ne soit pas à jour (en effet, j'ai la flemme de refaire le ZIP à chaque commit).

Tout d'abord, l'image non-redimensionnée peut être trouvée ici.

QtSudoku (Cute Sudoku) est le Sudoku que je suis en train de créer pour le Site du Zéro.

Ce projet est développé activement avec Subversion et Visual Studio 2008 (la compilation avec MinGW est quand même vérifiée toutes les 1-2 jours).

Pour ceux qui veulent et télécharger mon projet, ça se passe ici. Pour récupérer les sources, il vous faudra Subversion.

Le .pro est fourni. Si vous utilisez Visual Studio, et que vous l'avez configuré pour qu'il compile des applications Qt, prenez le .sln à la racine du projet; si vous utilisez la ligne de commande, rendez-vous dans le sous-sous-dossier QtSudoku/QtSudoku et faites l'habituel qmake et make.

Ce programme est fourni avec 124 grilles au format MSGF, que vous pouvez bien entendu réutiliser. Je les avais codées pour un très vieux programme de Sudoku qui faisait partie de mes vieux projets - l'implémentation est dans la fonction loadMSGF de QsModel.

Voici la liste des fonctionnalités que je juge intéressantes sur mon programme:
  • Indicateurs [28.06]: Ce sont les petits nombres que vous voyez dans les cases vides. L'utilisateur peut les remplir pour mieux voir ses possibilités. Ces indicateurs peuvent avoir beaucoup d'autres utilités, pas encore implémentées, et servent beaucoup quand les grilles sont plus difficiles
  • Commentaires personnels [28.06]: L'utilisateur peut saisir des notes dans le programme, pour mieux retenir ce à quoi il pense.
  • Time machine [29.06]: Le programme retient absolument toutes les modifications faites dans un Sudoku, et permet de restaurer la grille à un état antérieur. L'état des indicateurs peut aussi être géré, on retrouve donc la grille que l'on avait lors d'un état précis. Utile lorsqu'on essaie quelque chose. Quelques fonctionnalités à venir pourraient utiliser Time Machine.
  • Navigation facilitée au clavier [30.06]: On peut naviguer de case en case par le clavier. De plus, on peut maintenant assigner un indicateur en faisant Alt+Nombre (en plus de clic-droit). Cette fonctionnalité, j'y pensais depuis assez longtemps, parce que je trouvais ça long à la souris.
  • Agrandissement dynamique du QsView [2.07]: Deux images valent deux mille mots:
    Taille minimum(270px*270px):
    Image utilisateur
    Prenons une autre grille, mais agrandissons la fenêtre (et donc par conséquent le QsView):
    Image utilisateur


Voici ce que j'aime dans la conception de mon programme:
  • Widget QsView: la grille de Sudoku est implémentée comme étant un widget, ce qui permet de la réutiliser aisément. De plus, ce widget respecte le design pattern modèle/vue simplifié de Qt.


Il s'agit de mon premier programme utilisant Qt.

Annexe I: Liste des raccourcis clavier:
http://www.assembla.com/wiki/show/qtsu [...] l'utilisateur
Cette liste n'est peut-être pas à jour.

Impression du jury

Par sa description et les premiers screenshots que nous avons pu en voir, QtSudoku s'annonçait prometteur. Qu'en est-il en pratique ?

L'archive est bien organisée mais contient des fichiers qui n'étaient pas demandés (dont le projet Visual Studio et le makefile). On aurait préféré s'en passer.


Côté code



Le code est bien structuré, bien agencé. On sent une certaine expérience dans le développement.
On compte beaucoup de fichiers pour ce projet, pas toujours très gros d'ailleurs. Il y en a principalement un par widget, ce qui est la bonne technique à adopter quand on développe avec Qt.

Le code est malheureusement assez vide de commentaires. Une erreur que l'on a tendance à faire lorsqu'on développe avec une certaine aisance.
Du reste, il n'y a rien à redire : c'est propre et clair.


Côté GUI



Le GUI est certainement un des plus aboutis que j'ai pu tester.

Un soin particulier a été apporté au widget personnalisé du sudoku. On peut le remplir à la souris comme au clavier et il se redimensionne tout seul avec la fenêtre : un très bon point ! Malheureusement quelques bugs subsistent (les petits chiffres ne sont pas effacés si on recommence la grille par exemple). On aurait apprécié un manuel d'utilisation à l'intérieur du logiciel, il y a des choses qu'on ne peut pas deviner comme l'ajout des petits chiffres avec la touche Alt.

On note aussi une idée originale : la "time machine" qui vous permet de revenir en arrière sur vos précédents coups. Intéressant et bien, bien que ce n'était pas demandé.

Le jeu peut charger des Sudoku tous prêts dans des fichiers, mais en générer.
Il peut valider une grille mais ne donne pas d'indices au joueur. Il ne peut (hélas) pas résoudre de grille non plus.


En bref, du très bon travail sur l'interface et un gros potentiel, mais on est assez frustré de voir que tu n'es pas allé jusqu'au bout alors que tu en avais visiblement largement les capacités. ;)

Détail des notes

Critère M@teo21 Moyenne
Total 25
Interface graphique 10 10
Vérification de la grille 7 7
Lisibilité du code 4 4
Aide à l'utilisateur 0 0
Lecture de la grille dans un fichier 4 4
Génération aléatoire de la grille 0 0
Résolution automatique de la grille 0 0