Bonjour et bienvenue à tous pour cette première édition des concours du Site du Zéro !
Les concours sont une nouvelle façon attrayante de pratiquer ce que vous avez appris en lisant les tutoriels du site. Vous pouvez travailler seul ou en équipe, tout dépendra du concours et des limites qui y seront fixées.
L'objectif est avant tout de
s'amuser et d'
acquérir de l'expérience. Certains concours seront primés (il y aura des lots pour les meilleurs), d'autres comme celui-ci se feront juste pour le plaisir de participer.
Ce premier concours est un
concours C++ faisant appel à la
bibliothèque Qt, pour faire écho aux nombreux chapitres récemment parus dans le
tutoriel C++.
Les règles du Sudoku
C'est un jeu à la mode dont vous avez forcément entendu parler. Il consiste à remplir des cases par des chiffres de 1 à 9... mais pas n'importe comment. Prenons cet exemple, tiré de Wikipédia :
Certaines cases sont déjà remplies. Le but du jeu est de trouver les chiffres manquants sur les cases vides. Les règles sont simples :
- Sur chaque ligne, il doit y avoir tous les chiffres de 1 à 9.
- Sur chaque colonne, il doit y avoir tous les chiffres de 1 à 9.
- Dans chaque carré de 3x3 cases, il doit y avoir tous les chiffres de 1 à 9.
Une fois résolu, le sudoku précédent ressemble à ceci :
Regardez bien : chaque ligne comporte tous les chiffres de 1 à 9, pareil pour chaque colonne, pareil pour chaque carré de 3x3 cases.
Vous trouverez plus d'informations et de conseils sur l'
article de Wikipédia.
Ce que vous devez programmer
L'objectif de ce concours est de programmer un jeu de Sudoku en C++ avec une interface graphique en Qt. Vous ne devrez pas hésiter à consulter à nouveau le
cours de C++, mais aussi la
doc de Qt au besoin.
Ce concours consiste avant tout à réaliser la
partie graphique (le GUI), un nombre important de points étant basés dessus.
Il propose aussi une partie
algorithmique pour ceux qui veulent aller plus loin et avoir plus de points (recommandé si vous avez du temps, mais pas obligatoire pour rendre votre travail).
Voici quelques exemples de programmes de Sudoku pour vous donner des idées :
Notez que tous les programmes présentés ci-dessus n'ont pas forcément été réalisés avec Qt, mais ils peuvent vous donner des idées pour réaliser une interface graphique originale.
Ce qui est obligatoire
- Programmation en C++.
- Utilisation de la bibliothèque Qt (Qt 4.4 recommandé).
- Réalisation d'une interface graphique permettant de saisir des chiffres dans une grille, un seul chiffre par case.
- Bouton "Vérifier !" permettant de dire à l'utilisateur si la grille est valide lorsque celle-ci est complète. Une grille valide doit respecter les règles du Sudoku décrites plus haut.
Ces critères obligatoires ne sont pas nombreux, ce qui permet à tout le monde de participer même avec un programme minimal.
Afin que ceux qui ont un meilleur niveau ne s'ennuient pas, plusieurs éléments facultatifs peuvent être ajoutés pour obtenir des points en plus.
Ce qui est facultatif...
...mais recommandé car cela peut vous rapporter des points en plus.
- Aide à l'utilisateur affichant la liste des chiffres possibles pour la case actuellement sélectionnée.
- Lecture d'une grille dans un fichier pouvant contenir plusieurs niveaux de Sudoku à remplir.
- Génération aléatoire d'une grille.
- Résolution automatique de la grille par l'ordinateur. Un algorithme de force brute (qui teste toutes les possibilités) peut être envisagé pour ceux qui veulent faire simple ou quand il n'y a pas d'autre choix, mais des techniques plus fines sont aussi possibles. Renseignez-vous.

Organisation
Vous pouvez travailler seul ou par équipe de 2 pour ce concours, comme vous préférez. Le fait de travailler en équipe n'apporte ni bonus ni pénalité.
N'hésitez pas à poster sur le forum du concours si vous êtes bloqué ou si vous avez besoin de poster toute sorte de question.
Vous devrez rendre un
fichier ZIP, avant la date de fin du concours, contenant
uniquement les fichiers du code source permettant de compiler votre programme.
Ne mettez rien d'autre que les fichiers strictement nécessaires pour compiler votre projet : .cpp, .h, .pro, images, et éventuellement fichiers de traduction. Nous voulons juste avoir à faire qmake et make pour pouvoir tester votre programme.
Ne joignez pas de makefile. Ne joignez pas d'exécutable compilé. Ne joignez pas les DLL de Qt. La présence d'un fichier superflu sera sanctionnée.
Lorsque vous rendrez votre fichier ZIP, n'hésitez pas à donner une description complète de votre programme, en précisant ce que vous avez réussi à faire, ce que vous n'avez pas eu le temps de faire, ce qui vous a posé le plus de soucis... Bref autant de choses qui permettront au jury de mieux comprendre votre travail et d'en tenir compte éventuellement pour de futurs concours.
Ce concours n'est pas primé, vous participerez donc pour le plaisir et pour progresser !
Bon courage à tous !
N'oubliez pas, l'important c'est de participer !