Vous êtes sur la page 1sur 18

République Tunisienne

Ministère de l’enseignement Supérieur et de la Recherche Scientifique


Université EL Manar

Mini-Projet en C

l’École Nationale d’Ingénieurs de Tunis


dans la discipline

Télécommunication

par
Dorra AMMAR et Islem BARCHOUCH

Jeu SUDOKU
Remerciements
Tout d’abord, nous remercions profondement Madame Maroua Ben SLimane ,
notre encadrante, qui nous a soutenu tout au long de la periode du projet avec ses
conseils prècieux.

2
Contents

Contents 3

Liste des figures 4

1 Etude de l’existant 7
1.1 Règle du jeu sudoku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7
1.2 Critique de l’existant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8
1.3 Solution envisagée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
1.3.1 Description du menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
1.3.2 Logique d’implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . .11
Fonction solveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
Fonction générateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

2 Réalisation 13
2.1 Environnement de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13
2.1.1 Environnement matériel . . . . . . . . . . . . . . . . . . . . . . . . . . . .13
Ordinateur 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13
Ordinateur 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14
2.1.2 Environnement logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14
Outil logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14
Langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14
2.2 Présentation des interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14

3
Liste des figures

1.1 Explication du jeu sudoku............................................................................................8


1.2 Sudoku sur les jounaux................................................................................................8
1.3 Sudoku sur les sites web..............................................................................................9

2.1 Affichage du menu principal.......................................................................................15


2.2 Choix des niveaux.......................................................................................................15
2.3 Affichage du grille Sudoku..........................................................................................16
2.4 Affichage du grille après la validation.........................................................................16
2.5 Le dernier affichage en cas de determination de la grille.............................................17

4
LISTE DES TABLES

Liste des tables

1.1 Liste de choix du menu principal.................................................................................10


1.2 choix des niveaux........................................................................................................10
1.3 Liste des choix pour manipuler la grille.......................................................................11

5
Introduction Générale

Dans le cadre du mini-projet du module « programmation C » élaboré lors de la 1ére année


Télé- communications à l’École Nationale d’Ingénieurs de Tunis, nous avons eu l’occasion
d’implémenter un jeu sous forme d’une application console, pour cela nous avons choisi le fameux
jeu « sudoku ».

En effet, le sudoku est un jeu en forme de grille défini en 1979 par l’Américain Howard
Garns, mais inspiré du carré latin, ainsi que du problème des 36 officiers du mathématicien suisse
Leonhard Euler.

Afin de mener à terme notre projet, nous avons réalisé une démarche que nous détaillerons
dans deux chapitres. Le chapitre I est consacré à l’étude de l’existant, le chapitre II décrit
l’environnement de développement et présente les différentes interfaces implémentées.

Finalement, nous clôturons par la conclusion générale qui résume notre travail et présentera
les perspectives.

6
Chapitre 1

Etude de l’existant

Introduction
La première partie de ce chapitre définie les règles du jeu sudoku, la deuxième partie est
consacré à l’étude analytique et à la critique de l’existant, la troisième partie présente les solutions
envisagées et la quatrième partie décrit notre application et le logique d’implémentation.

1.1 Règle du jeu sudoku


Le Sudoku est un jeu très populaire. Il s’agit de remplir une grille comptant 9 lignes et 9
colonnes, (elle même décomposée en 9 sous grilles de taille 3*3) à l’aide de chiffres compris entre
1 et 9 en respectant les trois règles suivantes :

-Tous les chiffres d’une ligne doivent être distincts.

-Tous les chiffres d’une colonne doivent être distincts.

-Tous les chiffres d’une des sous grille 3*3 doivent être distincts.

Aussi le jeu ne consiste pas à remplir une grille vierge, mais pré remplie. Un problème de Sudoku
consiste à compléter une grille pré remplie n’admettant qu’une unique solution respectant les trois
règles précédentes.

7
1.2. CRITIQUE DE L’EXISTANT

Figure 1.1: Explication du jeu sudoku

1.2 Critique de l’existant


Le sudoku est un jeu de réflexion, en effet, lors d’une partie de sudoku, vous sollicitez vos
facultés de raisonnement, vos capacités intellectuelles sont alors renforcées. Le but est de remplir
des grilles le plus vite possible. Le sudoku stimule également une grande partie de votre mémoire
visuelle. En exerçant régulièrement votre cerveau à cette activité, la concentration s’en trouve
accrue et la mémoire est nettement plus performante. Aujourd’hui, il est très facile de se procurer
des grilles : dans les magazines, les livres, les journaux et les sites spécialisés. Un probléme se
découle lorsqu’on joue sur des livres sudoku c’est qu’on ait obligé d’utiliser un crayon et une
gomme aussi pour les sites web ont doit avoir une connexion internet pour pouvoir jouer donc ces
méthodes ne sont pas accessible à l’utilisateur partout en tout temps.

Figure 1.2: Sudoku sur les jounaux

8
CHAPITRE 1. ETUDE DE L’EXISTANT

Figure 1.3: Sudoku sur les sites web

9
1.3. SOLUTION ENVISAGÉE

1.3 Solution envisagée


L’objectif de ce projet consiste à implémenter une application de bureau « sudoku », qui affiche
une infinité de grilles chacune d’elles aient une seule solution, vous pouvez donc choisissez votre
niveau de difficulté et commencez votre jeu.

1.3.1 Description du menu


Cette application supportera les fonctionnalités suivantes :
1-Permettre d’afficher un menu principal qui comporte deux choix comme l’illustre le tableau ci-
dessous :

Numéro Choix Acteurs Description


1 Nouvelle partie Joueur Permet de jouer une partie de sudoku
2 Quitter Joueur Permet de quitter le programme

Table 1.1: Liste de choix du menu principal

2-Permettre de façon intuitive et ergonomique d’afficher et de résoudre des grilles de Sudoku


selon le degré de difficulté que vous choisissez :

Numéro Choix Acteurs Description


1 Level 1 Joueur Permet d’afficher une grille facile qui comporte 27
cases vides
2 Level 2 Joueur Permet d’afficher une grille facile qui comporte 37
cases vides
3 Level 3 Joueur Permet d’afficher une grille facile qui comporte 42
cases vides

Table 1.2: choix des niveaux

3- Permettre à l’utilisateur de remplir la grille et de vérifier si la grille est correcte ou non:

10
CHAPITRE 1. ETUDE DE L’EXISTANT

Numéro Choix Acteurs Description


1 Remplir la grille Joueur Permet de remplir les cases vides de la grille dans
l’ordre
2 Valider la grille Joueur Permet de vérifier si la grille est parfaite ou non :
Si
la grille n’est pas parfaite, elle efface les numéros
incorrects et dans ce cas vous devez choisir «rem-
plir la grille» pour corriger votre travail et Si la
grille est parfaite elle revenu au menu principal
3 Quitter Joueur Permet de quitter le programme

Table 1.3: Liste des choix pour manipuler la grille

1.3.2 Logique d’implémentation

Cette partie présente les méthodes qu’on a utilisé pour implémenter une grille sudoku admettant
une seule solution.

Fonction solveur

Considérons une grille pré remplie d’un Sudoku. On commence par la première case. Si elle
est déjà remplie, on passe é la suivante et ainsi de suite jusqu’ é atteindre une case vierge. On
affecte la valeur "1" a cette case vierge et on vérifie si la grille obtenue ne viole aucune des trois
contraintes données dans l’introduction. Si ce n’est pas le cas, on incrémente la valeur d’une unité
et on recommence. Si les contraintes sont satisfaites, on passe " à la case vierge suivante. A
nouveau on teste les valeurs de "1" à "9" et on poursuit ainsi. Si on aucune des valeurs ne permet
de satisfaire les contraintes, c’est qu’une erreur a été commise précédemment. On revient donc en
arrière d’une case et on incrémente la valeur de la case en question d’une unité, etc.
Si la dernière case est remplie en satisfaisant les conditions nécessaires, on enregistre cette solution
et on incrémente cette case et on continu à chercher une nouvelle solution. La procédure s’achéve
si on a testé tous les possibilités de 1 à 9 pour la première case vide de la grille.

Fonction générateur

Considérons une grille parfaite qui servira de base pour créer une grille à trou. On choisit aléa-
toirement une case et on écrase son contenu avec la valeur zéro puis on fait appel à la fonction
solveur pour tester si la grille admet une solution unique ou non, si les contraintes sont satisfaites
on passe à une autre case, si on trouve plus qu’une solution alors cette case doit retourner à sa
valeur ancienne et on choisit aléatoirement une autre case, on poursuit ses étapes jusqu’on atteint le
nombre de trou souhaité.

11
1.3. SOLUTION ENVISAGÉE

Conclusion
Dans ce chapitre, Nous avons fait l’étude conceptuelle du jeu sudoku. Nous avons présenté
d’abord, les régles du jeu. Puis, nous avons décrit d’une façon plus détaillée les différentes parties
du projet. Dans le chapitre suivant, nous présenterons les interfaces de l’application.

12
Chapitre 2

Réalisation

Introduction
Ce chapitre sera consacré à l’aspect implémentation et à l’exposition du travail réalisé. Nous
com- mençons par l’environnements logiciel et matériel de développement. Par la suite, nous
illustrerons les fonctionnalités développées avec quelques captures d’écran présentant les interfaces
réalisées.

2.1 Environnement de travail


Pour accomplir notre application avec succès il faut savoir utiliser les outils adéquats et néces-
saires. Dans cette partie, nous nous intéressons à présenter l’environnement de travail matériel et
logiciel pour la réalisation de notre projet.

2.1.1 Environnement matériel


Nous présenterons dans cette partie l’environnement matériel qui nous a permis de réaliser
notre projet.

Ordinateur 1

-Processeur : Intel core i5.

-Mémoire : 4 Go de RAM.

-Disque dur : 1 To HDD.

-Systeme d’exploitation : Windows 10

13
2.2. PRÉSENTATION DES INTERFACES

Ordinateur 2
-Processeur : Intel core i7.

-Mémoire : 8 Go de RAM.

-Disque dur : 750 Go HDD.

-Systeme d’exploitation : Windows 10

2.1.2 Environnement logiciel


Dans cette partie, nous présenterons le logiciel et le langage utilisés lors de développement de
notre application.

Outil logiciel
CodeBlocks : C’est un environnement de développement intégré libre et multiplate-forme. Il est
orienté C et C++, mais il supporte d’autres langages. CodeBlocks existe pour Linux, Windows et
Mac OS X.

Langage
C : Est un langage de programmation de bas niveau très populaire, crè e dans les années 1970
par D.Ritchie et B.W.Kernighan. Il est portable, libre, faiblement typé (peu de types de variables
différents : son fonctionnement est donc proche de l’ordinateur (gain en rapidité), mais un brin plus
difficile à manipuler pour le programmeur). Le C n’est sans doute pas le langage le plus facile à
apprendre (notamment à cause de l’adoption du concept parfois un peu obscure des pointeurs), ni le
plus récent, mais ses qualités font de lui un langage incontournable en matiè re de programmation.

2.2 Présentation des interfaces


Au lancement de l’application, le joueur doit choisir un de ces deux choix illustrés dans la
figure si dessous :

14
CHAPITRE 2. RÉALISATION

Figure 2.1: Affichage du menu principal

En cas où le joueur commence une nouvelle partie le programme affiche les différents niveaux
du jeu :

Figure 2.2: Choix des niveaux

15
2.2. PRÉSENTATION DES INTERFACES

Aprés, le programme affiche la grille sudoku trouée, le joueur doit choisir un de ces trois choix
illustrés dans la figure si dessous :

Figure 2.3: Affichage du grille Sudoku

Lorsque le joueur termine le remplissage du grille il doit valider son travail et donc le programme
affiche la grille en supprimant les valeurs fausses, le joueur doit choisir « Remplir la grille » pour
corriger son travail

Figure 2.4: Affichage du grille après la validation

16
CHAPITRE 2. RÉALISATION

Enfin, lorsque le joueur termine le remplissage avec succèe, le programme affiche la durée du
temps

Figure 2.5: Le dernier affichage en cas de determination de la grille

Conclusion
Ce chapitre présente la dernière phase d’élaboration du projet : la réalisation.
Nous avons lors de ce chapitre défini notre environnement de travail. Après, nous avons présenté
des captures des différentes interfaces pour donner une meilleure idée sur notre projet.

17
Conclusion Générale

L’objectif principal de ce projet est la conception et le développement d’une application sudoku


qui s’inscrit dans le cadre du mini-projet de programmation Procédurale en C.
L’application réalisée répond aux besoins fonctionnels et non fonctionnels donc, elle satisfait par-
faitement les attentes des utilisateurs.
Cependant, nous avons rencontré un certain nombre de difficultés, notamment lors de la
manipu- lation du logiciel Latex et lors de l’implémentation de la fonction générateur du
programme
Grâce à ce projet, nous avons eu l’opportunité d’enrichir nos compétences en langage C et de
dévelop- per un gout affirmé pour le travail en binôme.

18