Hashiparmentier 0.4.0
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/bin/Hashiparmentier +3 -0
- data/launcher.command +3 -0
- data/lib/Hashiparmentier.rb +8 -0
- data/lib/Hashiparmentier/BDD/BDDDPQADSAHASHIPARMENTIER.db +0 -0
- data/lib/Hashiparmentier/BDD/Base.sqlite +0 -0
- data/lib/Hashiparmentier/Base.sqlite +0 -0
- data/lib/Hashiparmentier/CSS/Style.rb +184 -0
- data/lib/Hashiparmentier/Core/Action.rb +48 -0
- data/lib/Hashiparmentier/Core/Aide.rb +28 -0
- data/lib/Hashiparmentier/Core/Case.rb +92 -0
- data/lib/Hashiparmentier/Core/Chrono.rb +96 -0
- data/lib/Hashiparmentier/Core/Compte.rb +137 -0
- data/lib/Hashiparmentier/Core/ConnectSqlite3.rb +19 -0
- data/lib/Hashiparmentier/Core/Couleur.rb +94 -0
- data/lib/Hashiparmentier/Core/DonnerTechnique.rb +70 -0
- data/lib/Hashiparmentier/Core/Grille.rb +804 -0
- data/lib/Hashiparmentier/Core/Hypothese.rb +43 -0
- data/lib/Hashiparmentier/Core/Ile.rb +330 -0
- data/lib/Hashiparmentier/Core/Jeu.rb +177 -0
- data/lib/Hashiparmentier/Core/Pile.rb +85 -0
- data/lib/Hashiparmentier/Core/Pont.rb +300 -0
- data/lib/Hashiparmentier/Core/Sauvegarde.rb +176 -0
- data/lib/Hashiparmentier/Core/UndoRedo.rb +93 -0
- data/lib/Hashiparmentier/Core/VerifierGrille.rb +51 -0
- data/lib/Hashiparmentier/Data/Golden Bridge.jpg +0 -0
- data/lib/Hashiparmentier/Data/Pont Gaulois.jpg +0 -0
- data/lib/Hashiparmentier/Data/Zubi Zuri.jpg +0 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-1010-0-001.txt +12 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-1010-0-002.txt +12 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-1010-0-003.txt +12 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-1010-1-001.txt +12 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-1010-1-002.txt +12 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-1010-1-003.txt +12 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-1010-2-001.txt +12 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-1010-2-002.txt +12 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-1010-2-003.txt +12 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-1515-0-001.txt +17 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-1515-0-002.txt +17 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-1515-0-003.txt +17 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-1515-1-001.txt +17 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-1515-1-002.txt +17 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-1515-1-003.txt +17 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-1515-2-001.txt +17 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-1515-2-002.txt +17 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-1515-2-003.txt +17 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-77-0-001.txt +9 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-77-0-002.txt +9 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-77-0-003.txt +9 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-77-1-001.txt +9 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-77-1-002.txt +9 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-77-1-003.txt +9 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-77-2-001.txt +9 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-77-2-002.txt +9 -0
- data/lib/Hashiparmentier/NouvellesGrilles/map-77-2-003.txt +9 -0
- data/lib/Hashiparmentier/Test/Gemfile +3 -0
- data/lib/Hashiparmentier/Test/MajBDDGrille.rb +10 -0
- data/lib/Hashiparmentier/Test/NotAMalwareDefinitiveEdition +3 -0
- data/lib/Hashiparmentier/Test/NotAMalwareDefinitiveEdition~ +2 -0
- data/lib/Hashiparmentier/Test/NotAMalware~ +2 -0
- data/lib/Hashiparmentier/Test/TestChargerGrille.rb +7 -0
- data/lib/Hashiparmentier/Test/TestCompte.rb +51 -0
- data/lib/Hashiparmentier/Test/TestFenetre.rb +10 -0
- data/lib/Hashiparmentier/Test/TestGrille.rb +27 -0
- data/lib/Hashiparmentier/Test/TestJeu.rb +47 -0
- data/lib/Hashiparmentier/Test/TestPont.rb +73 -0
- data/lib/Hashiparmentier/Test/TestSauvegarde.rb +53 -0
- data/lib/Hashiparmentier/Test/execLinux.sh +8 -0
- data/lib/Hashiparmentier/Test/icone/Custom-Icon-Design-2014-World-Cup-Flags-Japan.ico +0 -0
- data/lib/Hashiparmentier/Test/test.bat +1 -0
- data/lib/Hashiparmentier/Test/testExec +2 -0
- data/lib/Hashiparmentier/Test/testTestExec.rb +3 -0
- data/lib/Hashiparmentier/UI/AideJeuUI.rb +22 -0
- data/lib/Hashiparmentier/UI/AideUI.rb +22 -0
- data/lib/Hashiparmentier/UI/AstucesUI.rb +23 -0
- data/lib/Hashiparmentier/UI/CaseUI.rb +70 -0
- data/lib/Hashiparmentier/UI/ChoixDifficulteUI.rb +45 -0
- data/lib/Hashiparmentier/UI/ChoixGrilleScrollUI.rb +37 -0
- data/lib/Hashiparmentier/UI/ChoixGrilleUI.rb +80 -0
- data/lib/Hashiparmentier/UI/ChoixNomUI.rb +39 -0
- data/lib/Hashiparmentier/UI/ChoixTailleUI.rb +44 -0
- data/lib/Hashiparmentier/UI/Fenetre.rb +32 -0
- data/lib/Hashiparmentier/UI/FenetreFinUI.rb +71 -0
- data/lib/Hashiparmentier/UI/FenetreJeuUI.rb +193 -0
- data/lib/Hashiparmentier/UI/FenetreReglesUI.rb +28 -0
- data/lib/Hashiparmentier/UI/FinUI.rb +91 -0
- data/lib/Hashiparmentier/UI/GrilleJouableUI.rb +47 -0
- data/lib/Hashiparmentier/UI/GrilleUI.rb +140 -0
- data/lib/Hashiparmentier/UI/IleUI.rb +87 -0
- data/lib/Hashiparmentier/UI/JeuUI.rb +161 -0
- data/lib/Hashiparmentier/UI/Menu.rb +322 -0
- data/lib/Hashiparmentier/UI/MenuUI.rb +107 -0
- data/lib/Hashiparmentier/UI/PontUI.rb +135 -0
- data/lib/Hashiparmentier/UI/RacineUI.rb +142 -0
- data/lib/Hashiparmentier/UI/ReglesUI.rb +22 -0
- data/lib/Hashiparmentier/doc/Action.html +259 -0
- data/lib/Hashiparmentier/doc/Aide.html +229 -0
- data/lib/Hashiparmentier/doc/AideUI.html +168 -0
- data/lib/Hashiparmentier/doc/Case.html +473 -0
- data/lib/Hashiparmentier/doc/CaseUI.html +343 -0
- data/lib/Hashiparmentier/doc/ChoixDifficulteUI.html +209 -0
- data/lib/Hashiparmentier/doc/ChoixGrilleScrollUI.html +239 -0
- data/lib/Hashiparmentier/doc/ChoixGrilleUI.html +276 -0
- data/lib/Hashiparmentier/doc/ChoixNomUI.html +215 -0
- data/lib/Hashiparmentier/doc/ChoixTailleUI.html +210 -0
- data/lib/Hashiparmentier/doc/Chrono.html +420 -0
- data/lib/Hashiparmentier/doc/Compte.html +514 -0
- data/lib/Hashiparmentier/doc/Couleur.html +422 -0
- data/lib/Hashiparmentier/doc/DonnerTechnique.html +245 -0
- data/lib/Hashiparmentier/doc/Fenetre.html +179 -0
- data/lib/Hashiparmentier/doc/FenetreJeuUI.html +274 -0
- data/lib/Hashiparmentier/doc/FenetreReglesUI.html +167 -0
- data/lib/Hashiparmentier/doc/FinUI.html +274 -0
- data/lib/Hashiparmentier/doc/Grille.html +2153 -0
- data/lib/Hashiparmentier/doc/GrilleJouableUI.html +229 -0
- data/lib/Hashiparmentier/doc/GrilleUI.html +477 -0
- data/lib/Hashiparmentier/doc/Hypothese.html +248 -0
- data/lib/Hashiparmentier/doc/Ile.html +1103 -0
- data/lib/Hashiparmentier/doc/IleUI.html +244 -0
- data/lib/Hashiparmentier/doc/Jeu.html +179 -0
- data/lib/Hashiparmentier/doc/JeuUI.html +471 -0
- data/lib/Hashiparmentier/doc/Menu.html +667 -0
- data/lib/Hashiparmentier/doc/MenuUI.html +416 -0
- data/lib/Hashiparmentier/doc/Pile.html +383 -0
- data/lib/Hashiparmentier/doc/Pont.html +943 -0
- data/lib/Hashiparmentier/doc/PontUI.html +307 -0
- data/lib/Hashiparmentier/doc/RacineUI.html +387 -0
- data/lib/Hashiparmentier/doc/ReglesUI.html +203 -0
- data/lib/Hashiparmentier/doc/Sauvegarde.html +672 -0
- data/lib/Hashiparmentier/doc/UndoRedo.html +389 -0
- data/lib/Hashiparmentier/doc/VerifierGrille.html +225 -0
- data/lib/Hashiparmentier/doc/created.rid +46 -0
- data/lib/Hashiparmentier/doc/css/fonts.css +167 -0
- data/lib/Hashiparmentier/doc/css/rdoc.css +590 -0
- data/lib/Hashiparmentier/doc/fonts/Lato-Light.ttf +0 -0
- data/lib/Hashiparmentier/doc/fonts/Lato-LightItalic.ttf +0 -0
- data/lib/Hashiparmentier/doc/fonts/Lato-Regular.ttf +0 -0
- data/lib/Hashiparmentier/doc/fonts/Lato-RegularItalic.ttf +0 -0
- data/lib/Hashiparmentier/doc/fonts/SourceCodePro-Bold.ttf +0 -0
- data/lib/Hashiparmentier/doc/fonts/SourceCodePro-Regular.ttf +0 -0
- data/lib/Hashiparmentier/doc/images/add.png +0 -0
- data/lib/Hashiparmentier/doc/images/arrow_up.png +0 -0
- data/lib/Hashiparmentier/doc/images/brick.png +0 -0
- data/lib/Hashiparmentier/doc/images/brick_link.png +0 -0
- data/lib/Hashiparmentier/doc/images/bug.png +0 -0
- data/lib/Hashiparmentier/doc/images/bullet_black.png +0 -0
- data/lib/Hashiparmentier/doc/images/bullet_toggle_minus.png +0 -0
- data/lib/Hashiparmentier/doc/images/bullet_toggle_plus.png +0 -0
- data/lib/Hashiparmentier/doc/images/date.png +0 -0
- data/lib/Hashiparmentier/doc/images/delete.png +0 -0
- data/lib/Hashiparmentier/doc/images/find.png +0 -0
- data/lib/Hashiparmentier/doc/images/loadingAnimation.gif +0 -0
- data/lib/Hashiparmentier/doc/images/macFFBgHack.png +0 -0
- data/lib/Hashiparmentier/doc/images/package.png +0 -0
- data/lib/Hashiparmentier/doc/images/page_green.png +0 -0
- data/lib/Hashiparmentier/doc/images/page_white_text.png +0 -0
- data/lib/Hashiparmentier/doc/images/page_white_width.png +0 -0
- data/lib/Hashiparmentier/doc/images/plugin.png +0 -0
- data/lib/Hashiparmentier/doc/images/ruby.png +0 -0
- data/lib/Hashiparmentier/doc/images/tag_blue.png +0 -0
- data/lib/Hashiparmentier/doc/images/tag_green.png +0 -0
- data/lib/Hashiparmentier/doc/images/transparent.png +0 -0
- data/lib/Hashiparmentier/doc/images/wrench.png +0 -0
- data/lib/Hashiparmentier/doc/images/wrench_orange.png +0 -0
- data/lib/Hashiparmentier/doc/images/zoom.png +0 -0
- data/lib/Hashiparmentier/doc/index.html +154 -0
- data/lib/Hashiparmentier/doc/js/darkfish.js +161 -0
- data/lib/Hashiparmentier/doc/js/jquery.js +4 -0
- data/lib/Hashiparmentier/doc/js/navigation.js +141 -0
- data/lib/Hashiparmentier/doc/js/navigation.js.gz +0 -0
- data/lib/Hashiparmentier/doc/js/search.js +109 -0
- data/lib/Hashiparmentier/doc/js/search_index.js +1 -0
- data/lib/Hashiparmentier/doc/js/search_index.js.gz +0 -0
- data/lib/Hashiparmentier/doc/js/searcher.js +229 -0
- data/lib/Hashiparmentier/doc/js/searcher.js.gz +0 -0
- data/lib/Hashiparmentier/doc/table_of_contents.html +1197 -0
- data/lib/Hashiparmentier/glade/Fin.glade +222 -0
- data/lib/Hashiparmentier/glade/aide.glade +127 -0
- data/lib/Hashiparmentier/glade/aideJeu.glade +143 -0
- data/lib/Hashiparmentier/glade/astuces.glade +1558 -0
- data/lib/Hashiparmentier/glade/fonts/VINERITC.TTF +0 -0
- data/lib/Hashiparmentier/glade/images/18790.ico +0 -0
- data/lib/Hashiparmentier/glade/images/1stars.png +0 -0
- data/lib/Hashiparmentier/glade/images/2stars.png +0 -0
- data/lib/Hashiparmentier/glade/images/3stars.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-07 11-48-54.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-13 17-54-16.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-13 18-00-00.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-13 18-01-25.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-13 18-17-16.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-13 18-17-40.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-13 18-18-01.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-13 18-18-23.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-13 18-19-00.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-13 18-19-17.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-13 18-19-54.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 14-24-24.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 14-24-44.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 14-24-58.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 14-25-16.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 14-25-36.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 14-25-51.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 14-26-04.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 14-26-15.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 15-01-40.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 15-02-08.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 15-02-33.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 15-02-54.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 15-03-13.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 15-03-39.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 15-03-55.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 15-04-10.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 15-33-07.png +0 -0
- data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 15-36-05.png +0 -0
- data/lib/Hashiparmentier/glade/images/LOGO.png +0 -0
- data/lib/Hashiparmentier/glade/images/LOGpR.png +0 -0
- data/lib/Hashiparmentier/glade/images/LOGpR2.png +0 -0
- data/lib/Hashiparmentier/glade/images/bg.jpg +0 -0
- data/lib/Hashiparmentier/glade/images/ex111.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex112.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex211.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex212.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex221.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex222.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex231.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex232.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex241.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex242.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex251.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex252.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex311.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex312.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex321.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex322.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex331.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex332.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex341.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex342.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex411.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex412.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex413.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex421.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex422.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex423.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex431.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex432.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex433.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex441.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex442.png +0 -0
- data/lib/Hashiparmentier/glade/images/ex443.png +0 -0
- data/lib/Hashiparmentier/glade/images/icone.png +0 -0
- data/lib/Hashiparmentier/glade/images/puzzle-solvation.gif +0 -0
- data/lib/Hashiparmentier/glade/images/wJapStylePlusNet.jpg +0 -0
- data/lib/Hashiparmentier/glade/images/wJapStylePlusNet15.jpg +0 -0
- data/lib/Hashiparmentier/glade/jeu.glade +539 -0
- data/lib/Hashiparmentier/glade/menu.glade +511 -0
- data/lib/Hashiparmentier/glade/regles.glade +856 -0
- data/lib/Hashiparmentier/map.txt +316 -0
- metadata +347 -0
@@ -0,0 +1,85 @@
|
|
1
|
+
|
2
|
+
##
|
3
|
+
# Auteur:: Brabant Mano
|
4
|
+
# Version:: 0.1
|
5
|
+
# Date:: 09/04/2020
|
6
|
+
#
|
7
|
+
#Cette classe représente une pile
|
8
|
+
class Pile
|
9
|
+
|
10
|
+
#@indice => La position dans la pile
|
11
|
+
attr_reader :indice
|
12
|
+
|
13
|
+
include Enumerable
|
14
|
+
|
15
|
+
private_class_method :new
|
16
|
+
|
17
|
+
##
|
18
|
+
#Ce constructeur permet de créer une nouvelle pile
|
19
|
+
#param::
|
20
|
+
# * max Le nombre maximum d'élément dans la pile ("infini" par defaut)
|
21
|
+
def Pile.creer(max = 0)
|
22
|
+
new(max)
|
23
|
+
end
|
24
|
+
|
25
|
+
#:nodoc:
|
26
|
+
def initialize(max)
|
27
|
+
|
28
|
+
@actions = Array.new()
|
29
|
+
@max = max
|
30
|
+
|
31
|
+
end
|
32
|
+
#:doc:
|
33
|
+
|
34
|
+
##
|
35
|
+
#Cette méthode permet de d'empiler un élément
|
36
|
+
#param::
|
37
|
+
# * element L'élément à empiler
|
38
|
+
def empiler(element)
|
39
|
+
|
40
|
+
if(@max > 0)
|
41
|
+
if(@actions.length < @max)
|
42
|
+
@actions.push(element)
|
43
|
+
end
|
44
|
+
else
|
45
|
+
@actions.push(element)
|
46
|
+
end
|
47
|
+
return self
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
##
|
52
|
+
#Cette méthode permet de dépiler le dernier élément
|
53
|
+
#return::
|
54
|
+
# * L'élément dépilé
|
55
|
+
# * raiseException Si la pile est vide
|
56
|
+
def depiler
|
57
|
+
|
58
|
+
if(self.empty?())
|
59
|
+
raise("La pile est vide")
|
60
|
+
else
|
61
|
+
return @actions.pop()
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
##
|
67
|
+
#Cette méthode permet de savoir si la pile est vide ou non
|
68
|
+
#return::
|
69
|
+
# * true Si la pile est vide
|
70
|
+
# * false Sinon
|
71
|
+
def empty?()
|
72
|
+
return @actions.empty?()
|
73
|
+
end
|
74
|
+
|
75
|
+
##
|
76
|
+
#Cette méthode permet d'itérer sur tous les éléments de la pile
|
77
|
+
def each
|
78
|
+
|
79
|
+
@actions.each do |hyp|
|
80
|
+
yield hyp
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
@@ -0,0 +1,300 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
require_relative "../Core/Case.rb"
|
4
|
+
require_relative "../Core/Couleur.rb"
|
5
|
+
|
6
|
+
##
|
7
|
+
# Auteur:: Brabant Mano
|
8
|
+
# Version:: 0.1
|
9
|
+
# Date:: 09/04/2020
|
10
|
+
#
|
11
|
+
#Cette classe représente les ponts du Hashi
|
12
|
+
#
|
13
|
+
#Hérite de Case
|
14
|
+
class Pont < Case
|
15
|
+
|
16
|
+
#Cette constante représente l'une des directions que peut prendre un pont(Seulement quand valeur du pont = 0)
|
17
|
+
NULLE = 0
|
18
|
+
|
19
|
+
#Cette constante représente l'une des directions que peut prendre un pont(Pont horizontal)
|
20
|
+
HORIZONTAL = 1
|
21
|
+
|
22
|
+
#Cette constante représente l'une des directions que peut prendre un pont(Pont vertical)
|
23
|
+
VERTICAL = 2
|
24
|
+
|
25
|
+
|
26
|
+
#Cette constante représente le nombre maximum de ligne pour un pont
|
27
|
+
MAX_LIGNE = 2
|
28
|
+
|
29
|
+
|
30
|
+
include Comparable
|
31
|
+
|
32
|
+
#@valeur => Valeur du pont(nombre de trait)
|
33
|
+
attr_reader :valeur
|
34
|
+
|
35
|
+
#@direction => Direction du pont (NULLE, HORIZONTAL, VERTICAL)
|
36
|
+
attr_reader :direction
|
37
|
+
|
38
|
+
#@surbrillance => Booléen pour l'affichage, si égal à true le pont sera affiché en surbrillance
|
39
|
+
attr_accessor :surbrillance
|
40
|
+
|
41
|
+
#@directionSurbrillance => La direction dans laquelle le pont en surbrillance est dirigé
|
42
|
+
attr_accessor :directionSurbrillance
|
43
|
+
|
44
|
+
#@marque => Booléen pour l'affichage, si égal à true le pont sera affiché en surbrillance rouge
|
45
|
+
attr_accessor :marque
|
46
|
+
|
47
|
+
#@couleurPont => La couleur que prendrait le pont s'il est modifié
|
48
|
+
attr_reader :couleurPont
|
49
|
+
|
50
|
+
#@couleurPontCourante => La couleur du pont
|
51
|
+
attr_reader :couleurPontCourante
|
52
|
+
|
53
|
+
#:nodoc:
|
54
|
+
def Pont.verifieDirection(direction) #privée
|
55
|
+
return true if([NULLE, HORIZONTAL, VERTICAL].include?(direction))
|
56
|
+
return false
|
57
|
+
end
|
58
|
+
#:doc:
|
59
|
+
|
60
|
+
|
61
|
+
private_class_method :new
|
62
|
+
|
63
|
+
##
|
64
|
+
#Ce constructeur permet de créer un nouveau pont
|
65
|
+
#param::
|
66
|
+
# * posX La position sur l'axe des abscisse
|
67
|
+
# * posY La position sur l'axe des ordonnées
|
68
|
+
# * grille La grille sur laquelle se trouve le pont
|
69
|
+
def Pont.creer(posX, posY, grille)
|
70
|
+
Pont.construit(posX, posY, grille, NULLE, 0)
|
71
|
+
end
|
72
|
+
|
73
|
+
##
|
74
|
+
#Ce constructeur permet de créer un nouveau pont avec des valeurs
|
75
|
+
#param::
|
76
|
+
# * posX La position sur l'axe des abscisse
|
77
|
+
# * posY La position sur l'axe des ordonnées
|
78
|
+
# * grille La grille sur laquelle se trouve le pont
|
79
|
+
# * direction La direction du pont
|
80
|
+
# * valeur La taille du pont
|
81
|
+
def Pont.construit(posX, posY, grille, direction, valeur)
|
82
|
+
|
83
|
+
if(Pont.verifieDirection(direction))
|
84
|
+
new(posX, posY, grille, direction, valeur)
|
85
|
+
else
|
86
|
+
new(posX, posY, grille, NULLE, 0)
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
|
92
|
+
#:nodoc:
|
93
|
+
def initialize(posX, posY, grille, direction, valeur)
|
94
|
+
|
95
|
+
super(posX, posY, grille)
|
96
|
+
@valeur = valeur
|
97
|
+
@direction = direction
|
98
|
+
@surbrillance = false
|
99
|
+
@marque = false
|
100
|
+
@directionSurbrillance = NULLE
|
101
|
+
@couleurPont = Couleur::JAUNE
|
102
|
+
@couleurPontCourante = Couleur::JAUNE
|
103
|
+
|
104
|
+
end
|
105
|
+
#:doc:
|
106
|
+
|
107
|
+
##
|
108
|
+
#Cette méthode permet de modifier la couleur que devrais prendre le pont s'il est modifié
|
109
|
+
#ainsi que sa couleur courante si elle était la même que la couleur après modification
|
110
|
+
#
|
111
|
+
#Utilisé par les hypothèses
|
112
|
+
#param::
|
113
|
+
# * couleurPont La nouvelle couleur
|
114
|
+
def redoCouleurPont(couleurPont)
|
115
|
+
if(@couleurPont == @couleurPontCourante)
|
116
|
+
@couleurPontCourante = couleurPont
|
117
|
+
end
|
118
|
+
@couleurPont = couleurPont
|
119
|
+
end
|
120
|
+
|
121
|
+
##
|
122
|
+
#Cette méthode permet de modifer la couleur la couleur que devrais prendre le pont s'il est modifié
|
123
|
+
#param::
|
124
|
+
# * couleurPont La nouvelle couleur
|
125
|
+
def undoCouleurPont(couleurPont)
|
126
|
+
@couleurPont = couleurPont
|
127
|
+
end
|
128
|
+
|
129
|
+
##
|
130
|
+
#Cette méthode permet de simuler un "clic" sur le pont
|
131
|
+
def clickOn()
|
132
|
+
@grille.clickOnPont(self)
|
133
|
+
end
|
134
|
+
|
135
|
+
##
|
136
|
+
#Cette méthode permet de remettre à zéro le pont
|
137
|
+
def raz()
|
138
|
+
|
139
|
+
@valeur = 0
|
140
|
+
@direction = NULLE
|
141
|
+
@surbrillance = false
|
142
|
+
@marque = false
|
143
|
+
@directionSurbrillance = NULLE
|
144
|
+
|
145
|
+
end
|
146
|
+
|
147
|
+
##
|
148
|
+
#Cette méthode permet de comparer des ponts entre-eux
|
149
|
+
#param::
|
150
|
+
# * autre L'autre pont à comparer
|
151
|
+
#return::
|
152
|
+
# * 0 si les ponts sont égaux
|
153
|
+
# * un nombre négatif si le premier pont est inférieur au deuxième
|
154
|
+
# * un nombre positif si le premier pont est supérieur au deuxième
|
155
|
+
def <=>(autre)
|
156
|
+
|
157
|
+
return 1 if(!autre.estPont?())
|
158
|
+
return @direction <=> autre.direction if(@direction != autre.direction)
|
159
|
+
return @valeur <=> autre.valeur if(@valeur != autre.valeur)
|
160
|
+
return 0
|
161
|
+
|
162
|
+
end
|
163
|
+
|
164
|
+
##
|
165
|
+
#Cette méthode permet d'afficher le pont dans un terminal
|
166
|
+
def to_s()
|
167
|
+
|
168
|
+
ret = " "
|
169
|
+
if(@surbrillance)
|
170
|
+
ret = "P"
|
171
|
+
end
|
172
|
+
if(@direction == HORIZONTAL)
|
173
|
+
if(@valeur == 1)
|
174
|
+
ret = "-"
|
175
|
+
elsif(@valeur == 2)
|
176
|
+
ret = "="
|
177
|
+
end
|
178
|
+
elsif(@direction == VERTICAL)
|
179
|
+
if(@valeur == 1)
|
180
|
+
ret = "|"
|
181
|
+
elsif(@valeur == 2)
|
182
|
+
ret = "\""
|
183
|
+
end
|
184
|
+
end
|
185
|
+
if(@marque)
|
186
|
+
ret = "R"
|
187
|
+
end
|
188
|
+
return ret
|
189
|
+
|
190
|
+
end
|
191
|
+
|
192
|
+
|
193
|
+
private def modifValeur(direction, valeur)
|
194
|
+
#print "Couleur Pont : ", @couleurPontCourante, @couleurPont, "\n"
|
195
|
+
demarquer()
|
196
|
+
if(@direction != NULLE)
|
197
|
+
#On modifie la valeur du pont si la direction donné est la bonne
|
198
|
+
if(@direction == direction)
|
199
|
+
@valeur = (@valeur + valeur) % (MAX_LIGNE + 1)
|
200
|
+
if(@valeur == 0)
|
201
|
+
@direction = NULLE
|
202
|
+
end
|
203
|
+
@couleurPontCourante = @couleurPont
|
204
|
+
ret = true
|
205
|
+
end
|
206
|
+
ret = false
|
207
|
+
#On crée un nouveau pont
|
208
|
+
elsif(@direction == NULLE)
|
209
|
+
@direction = direction
|
210
|
+
@valeur = valeur
|
211
|
+
@couleurPontCourante = @couleurPont
|
212
|
+
ret = true
|
213
|
+
end
|
214
|
+
#puts "apres"
|
215
|
+
#print "Couleur Pont : ", @couleurPontCourante, @couleurPont, "\n"
|
216
|
+
return ret
|
217
|
+
end
|
218
|
+
|
219
|
+
private def modifSurbrillance(direction, valeur)
|
220
|
+
if(@direction != NULLE)
|
221
|
+
if(@direction == direction)
|
222
|
+
@surbrillance = valeur
|
223
|
+
@directionSurbrillance = direction
|
224
|
+
return true
|
225
|
+
end
|
226
|
+
return false
|
227
|
+
elsif(@direction == NULLE)
|
228
|
+
@surbrillance = valeur
|
229
|
+
@directionSurbrillance = direction
|
230
|
+
return true
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
##
|
235
|
+
#Cette méthode permet d'augmenter la valeur du pont
|
236
|
+
#param::
|
237
|
+
# * direction La direction dans laquelle on veut augmenter le pont
|
238
|
+
#Si le pont que l'on augmente avait 2 trait alors le pont disparait
|
239
|
+
#return::
|
240
|
+
# * true Si la valeur à été modifié
|
241
|
+
# * false Sinon
|
242
|
+
def augmenteValeur(direction)
|
243
|
+
return modifValeur(direction, 1)
|
244
|
+
end
|
245
|
+
|
246
|
+
##
|
247
|
+
#Cette méthode permet de diminuer la valeur du pont
|
248
|
+
#param::
|
249
|
+
# * direction La direction dans laquelle on veut diminuer le pont
|
250
|
+
#Si le pont que l'on diminue n'avait pas de trait alors un pont à deux trait apparait
|
251
|
+
#return::
|
252
|
+
# * true Si la valeur à été modifié
|
253
|
+
# * false Sinon
|
254
|
+
def diminueValeur(direction)
|
255
|
+
return modifValeur(direction, MAX_LIGNE)
|
256
|
+
end
|
257
|
+
|
258
|
+
##
|
259
|
+
#Cette méthode permet de mettre en surbrillance le pont
|
260
|
+
#param::
|
261
|
+
# * direction La direction dans laquelle on veut mettre en surbrillance le pont
|
262
|
+
#return::
|
263
|
+
# * true Si le pont a été mis en surbrillance
|
264
|
+
# * false Sinon
|
265
|
+
def metSurbrillance(direction)
|
266
|
+
return modifSurbrillance(direction, true)
|
267
|
+
end
|
268
|
+
|
269
|
+
##
|
270
|
+
#Cette méthode permet de diminuer la valeur du pont
|
271
|
+
#param::
|
272
|
+
# * direction La direction dans laquelle on veut enlever la surbrillance
|
273
|
+
#return::
|
274
|
+
# * true Si la valeur n'est plus en surbrillance
|
275
|
+
# * false Sinon
|
276
|
+
def supprSurbrillance(direction)
|
277
|
+
return modifSurbrillance(direction, false)
|
278
|
+
end
|
279
|
+
|
280
|
+
##
|
281
|
+
#Cette méthode permet de modifier le marquage du pont quand il est faux
|
282
|
+
def marquer()
|
283
|
+
@marque = true
|
284
|
+
end
|
285
|
+
|
286
|
+
##
|
287
|
+
#Cette méthode permet de modifier le marquage du pont quand il est valide
|
288
|
+
def demarquer()
|
289
|
+
@marque = false
|
290
|
+
end
|
291
|
+
|
292
|
+
##
|
293
|
+
#Cette méthode retourne vrai
|
294
|
+
#return::
|
295
|
+
# * true
|
296
|
+
def estPont?()
|
297
|
+
return true
|
298
|
+
end
|
299
|
+
|
300
|
+
end
|
@@ -0,0 +1,176 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
require_relative "../Core/Compte.rb"
|
4
|
+
require_relative "../Core/Grille.rb"
|
5
|
+
require "active_record"
|
6
|
+
|
7
|
+
##
|
8
|
+
# Auteur:: Brabant Mano
|
9
|
+
# Version:: 0.1
|
10
|
+
# Date:: 09/04/2020
|
11
|
+
#
|
12
|
+
#Cette classe permet de sauvegarder dans une base de données la progression d'un joueur sur une grille et de faire des recherches sur les sauvegardes
|
13
|
+
class Sauvegarde < ActiveRecord::Base
|
14
|
+
|
15
|
+
|
16
|
+
#@grille => Contient la grille que l'utilisateur a commencé à remplir
|
17
|
+
|
18
|
+
validates :grille, presence: true
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
#@compte => Contient le compte auquel appartient la sauvegarde
|
23
|
+
belongs_to :compte
|
24
|
+
|
25
|
+
validates :compte, presence: true
|
26
|
+
|
27
|
+
|
28
|
+
##
|
29
|
+
#Cette méthode permet de supprimer toutes les sauvegardes dans la base de donnée
|
30
|
+
def Sauvegarde.razAllSauvegarde()
|
31
|
+
Sauvegarde.delete_all()
|
32
|
+
end
|
33
|
+
|
34
|
+
##
|
35
|
+
#Cette méthode permet de créer un sauvegarde pour un ensemble de grille
|
36
|
+
#param::
|
37
|
+
# * compte Le compte pour lequel on va créer les sauvegardes
|
38
|
+
# * grilles Un tableau qui contient les grilles à sauvegarder
|
39
|
+
def Sauvegarde.creerAll(compte, grilles)
|
40
|
+
|
41
|
+
grilles.each do |g|
|
42
|
+
Sauvegarde.creer(compte, g).sauvegarder()
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
private_class_method :new
|
49
|
+
|
50
|
+
##
|
51
|
+
#Cette méthode permet de creer une grille pour un compte
|
52
|
+
#param::
|
53
|
+
# * compte Le compte auquel la sauvegarde est lié
|
54
|
+
# * grille La grille auquel la sauvegarde est lié
|
55
|
+
#return::
|
56
|
+
# * raiseException Si le compte possède déjà une sauvegarde de cette grille
|
57
|
+
def Sauvegarde.creer(compte, grille)
|
58
|
+
|
59
|
+
begin
|
60
|
+
temp = Marshal.dump(grille).force_encoding("ISO-8859-1").encode("UTF-8")
|
61
|
+
Marshal.load(temp)
|
62
|
+
rescue
|
63
|
+
temp = YAML.dump(grille)
|
64
|
+
end
|
65
|
+
new(:compte => compte, :grille => temp, :taille => grille.tailleX(), :difficulte => grille.difficulte(), :meilleurScore => 0)
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
##
|
70
|
+
#Cette méthode permet de recupérer la sauvegarde d'un compte pour une grille
|
71
|
+
#param::
|
72
|
+
# * compte Le compte auquel la sauvegarde est lié
|
73
|
+
# * grille La grille auquel la sauvegarde est lié
|
74
|
+
#return::
|
75
|
+
# * La sauvegarde si elle existe
|
76
|
+
# * nil Sinon
|
77
|
+
def Sauvegarde.recuperer(compte, grille)
|
78
|
+
|
79
|
+
liste = Sauvegarde.listeCompte(compte)
|
80
|
+
liste.each do |s|
|
81
|
+
if(s.getGrille().memeSolution(grille))
|
82
|
+
return s
|
83
|
+
end
|
84
|
+
end
|
85
|
+
return nil
|
86
|
+
|
87
|
+
end
|
88
|
+
|
89
|
+
##
|
90
|
+
#Cette méthode permet de connaitre les sauvegardes d'un joueur
|
91
|
+
#param::
|
92
|
+
# * compte Le compte du joueur
|
93
|
+
#return::
|
94
|
+
# * Le tableau des sauvegardes du compte
|
95
|
+
def Sauvegarde.listeCompte(compte)
|
96
|
+
return Sauvegarde.where(compte: compte).to_a()
|
97
|
+
end
|
98
|
+
|
99
|
+
##
|
100
|
+
#Cette méthode permet de connaitre les sauvegardes d'un joueur pour les grilles d'une certaine taille et d'une certaine difficulté
|
101
|
+
#param::
|
102
|
+
# * compte Le compte du joueur
|
103
|
+
# * taille La taille de la grille
|
104
|
+
# * difficulte La difficulte de la grille
|
105
|
+
#return::
|
106
|
+
# * Le tableau des sauvegardes du compte de taille et difficulté données
|
107
|
+
def Sauvegarde.liste(compte, taille, difficulte)
|
108
|
+
return Sauvegarde.where(compte: compte, taille: taille, difficulte: difficulte).to_a()
|
109
|
+
end
|
110
|
+
|
111
|
+
##
|
112
|
+
#Cette méthode permet d'enregistrer la sauvegarde
|
113
|
+
#return::
|
114
|
+
# * true Si la sauvegarde est efféctué
|
115
|
+
# * false Sinon
|
116
|
+
def sauvegarder()
|
117
|
+
return self.save()
|
118
|
+
end
|
119
|
+
|
120
|
+
##
|
121
|
+
#Cette méthode permet de recupérer la grille de la sauvegarde
|
122
|
+
#return::
|
123
|
+
# * La grille sauvegardé
|
124
|
+
def getGrille()
|
125
|
+
|
126
|
+
begin
|
127
|
+
return Marshal.load(self.grille)
|
128
|
+
rescue
|
129
|
+
return YAML.load(self.grille)
|
130
|
+
end
|
131
|
+
|
132
|
+
end
|
133
|
+
|
134
|
+
##
|
135
|
+
#Cette méthode permet de modifier la grille enregistrée
|
136
|
+
#param::
|
137
|
+
# * grille La nouvelle grille
|
138
|
+
def setGrille(grille)
|
139
|
+
|
140
|
+
begin #Active record peut enregistrer du TEXT avec UTF-8 uniquement
|
141
|
+
temp = Marshal.dump(grille).force_encoding("ISO-8859-1").encode("UTF-8") #on force donc la chaine en UTF-8
|
142
|
+
Marshal.load(temp) #à condition que l'on puisse la recharger sans exception
|
143
|
+
rescue
|
144
|
+
temp = YAML.dump(grille) #Sinon on enregistre avec YAML qui est plus lent
|
145
|
+
end
|
146
|
+
self.grille = temp
|
147
|
+
return self
|
148
|
+
|
149
|
+
end
|
150
|
+
|
151
|
+
##
|
152
|
+
#Cette méthode permet de recupérer le meilleur score associé à la grille enregistré
|
153
|
+
#return::
|
154
|
+
# * Le score de la sauvegarde
|
155
|
+
def getScore()
|
156
|
+
return self.meilleurScore
|
157
|
+
end
|
158
|
+
|
159
|
+
##
|
160
|
+
#Cette méthode permet de modifier le meilleur score associé à la grille enregistré
|
161
|
+
#param::
|
162
|
+
# * score Le nouveau score
|
163
|
+
def setScore(score)
|
164
|
+
|
165
|
+
self.meilleurScore = score
|
166
|
+
return self
|
167
|
+
|
168
|
+
end
|
169
|
+
|
170
|
+
##
|
171
|
+
#Cette méthode permet d'afficher une sauvegarde
|
172
|
+
def to_s()
|
173
|
+
return "#{self.compte} : #{self.getGrille()}"
|
174
|
+
end
|
175
|
+
|
176
|
+
end
|