Dogeku 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +21 -0
- data/README.md +39 -0
- data/app/Historique/Action.rb +29 -0
- data/app/Historique/ChangerCase.rb +44 -0
- data/app/Historique/HistoriqueAction.rb +114 -0
- data/app/components/CaseDessin.rb +325 -0
- data/app/components/GrilleDessin.rb +235 -0
- data/app/components/Header.rb +194 -0
- data/app/config/app.yml +0 -0
- data/app/config/database.yml +2 -0
- data/app/controller/ApprentissageControleur.rb +75 -0
- data/app/controller/ChargerControleur.rb +41 -0
- data/app/controller/JeuLibreControleur.rb +244 -0
- data/app/controller/MenuControleur.rb +57 -0
- data/app/controller/NiveauControleur.rb +54 -0
- data/app/controller/NouvellePartieControleur.rb +34 -0
- data/app/controller/PrincipaleControleur.rb +30 -0
- data/app/controller/PseudoControleur.rb +95 -0
- data/app/controller/ReglagesControleur.rb +86 -0
- data/app/controller/ReglesControleur.rb +34 -0
- data/app/controller/ScoresControleur.rb +42 -0
- data/app/controller/StatistiquesControleur.rb +64 -0
- data/app/core/Conf.rb +26 -0
- data/app/core/Controller.rb +180 -0
- data/app/core/Core.rb +186 -0
- data/app/core/Model.rb +159 -0
- data/app/core/View.rb +56 -0
- data/app/db/main.sqlite3 +0 -0
- data/app/model/Configuration.rb +180 -0
- data/app/model/Grille.rb +180 -0
- data/app/model/Jeu.rb +74 -0
- data/app/model/Score.rb +100 -0
- data/app/model/Utilisateur.rb +113 -0
- data/app/utils/DSubset.rb +98 -0
- data/app/utils/Generateur.rb +171 -0
- data/app/utils/HPTriple.rb +75 -0
- data/app/utils/Peche.rb +46 -0
- data/app/utils/SCandidate.rb +86 -0
- data/app/utils/SCell.rb +73 -0
- data/app/utils/Technique.rb +202 -0
- data/app/utils/TechniqueUsine.rb +25 -0
- data/app/utils/XWing.rb +203 -0
- data/app/view/Fenetre.rb +424 -0
- data/app/view/FenetreApprentissage.rb +272 -0
- data/app/view/FenetreCharger.rb +31 -0
- data/app/view/FenetreJeuLibre.rb +468 -0
- data/app/view/FenetreMenu.rb +198 -0
- data/app/view/FenetreNiveau.rb +105 -0
- data/app/view/FenetreNouvellePartie.rb +92 -0
- data/app/view/FenetrePrincipale.rb +45 -0
- data/app/view/FenetrePseudo.rb +115 -0
- data/app/view/FenetreReglages.rb +209 -0
- data/app/view/FenetreRegles.rb +111 -0
- data/app/view/FenetreScores.rb +120 -0
- data/app/view/FenetreStatistiques.rb +134 -0
- data/assets/css/style.css +69 -0
- data/assets/img/eraser.png +0 -0
- data/assets/img/fond.jpg +0 -0
- data/assets/img/iconApp.png +0 -0
- data/assets/img/logoS.jpeg +0 -0
- data/assets/img/sudokuIntro.jpg +0 -0
- data/assets/img/user.png +0 -0
- data/bin/dogeku +19 -0
- data/doc/Action.html +309 -0
- data/doc/ApprentissageControleur.html +568 -0
- data/doc/CaseDessin.html +2405 -0
- data/doc/ChangerCase.html +405 -0
- data/doc/ChargerControleur.html +342 -0
- data/doc/Conf.html +378 -0
- data/doc/Configuration.html +1115 -0
- data/doc/Controller.html +1008 -0
- data/doc/Core.html +1191 -0
- data/doc/DSubset.html +647 -0
- data/doc/Fenetre.html +2631 -0
- data/doc/FenetreApprentissage.html +1175 -0
- data/doc/FenetreCharger.html +343 -0
- data/doc/FenetreJeuLibre.html +1859 -0
- data/doc/FenetreMenu.html +900 -0
- data/doc/FenetreNiveau.html +626 -0
- data/doc/FenetreNouvellePartie.html +602 -0
- data/doc/FenetrePrincipale.html +371 -0
- data/doc/FenetrePseudo.html +695 -0
- data/doc/FenetreReglages.html +946 -0
- data/doc/FenetreRegles.html +636 -0
- data/doc/FenetreScores.html +650 -0
- data/doc/FenetreStatistiques.html +672 -0
- data/doc/Generateur.html +1015 -0
- data/doc/Grille.html +1348 -0
- data/doc/GrilleDessin.html +1281 -0
- data/doc/HPTriple.html +593 -0
- data/doc/Header.html +1253 -0
- data/doc/HistoriqueAction.html +792 -0
- data/doc/Jeu.html +923 -0
- data/doc/JeuLibreControleur.html +1445 -0
- data/doc/MenuControleur.html +522 -0
- data/doc/Model.html +996 -0
- data/doc/NiveauControleur.html +451 -0
- data/doc/NouvellePartieControleur.html +330 -0
- data/doc/Peche.html +396 -0
- data/doc/PrincipaleControleur.html +320 -0
- data/doc/PseudoControleur.html +695 -0
- data/doc/ReglagesControleur.html +747 -0
- data/doc/ReglesControleur.html +330 -0
- data/doc/SCandidate.html +617 -0
- data/doc/SCell.html +587 -0
- data/doc/Score.html +926 -0
- data/doc/ScoresControleur.html +346 -0
- data/doc/StatistiquesControleur.html +390 -0
- data/doc/Technique.html +543 -0
- data/doc/TechniqueUsine.html +252 -0
- data/doc/Utilisateur.html +806 -0
- data/doc/View.html +844 -0
- data/doc/XWing.html +1031 -0
- data/doc/_index.html +478 -0
- data/doc/class_list.html +51 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +58 -0
- data/doc/css/style.css +492 -0
- data/doc/file.README.html +141 -0
- data/doc/file_list.html +56 -0
- data/doc/frames.html +17 -0
- data/doc/index.html +141 -0
- data/doc/js/app.js +243 -0
- data/doc/js/full_list.js +216 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +2523 -0
- data/doc/top-level-namespace.html +112 -0
- data/test/Generateur/grilleCorrecte.rb +198 -0
- data/test/Model/scoreCorrecte.rb +55 -0
- data/test/Model/utilisateurCorrecte.rb +68 -0
- data/test/test_helper.rb +2 -0
- data/test/unitTest.rb +72 -0
- metadata +187 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>
|
|
7
|
+
File: README
|
|
8
|
+
|
|
9
|
+
— Documentation by YARD 0.9.8
|
|
10
|
+
|
|
11
|
+
</title>
|
|
12
|
+
|
|
13
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
|
|
14
|
+
|
|
15
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
|
|
16
|
+
|
|
17
|
+
<script type="text/javascript" charset="utf-8">
|
|
18
|
+
pathId = "README";
|
|
19
|
+
relpath = '';
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
|
24
|
+
|
|
25
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
</head>
|
|
29
|
+
<body>
|
|
30
|
+
<div class="nav_wrap">
|
|
31
|
+
<iframe id="nav" src="file_list.html?1"></iframe>
|
|
32
|
+
<div id="resizer"></div>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
<div id="main" tabindex="-1">
|
|
36
|
+
<div id="header">
|
|
37
|
+
<div id="menu">
|
|
38
|
+
|
|
39
|
+
<a href="_index.html">Index</a> »
|
|
40
|
+
<span class="title">File: README</span>
|
|
41
|
+
|
|
42
|
+
</div>
|
|
43
|
+
|
|
44
|
+
<div id="search">
|
|
45
|
+
|
|
46
|
+
<a class="full_list_link" id="class_list_link"
|
|
47
|
+
href="class_list.html">
|
|
48
|
+
|
|
49
|
+
<svg width="24" height="24">
|
|
50
|
+
<rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
|
|
51
|
+
<rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
|
|
52
|
+
<rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
|
|
53
|
+
</svg>
|
|
54
|
+
</a>
|
|
55
|
+
|
|
56
|
+
</div>
|
|
57
|
+
<div class="clear"></div>
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
<div id="content"><div id='filecontents'>
|
|
61
|
+
<p><a href="https://travis-ci.org/DanAurea/Sudoku-L3S6"><img
|
|
62
|
+
src="https://travis-ci.org/DanAurea/Sudoku-L3S6.svg?branch=master"></a> <a
|
|
63
|
+
href="https://codeclimate.com/github/DanAurea/Sudoku-L3S6"><img
|
|
64
|
+
src="https://codeclimate.com/github/DanAurea/Sudoku-L3S6/badges/issue_count.svg"></a>
|
|
65
|
+
<a href="https://codeclimate.com/github/DanAurea/Sudoku-L3S6"><img
|
|
66
|
+
src="https://codeclimate.com/github/DanAurea/Sudoku-L3S6/badges/gpa.svg"></a>
|
|
67
|
+
<a href="http://inch-ci.org/github/DanAurea/Sudoku-L3S6"><img
|
|
68
|
+
src="http://inch-ci.org/github/DanAurea/Sudoku-L3S6.svg?branch=master"></a></p>
|
|
69
|
+
|
|
70
|
+
<h1 id="label-Introduction">Introduction</h1>
|
|
71
|
+
|
|
72
|
+
<h2 id="label-Pr-C3-A9sentation">Présentation</h2>
|
|
73
|
+
|
|
74
|
+
<p>Sudoku-L3S6 est un projet d'une application ayant pour but
|
|
75
|
+
d'élaborer un assistant à la résolution d'un Sudoku, le projet
|
|
76
|
+
s'inscrivant dans le module de Génie Logiciel dispensé à
|
|
77
|
+
l'Université du Maine en fin de semestre de licence 3 de Sciences Pour
|
|
78
|
+
l'Ingénieur.</p>
|
|
79
|
+
|
|
80
|
+
<p>Ce Sudoku représente notre application de l'ensemble des connaissances
|
|
81
|
+
étudiées au cours de cette année. Cela va de la gestion de projet
|
|
82
|
+
(répartition des rôles, rédaction de cahier des charges et de conception,
|
|
83
|
+
gestion d'un dépôt Github) à sa modélisation (programmation orientée
|
|
84
|
+
objet, gestion de base de données) et à son lancement.</p>
|
|
85
|
+
|
|
86
|
+
<p>Pour jouer, l'utilisateur se connecte via un nom profil qu'il
|
|
87
|
+
insère au début de l'application. Puis selon ce qu'il souhaite
|
|
88
|
+
jouer, il peut choisir le mode 'Apprentissage avec aides' ou bien
|
|
89
|
+
'Jeu Libre'. Le premier mode permet de mieux cerner le
|
|
90
|
+
fonctionnement de chaque technique d'aide à la résolution du Sudoku
|
|
91
|
+
avec des instructions pas à pas tandis que le deuxième mode fait jouer
|
|
92
|
+
l'utilisateur selon un niveau de difficulté qu'il aura choisi avec
|
|
93
|
+
des aides qui lui coûteront des points pour le score final. Ce score lui
|
|
94
|
+
permettra d'ailleurs de se comparer aux autres joueurs pour pouvoir
|
|
95
|
+
voir sa progression. De plus, l'utilisateur peut tout à fait modifier
|
|
96
|
+
la police ainsi que les couleurs liées aux cases, au texte ou aux indices
|
|
97
|
+
dans les règlages. S'il ne connaît pas les règles, un rappel lui est
|
|
98
|
+
donné dans la section appropriée dans le menu principal.</p>
|
|
99
|
+
|
|
100
|
+
<h2 id="label-Composition+de+l-27-C3-A9quipe+et+r-C3-B4le">Composition de l'équipe et rôle</h2>
|
|
101
|
+
|
|
102
|
+
<p>Cette application a été réalisé par 8 étudiants de l'Université du
|
|
103
|
+
Maine en utilisant comme langage de programmation Ruby associé à la
|
|
104
|
+
bibliothèque Gtk. Chaque membre du groupe a un rôle afin d'organiser au
|
|
105
|
+
mieux le projet : * Bodineau Bastien [<strong>Développeur & Testeur
|
|
106
|
+
unitaires</strong>] * Bussereau Keryann [<strong>Développeur</strong>] *
|
|
107
|
+
Cousin Brandon [<strong>Architecte & Intégrateur</strong>] * Duran
|
|
108
|
+
Alizée [<strong>Documentaliste & Client-type</strong>] * Guenver Yann
|
|
109
|
+
[<strong>Développeur & Testeur intégration</strong>] * Jean Marvin
|
|
110
|
+
[<strong>Chef de projet</strong>] * Pavard Valentin [<strong>Développeur
|
|
111
|
+
GUI & Intégrateur</strong>] * Tabot Alexandre [<strong>Développeur
|
|
112
|
+
& Testeur intégration</strong>]</p>
|
|
113
|
+
|
|
114
|
+
<h1 id="label-Installation">Installation</h1>
|
|
115
|
+
|
|
116
|
+
<p>Pour satisfaire toutes les dépendances liées à cette application, installez
|
|
117
|
+
simplement bundler puis installez le bundle associé:</p>
|
|
118
|
+
|
|
119
|
+
<blockquote>
|
|
120
|
+
<p>gem install bundler</p>
|
|
121
|
+
|
|
122
|
+
<p>bundler install</p>
|
|
123
|
+
</blockquote>
|
|
124
|
+
|
|
125
|
+
<p>Il est possible de générer une nouvelle gem et de l'installer à partir
|
|
126
|
+
du Rakefile:</p>
|
|
127
|
+
|
|
128
|
+
<blockquote>
|
|
129
|
+
<p>rake install</p>
|
|
130
|
+
</blockquote>
|
|
131
|
+
</div></div>
|
|
132
|
+
|
|
133
|
+
<div id="footer">
|
|
134
|
+
Generated on Sat Apr 22 22:47:30 2017 by
|
|
135
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
136
|
+
0.9.8 (ruby-2.3.3).
|
|
137
|
+
</div>
|
|
138
|
+
|
|
139
|
+
</div>
|
|
140
|
+
</body>
|
|
141
|
+
</html>
|
data/doc/file_list.html
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
5
|
+
<meta charset="utf-8" />
|
|
6
|
+
|
|
7
|
+
<link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen" charset="utf-8" />
|
|
8
|
+
|
|
9
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
|
14
|
+
|
|
15
|
+
<script type="text/javascript" charset="utf-8" src="js/full_list.js"></script>
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
<title>File List</title>
|
|
19
|
+
<base id="base_target" target="_parent" />
|
|
20
|
+
</head>
|
|
21
|
+
<body>
|
|
22
|
+
<div id="content">
|
|
23
|
+
<div class="fixed_header">
|
|
24
|
+
<h1 id="full_list_header">File List</h1>
|
|
25
|
+
<div id="full_list_nav">
|
|
26
|
+
|
|
27
|
+
<span><a target="_self" href="class_list.html">
|
|
28
|
+
Classes
|
|
29
|
+
</a></span>
|
|
30
|
+
|
|
31
|
+
<span><a target="_self" href="method_list.html">
|
|
32
|
+
Methods
|
|
33
|
+
</a></span>
|
|
34
|
+
|
|
35
|
+
<span><a target="_self" href="file_list.html">
|
|
36
|
+
Files
|
|
37
|
+
</a></span>
|
|
38
|
+
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
<div id="search">Search: <input type="text" /></div>
|
|
42
|
+
</div>
|
|
43
|
+
|
|
44
|
+
<ul id="full_list" class="file">
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
<li id="object_README" class="odd">
|
|
48
|
+
<div class="item"><span class="object_link"><a href="index.html" title="README">README</a></span></div>
|
|
49
|
+
</li>
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
</ul>
|
|
54
|
+
</div>
|
|
55
|
+
</body>
|
|
56
|
+
</html>
|
data/doc/frames.html
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Documentation by YARD 0.9.8</title>
|
|
6
|
+
</head>
|
|
7
|
+
<script type="text/javascript" charset="utf-8">
|
|
8
|
+
var match = unescape(window.location.hash).match(/^#!(.+)/);
|
|
9
|
+
var name = match ? match[1] : 'index.html';
|
|
10
|
+
name = name.replace(/^(\w+):\/\//, '').replace(/^\/\//, '');
|
|
11
|
+
window.top.location = name;
|
|
12
|
+
</script>
|
|
13
|
+
<noscript>
|
|
14
|
+
<h1>Oops!</h1>
|
|
15
|
+
<h2>YARD requires JavaScript!</h2>
|
|
16
|
+
</noscript>
|
|
17
|
+
</html>
|
data/doc/index.html
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>
|
|
7
|
+
File: README
|
|
8
|
+
|
|
9
|
+
— Documentation by YARD 0.9.8
|
|
10
|
+
|
|
11
|
+
</title>
|
|
12
|
+
|
|
13
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
|
|
14
|
+
|
|
15
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
|
|
16
|
+
|
|
17
|
+
<script type="text/javascript" charset="utf-8">
|
|
18
|
+
pathId = "README";
|
|
19
|
+
relpath = '';
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
|
24
|
+
|
|
25
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
</head>
|
|
29
|
+
<body>
|
|
30
|
+
<div class="nav_wrap">
|
|
31
|
+
<iframe id="nav" src="class_list.html?1"></iframe>
|
|
32
|
+
<div id="resizer"></div>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
<div id="main" tabindex="-1">
|
|
36
|
+
<div id="header">
|
|
37
|
+
<div id="menu">
|
|
38
|
+
|
|
39
|
+
<a href="_index.html">Index</a> »
|
|
40
|
+
<span class="title">File: README</span>
|
|
41
|
+
|
|
42
|
+
</div>
|
|
43
|
+
|
|
44
|
+
<div id="search">
|
|
45
|
+
|
|
46
|
+
<a class="full_list_link" id="class_list_link"
|
|
47
|
+
href="class_list.html">
|
|
48
|
+
|
|
49
|
+
<svg width="24" height="24">
|
|
50
|
+
<rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
|
|
51
|
+
<rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
|
|
52
|
+
<rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
|
|
53
|
+
</svg>
|
|
54
|
+
</a>
|
|
55
|
+
|
|
56
|
+
</div>
|
|
57
|
+
<div class="clear"></div>
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
<div id="content"><div id='filecontents'>
|
|
61
|
+
<p><a href="https://travis-ci.org/DanAurea/Sudoku-L3S6"><img
|
|
62
|
+
src="https://travis-ci.org/DanAurea/Sudoku-L3S6.svg?branch=master"></a> <a
|
|
63
|
+
href="https://codeclimate.com/github/DanAurea/Sudoku-L3S6"><img
|
|
64
|
+
src="https://codeclimate.com/github/DanAurea/Sudoku-L3S6/badges/issue_count.svg"></a>
|
|
65
|
+
<a href="https://codeclimate.com/github/DanAurea/Sudoku-L3S6"><img
|
|
66
|
+
src="https://codeclimate.com/github/DanAurea/Sudoku-L3S6/badges/gpa.svg"></a>
|
|
67
|
+
<a href="http://inch-ci.org/github/DanAurea/Sudoku-L3S6"><img
|
|
68
|
+
src="http://inch-ci.org/github/DanAurea/Sudoku-L3S6.svg?branch=master"></a></p>
|
|
69
|
+
|
|
70
|
+
<h1 id="label-Introduction">Introduction</h1>
|
|
71
|
+
|
|
72
|
+
<h2 id="label-Pr-C3-A9sentation">Présentation</h2>
|
|
73
|
+
|
|
74
|
+
<p>Sudoku-L3S6 est un projet d'une application ayant pour but
|
|
75
|
+
d'élaborer un assistant à la résolution d'un Sudoku, le projet
|
|
76
|
+
s'inscrivant dans le module de Génie Logiciel dispensé à
|
|
77
|
+
l'Université du Maine en fin de semestre de licence 3 de Sciences Pour
|
|
78
|
+
l'Ingénieur.</p>
|
|
79
|
+
|
|
80
|
+
<p>Ce Sudoku représente notre application de l'ensemble des connaissances
|
|
81
|
+
étudiées au cours de cette année. Cela va de la gestion de projet
|
|
82
|
+
(répartition des rôles, rédaction de cahier des charges et de conception,
|
|
83
|
+
gestion d'un dépôt Github) à sa modélisation (programmation orientée
|
|
84
|
+
objet, gestion de base de données) et à son lancement.</p>
|
|
85
|
+
|
|
86
|
+
<p>Pour jouer, l'utilisateur se connecte via un nom profil qu'il
|
|
87
|
+
insère au début de l'application. Puis selon ce qu'il souhaite
|
|
88
|
+
jouer, il peut choisir le mode 'Apprentissage avec aides' ou bien
|
|
89
|
+
'Jeu Libre'. Le premier mode permet de mieux cerner le
|
|
90
|
+
fonctionnement de chaque technique d'aide à la résolution du Sudoku
|
|
91
|
+
avec des instructions pas à pas tandis que le deuxième mode fait jouer
|
|
92
|
+
l'utilisateur selon un niveau de difficulté qu'il aura choisi avec
|
|
93
|
+
des aides qui lui coûteront des points pour le score final. Ce score lui
|
|
94
|
+
permettra d'ailleurs de se comparer aux autres joueurs pour pouvoir
|
|
95
|
+
voir sa progression. De plus, l'utilisateur peut tout à fait modifier
|
|
96
|
+
la police ainsi que les couleurs liées aux cases, au texte ou aux indices
|
|
97
|
+
dans les règlages. S'il ne connaît pas les règles, un rappel lui est
|
|
98
|
+
donné dans la section appropriée dans le menu principal.</p>
|
|
99
|
+
|
|
100
|
+
<h2 id="label-Composition+de+l-27-C3-A9quipe+et+r-C3-B4le">Composition de l'équipe et rôle</h2>
|
|
101
|
+
|
|
102
|
+
<p>Cette application a été réalisé par 8 étudiants de l'Université du
|
|
103
|
+
Maine en utilisant comme langage de programmation Ruby associé à la
|
|
104
|
+
bibliothèque Gtk. Chaque membre du groupe a un rôle afin d'organiser au
|
|
105
|
+
mieux le projet : * Bodineau Bastien [<strong>Développeur & Testeur
|
|
106
|
+
unitaires</strong>] * Bussereau Keryann [<strong>Développeur</strong>] *
|
|
107
|
+
Cousin Brandon [<strong>Architecte & Intégrateur</strong>] * Duran
|
|
108
|
+
Alizée [<strong>Documentaliste & Client-type</strong>] * Guenver Yann
|
|
109
|
+
[<strong>Développeur & Testeur intégration</strong>] * Jean Marvin
|
|
110
|
+
[<strong>Chef de projet</strong>] * Pavard Valentin [<strong>Développeur
|
|
111
|
+
GUI & Intégrateur</strong>] * Tabot Alexandre [<strong>Développeur
|
|
112
|
+
& Testeur intégration</strong>]</p>
|
|
113
|
+
|
|
114
|
+
<h1 id="label-Installation">Installation</h1>
|
|
115
|
+
|
|
116
|
+
<p>Pour satisfaire toutes les dépendances liées à cette application, installez
|
|
117
|
+
simplement bundler puis installez le bundle associé:</p>
|
|
118
|
+
|
|
119
|
+
<blockquote>
|
|
120
|
+
<p>gem install bundler</p>
|
|
121
|
+
|
|
122
|
+
<p>bundler install</p>
|
|
123
|
+
</blockquote>
|
|
124
|
+
|
|
125
|
+
<p>Il est possible de générer une nouvelle gem et de l'installer à partir
|
|
126
|
+
du Rakefile:</p>
|
|
127
|
+
|
|
128
|
+
<blockquote>
|
|
129
|
+
<p>rake install</p>
|
|
130
|
+
</blockquote>
|
|
131
|
+
</div></div>
|
|
132
|
+
|
|
133
|
+
<div id="footer">
|
|
134
|
+
Generated on Sat Apr 22 22:47:30 2017 by
|
|
135
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
136
|
+
0.9.8 (ruby-2.3.3).
|
|
137
|
+
</div>
|
|
138
|
+
|
|
139
|
+
</div>
|
|
140
|
+
</body>
|
|
141
|
+
</html>
|
data/doc/js/app.js
ADDED
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
(function() {
|
|
2
|
+
|
|
3
|
+
var localStorage = {}, sessionStorage = {};
|
|
4
|
+
try { localStorage = window.localStorage; } catch (e) { }
|
|
5
|
+
try { sessionStorage = window.sessionStorage; } catch (e) { }
|
|
6
|
+
|
|
7
|
+
function createSourceLinks() {
|
|
8
|
+
$('.method_details_list .source_code').
|
|
9
|
+
before("<span class='showSource'>[<a href='#' class='toggleSource'>View source</a>]</span>");
|
|
10
|
+
$('.toggleSource').toggle(function() {
|
|
11
|
+
$(this).parent().nextAll('.source_code').slideDown(100);
|
|
12
|
+
$(this).text("Hide source");
|
|
13
|
+
},
|
|
14
|
+
function() {
|
|
15
|
+
$(this).parent().nextAll('.source_code').slideUp(100);
|
|
16
|
+
$(this).text("View source");
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function createDefineLinks() {
|
|
21
|
+
var tHeight = 0;
|
|
22
|
+
$('.defines').after(" <a href='#' class='toggleDefines'>more...</a>");
|
|
23
|
+
$('.toggleDefines').toggle(function() {
|
|
24
|
+
tHeight = $(this).parent().prev().height();
|
|
25
|
+
$(this).prev().css('display', 'inline');
|
|
26
|
+
$(this).parent().prev().height($(this).parent().height());
|
|
27
|
+
$(this).text("(less)");
|
|
28
|
+
},
|
|
29
|
+
function() {
|
|
30
|
+
$(this).prev().hide();
|
|
31
|
+
$(this).parent().prev().height(tHeight);
|
|
32
|
+
$(this).text("more...");
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function createFullTreeLinks() {
|
|
37
|
+
var tHeight = 0;
|
|
38
|
+
$('.inheritanceTree').toggle(function() {
|
|
39
|
+
tHeight = $(this).parent().prev().height();
|
|
40
|
+
$(this).parent().toggleClass('showAll');
|
|
41
|
+
$(this).text("(hide)");
|
|
42
|
+
$(this).parent().prev().height($(this).parent().height());
|
|
43
|
+
},
|
|
44
|
+
function() {
|
|
45
|
+
$(this).parent().toggleClass('showAll');
|
|
46
|
+
$(this).parent().prev().height(tHeight);
|
|
47
|
+
$(this).text("show all");
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function searchFrameButtons() {
|
|
52
|
+
$('.full_list_link').click(function() {
|
|
53
|
+
toggleSearchFrame(this, $(this).attr('href'));
|
|
54
|
+
return false;
|
|
55
|
+
});
|
|
56
|
+
window.addEventListener('message', function(e) {
|
|
57
|
+
if (e.data === 'navEscape') {
|
|
58
|
+
$('#nav').slideUp(100);
|
|
59
|
+
$('#search a').removeClass('active inactive');
|
|
60
|
+
$(window).focus();
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
$(window).resize(function() {
|
|
65
|
+
if ($('#search:visible').length === 0) {
|
|
66
|
+
$('#nav').removeAttr('style');
|
|
67
|
+
$('#search a').removeClass('active inactive');
|
|
68
|
+
$(window).focus();
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function toggleSearchFrame(id, link) {
|
|
74
|
+
var frame = $('#nav');
|
|
75
|
+
$('#search a').removeClass('active').addClass('inactive');
|
|
76
|
+
if (frame.attr('src') === link && frame.css('display') !== "none") {
|
|
77
|
+
frame.slideUp(100);
|
|
78
|
+
$('#search a').removeClass('active inactive');
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
$(id).addClass('active').removeClass('inactive');
|
|
82
|
+
if (frame.attr('src') !== link) frame.attr('src', link);
|
|
83
|
+
frame.slideDown(100);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function linkSummaries() {
|
|
88
|
+
$('.summary_signature').click(function() {
|
|
89
|
+
document.location = $(this).find('a').attr('href');
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function summaryToggle() {
|
|
94
|
+
$('.summary_toggle').click(function(e) {
|
|
95
|
+
e.preventDefault();
|
|
96
|
+
localStorage.summaryCollapsed = $(this).text();
|
|
97
|
+
$('.summary_toggle').each(function() {
|
|
98
|
+
$(this).text($(this).text() == "collapse" ? "expand" : "collapse");
|
|
99
|
+
var next = $(this).parent().parent().nextAll('ul.summary').first();
|
|
100
|
+
if (next.hasClass('compact')) {
|
|
101
|
+
next.toggle();
|
|
102
|
+
next.nextAll('ul.summary').first().toggle();
|
|
103
|
+
}
|
|
104
|
+
else if (next.hasClass('summary')) {
|
|
105
|
+
var list = $('<ul class="summary compact" />');
|
|
106
|
+
list.html(next.html());
|
|
107
|
+
list.find('.summary_desc, .note').remove();
|
|
108
|
+
list.find('a').each(function() {
|
|
109
|
+
$(this).html($(this).find('strong').html());
|
|
110
|
+
$(this).parent().html($(this)[0].outerHTML);
|
|
111
|
+
});
|
|
112
|
+
next.before(list);
|
|
113
|
+
next.toggle();
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
return false;
|
|
117
|
+
});
|
|
118
|
+
if (localStorage.summaryCollapsed == "collapse") {
|
|
119
|
+
$('.summary_toggle').first().click();
|
|
120
|
+
} else { localStorage.summaryCollapsed = "expand"; }
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function generateTOC() {
|
|
124
|
+
if ($('#filecontents').length === 0) return;
|
|
125
|
+
var _toc = $('<ol class="top"></ol>');
|
|
126
|
+
var show = false;
|
|
127
|
+
var toc = _toc;
|
|
128
|
+
var counter = 0;
|
|
129
|
+
var tags = ['h2', 'h3', 'h4', 'h5', 'h6'];
|
|
130
|
+
var i;
|
|
131
|
+
if ($('#filecontents h1').length > 1) tags.unshift('h1');
|
|
132
|
+
for (i = 0; i < tags.length; i++) { tags[i] = '#filecontents ' + tags[i]; }
|
|
133
|
+
var lastTag = parseInt(tags[0][1], 10);
|
|
134
|
+
$(tags.join(', ')).each(function() {
|
|
135
|
+
if ($(this).parents('.method_details .docstring').length != 0) return;
|
|
136
|
+
if (this.id == "filecontents") return;
|
|
137
|
+
show = true;
|
|
138
|
+
var thisTag = parseInt(this.tagName[1], 10);
|
|
139
|
+
if (this.id.length === 0) {
|
|
140
|
+
var proposedId = $(this).attr('toc-id');
|
|
141
|
+
if (typeof(proposedId) != "undefined") this.id = proposedId;
|
|
142
|
+
else {
|
|
143
|
+
var proposedId = $(this).text().replace(/[^a-z0-9-]/ig, '_');
|
|
144
|
+
if ($('#' + proposedId).length > 0) { proposedId += counter; counter++; }
|
|
145
|
+
this.id = proposedId;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (thisTag > lastTag) {
|
|
149
|
+
for (i = 0; i < thisTag - lastTag; i++) {
|
|
150
|
+
var tmp = $('<ol/>'); toc.append(tmp); toc = tmp;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (thisTag < lastTag) {
|
|
154
|
+
for (i = 0; i < lastTag - thisTag; i++) toc = toc.parent();
|
|
155
|
+
}
|
|
156
|
+
var title = $(this).attr('toc-title');
|
|
157
|
+
if (typeof(title) == "undefined") title = $(this).text();
|
|
158
|
+
toc.append('<li><a href="#' + this.id + '">' + title + '</a></li>');
|
|
159
|
+
lastTag = thisTag;
|
|
160
|
+
});
|
|
161
|
+
if (!show) return;
|
|
162
|
+
html = '<div id="toc"><p class="title hide_toc"><a href="#"><strong>Table of Contents</strong></a></p></div>';
|
|
163
|
+
$('#content').prepend(html);
|
|
164
|
+
$('#toc').append(_toc);
|
|
165
|
+
$('#toc .hide_toc').toggle(function() {
|
|
166
|
+
$('#toc .top').slideUp('fast');
|
|
167
|
+
$('#toc').toggleClass('hidden');
|
|
168
|
+
$('#toc .title small').toggle();
|
|
169
|
+
}, function() {
|
|
170
|
+
$('#toc .top').slideDown('fast');
|
|
171
|
+
$('#toc').toggleClass('hidden');
|
|
172
|
+
$('#toc .title small').toggle();
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
function navResizeFn(e) {
|
|
177
|
+
if (e.which !== 1) {
|
|
178
|
+
navResizeFnStop();
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
sessionStorage.navWidth = e.pageX.toString();
|
|
183
|
+
$('.nav_wrap').css('width', e.pageX);
|
|
184
|
+
$('.nav_wrap').css('-ms-flex', 'inherit');
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
function navResizeFnStop() {
|
|
188
|
+
$(window).unbind('mousemove', navResizeFn);
|
|
189
|
+
window.removeEventListener('message', navMessageFn, false);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
function navMessageFn(e) {
|
|
193
|
+
if (e.data.action === 'mousemove') navResizeFn(e.data.event);
|
|
194
|
+
if (e.data.action === 'mouseup') navResizeFnStop();
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
function navResizer() {
|
|
198
|
+
$('#resizer').mousedown(function(e) {
|
|
199
|
+
e.preventDefault();
|
|
200
|
+
$(window).mousemove(navResizeFn);
|
|
201
|
+
window.addEventListener('message', navMessageFn, false);
|
|
202
|
+
});
|
|
203
|
+
$(window).mouseup(navResizeFnStop);
|
|
204
|
+
|
|
205
|
+
if (sessionStorage.navWidth) {
|
|
206
|
+
navResizeFn({which: 1, pageX: parseInt(sessionStorage.navWidth, 10)});
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
function navExpander() {
|
|
211
|
+
var done = false, timer = setTimeout(postMessage, 500);
|
|
212
|
+
function postMessage() {
|
|
213
|
+
if (done) return;
|
|
214
|
+
clearTimeout(timer);
|
|
215
|
+
var opts = { action: 'expand', path: pathId };
|
|
216
|
+
document.getElementById('nav').contentWindow.postMessage(opts, '*');
|
|
217
|
+
done = true;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
window.addEventListener('message', function(event) {
|
|
221
|
+
if (event.data === 'navReady') postMessage();
|
|
222
|
+
return false;
|
|
223
|
+
}, false);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
function mainFocus() {
|
|
227
|
+
$('#main')[0].focus();
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
$(document).ready(function() {
|
|
231
|
+
navResizer();
|
|
232
|
+
navExpander();
|
|
233
|
+
createSourceLinks();
|
|
234
|
+
createDefineLinks();
|
|
235
|
+
createFullTreeLinks();
|
|
236
|
+
searchFrameButtons();
|
|
237
|
+
linkSummaries();
|
|
238
|
+
summaryToggle();
|
|
239
|
+
generateTOC();
|
|
240
|
+
mainFocus();
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
})();
|