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.
Files changed (259) hide show
  1. checksums.yaml +7 -0
  2. data/bin/Hashiparmentier +3 -0
  3. data/launcher.command +3 -0
  4. data/lib/Hashiparmentier.rb +8 -0
  5. data/lib/Hashiparmentier/BDD/BDDDPQADSAHASHIPARMENTIER.db +0 -0
  6. data/lib/Hashiparmentier/BDD/Base.sqlite +0 -0
  7. data/lib/Hashiparmentier/Base.sqlite +0 -0
  8. data/lib/Hashiparmentier/CSS/Style.rb +184 -0
  9. data/lib/Hashiparmentier/Core/Action.rb +48 -0
  10. data/lib/Hashiparmentier/Core/Aide.rb +28 -0
  11. data/lib/Hashiparmentier/Core/Case.rb +92 -0
  12. data/lib/Hashiparmentier/Core/Chrono.rb +96 -0
  13. data/lib/Hashiparmentier/Core/Compte.rb +137 -0
  14. data/lib/Hashiparmentier/Core/ConnectSqlite3.rb +19 -0
  15. data/lib/Hashiparmentier/Core/Couleur.rb +94 -0
  16. data/lib/Hashiparmentier/Core/DonnerTechnique.rb +70 -0
  17. data/lib/Hashiparmentier/Core/Grille.rb +804 -0
  18. data/lib/Hashiparmentier/Core/Hypothese.rb +43 -0
  19. data/lib/Hashiparmentier/Core/Ile.rb +330 -0
  20. data/lib/Hashiparmentier/Core/Jeu.rb +177 -0
  21. data/lib/Hashiparmentier/Core/Pile.rb +85 -0
  22. data/lib/Hashiparmentier/Core/Pont.rb +300 -0
  23. data/lib/Hashiparmentier/Core/Sauvegarde.rb +176 -0
  24. data/lib/Hashiparmentier/Core/UndoRedo.rb +93 -0
  25. data/lib/Hashiparmentier/Core/VerifierGrille.rb +51 -0
  26. data/lib/Hashiparmentier/Data/Golden Bridge.jpg +0 -0
  27. data/lib/Hashiparmentier/Data/Pont Gaulois.jpg +0 -0
  28. data/lib/Hashiparmentier/Data/Zubi Zuri.jpg +0 -0
  29. data/lib/Hashiparmentier/NouvellesGrilles/map-1010-0-001.txt +12 -0
  30. data/lib/Hashiparmentier/NouvellesGrilles/map-1010-0-002.txt +12 -0
  31. data/lib/Hashiparmentier/NouvellesGrilles/map-1010-0-003.txt +12 -0
  32. data/lib/Hashiparmentier/NouvellesGrilles/map-1010-1-001.txt +12 -0
  33. data/lib/Hashiparmentier/NouvellesGrilles/map-1010-1-002.txt +12 -0
  34. data/lib/Hashiparmentier/NouvellesGrilles/map-1010-1-003.txt +12 -0
  35. data/lib/Hashiparmentier/NouvellesGrilles/map-1010-2-001.txt +12 -0
  36. data/lib/Hashiparmentier/NouvellesGrilles/map-1010-2-002.txt +12 -0
  37. data/lib/Hashiparmentier/NouvellesGrilles/map-1010-2-003.txt +12 -0
  38. data/lib/Hashiparmentier/NouvellesGrilles/map-1515-0-001.txt +17 -0
  39. data/lib/Hashiparmentier/NouvellesGrilles/map-1515-0-002.txt +17 -0
  40. data/lib/Hashiparmentier/NouvellesGrilles/map-1515-0-003.txt +17 -0
  41. data/lib/Hashiparmentier/NouvellesGrilles/map-1515-1-001.txt +17 -0
  42. data/lib/Hashiparmentier/NouvellesGrilles/map-1515-1-002.txt +17 -0
  43. data/lib/Hashiparmentier/NouvellesGrilles/map-1515-1-003.txt +17 -0
  44. data/lib/Hashiparmentier/NouvellesGrilles/map-1515-2-001.txt +17 -0
  45. data/lib/Hashiparmentier/NouvellesGrilles/map-1515-2-002.txt +17 -0
  46. data/lib/Hashiparmentier/NouvellesGrilles/map-1515-2-003.txt +17 -0
  47. data/lib/Hashiparmentier/NouvellesGrilles/map-77-0-001.txt +9 -0
  48. data/lib/Hashiparmentier/NouvellesGrilles/map-77-0-002.txt +9 -0
  49. data/lib/Hashiparmentier/NouvellesGrilles/map-77-0-003.txt +9 -0
  50. data/lib/Hashiparmentier/NouvellesGrilles/map-77-1-001.txt +9 -0
  51. data/lib/Hashiparmentier/NouvellesGrilles/map-77-1-002.txt +9 -0
  52. data/lib/Hashiparmentier/NouvellesGrilles/map-77-1-003.txt +9 -0
  53. data/lib/Hashiparmentier/NouvellesGrilles/map-77-2-001.txt +9 -0
  54. data/lib/Hashiparmentier/NouvellesGrilles/map-77-2-002.txt +9 -0
  55. data/lib/Hashiparmentier/NouvellesGrilles/map-77-2-003.txt +9 -0
  56. data/lib/Hashiparmentier/Test/Gemfile +3 -0
  57. data/lib/Hashiparmentier/Test/MajBDDGrille.rb +10 -0
  58. data/lib/Hashiparmentier/Test/NotAMalwareDefinitiveEdition +3 -0
  59. data/lib/Hashiparmentier/Test/NotAMalwareDefinitiveEdition~ +2 -0
  60. data/lib/Hashiparmentier/Test/NotAMalware~ +2 -0
  61. data/lib/Hashiparmentier/Test/TestChargerGrille.rb +7 -0
  62. data/lib/Hashiparmentier/Test/TestCompte.rb +51 -0
  63. data/lib/Hashiparmentier/Test/TestFenetre.rb +10 -0
  64. data/lib/Hashiparmentier/Test/TestGrille.rb +27 -0
  65. data/lib/Hashiparmentier/Test/TestJeu.rb +47 -0
  66. data/lib/Hashiparmentier/Test/TestPont.rb +73 -0
  67. data/lib/Hashiparmentier/Test/TestSauvegarde.rb +53 -0
  68. data/lib/Hashiparmentier/Test/execLinux.sh +8 -0
  69. data/lib/Hashiparmentier/Test/icone/Custom-Icon-Design-2014-World-Cup-Flags-Japan.ico +0 -0
  70. data/lib/Hashiparmentier/Test/test.bat +1 -0
  71. data/lib/Hashiparmentier/Test/testExec +2 -0
  72. data/lib/Hashiparmentier/Test/testTestExec.rb +3 -0
  73. data/lib/Hashiparmentier/UI/AideJeuUI.rb +22 -0
  74. data/lib/Hashiparmentier/UI/AideUI.rb +22 -0
  75. data/lib/Hashiparmentier/UI/AstucesUI.rb +23 -0
  76. data/lib/Hashiparmentier/UI/CaseUI.rb +70 -0
  77. data/lib/Hashiparmentier/UI/ChoixDifficulteUI.rb +45 -0
  78. data/lib/Hashiparmentier/UI/ChoixGrilleScrollUI.rb +37 -0
  79. data/lib/Hashiparmentier/UI/ChoixGrilleUI.rb +80 -0
  80. data/lib/Hashiparmentier/UI/ChoixNomUI.rb +39 -0
  81. data/lib/Hashiparmentier/UI/ChoixTailleUI.rb +44 -0
  82. data/lib/Hashiparmentier/UI/Fenetre.rb +32 -0
  83. data/lib/Hashiparmentier/UI/FenetreFinUI.rb +71 -0
  84. data/lib/Hashiparmentier/UI/FenetreJeuUI.rb +193 -0
  85. data/lib/Hashiparmentier/UI/FenetreReglesUI.rb +28 -0
  86. data/lib/Hashiparmentier/UI/FinUI.rb +91 -0
  87. data/lib/Hashiparmentier/UI/GrilleJouableUI.rb +47 -0
  88. data/lib/Hashiparmentier/UI/GrilleUI.rb +140 -0
  89. data/lib/Hashiparmentier/UI/IleUI.rb +87 -0
  90. data/lib/Hashiparmentier/UI/JeuUI.rb +161 -0
  91. data/lib/Hashiparmentier/UI/Menu.rb +322 -0
  92. data/lib/Hashiparmentier/UI/MenuUI.rb +107 -0
  93. data/lib/Hashiparmentier/UI/PontUI.rb +135 -0
  94. data/lib/Hashiparmentier/UI/RacineUI.rb +142 -0
  95. data/lib/Hashiparmentier/UI/ReglesUI.rb +22 -0
  96. data/lib/Hashiparmentier/doc/Action.html +259 -0
  97. data/lib/Hashiparmentier/doc/Aide.html +229 -0
  98. data/lib/Hashiparmentier/doc/AideUI.html +168 -0
  99. data/lib/Hashiparmentier/doc/Case.html +473 -0
  100. data/lib/Hashiparmentier/doc/CaseUI.html +343 -0
  101. data/lib/Hashiparmentier/doc/ChoixDifficulteUI.html +209 -0
  102. data/lib/Hashiparmentier/doc/ChoixGrilleScrollUI.html +239 -0
  103. data/lib/Hashiparmentier/doc/ChoixGrilleUI.html +276 -0
  104. data/lib/Hashiparmentier/doc/ChoixNomUI.html +215 -0
  105. data/lib/Hashiparmentier/doc/ChoixTailleUI.html +210 -0
  106. data/lib/Hashiparmentier/doc/Chrono.html +420 -0
  107. data/lib/Hashiparmentier/doc/Compte.html +514 -0
  108. data/lib/Hashiparmentier/doc/Couleur.html +422 -0
  109. data/lib/Hashiparmentier/doc/DonnerTechnique.html +245 -0
  110. data/lib/Hashiparmentier/doc/Fenetre.html +179 -0
  111. data/lib/Hashiparmentier/doc/FenetreJeuUI.html +274 -0
  112. data/lib/Hashiparmentier/doc/FenetreReglesUI.html +167 -0
  113. data/lib/Hashiparmentier/doc/FinUI.html +274 -0
  114. data/lib/Hashiparmentier/doc/Grille.html +2153 -0
  115. data/lib/Hashiparmentier/doc/GrilleJouableUI.html +229 -0
  116. data/lib/Hashiparmentier/doc/GrilleUI.html +477 -0
  117. data/lib/Hashiparmentier/doc/Hypothese.html +248 -0
  118. data/lib/Hashiparmentier/doc/Ile.html +1103 -0
  119. data/lib/Hashiparmentier/doc/IleUI.html +244 -0
  120. data/lib/Hashiparmentier/doc/Jeu.html +179 -0
  121. data/lib/Hashiparmentier/doc/JeuUI.html +471 -0
  122. data/lib/Hashiparmentier/doc/Menu.html +667 -0
  123. data/lib/Hashiparmentier/doc/MenuUI.html +416 -0
  124. data/lib/Hashiparmentier/doc/Pile.html +383 -0
  125. data/lib/Hashiparmentier/doc/Pont.html +943 -0
  126. data/lib/Hashiparmentier/doc/PontUI.html +307 -0
  127. data/lib/Hashiparmentier/doc/RacineUI.html +387 -0
  128. data/lib/Hashiparmentier/doc/ReglesUI.html +203 -0
  129. data/lib/Hashiparmentier/doc/Sauvegarde.html +672 -0
  130. data/lib/Hashiparmentier/doc/UndoRedo.html +389 -0
  131. data/lib/Hashiparmentier/doc/VerifierGrille.html +225 -0
  132. data/lib/Hashiparmentier/doc/created.rid +46 -0
  133. data/lib/Hashiparmentier/doc/css/fonts.css +167 -0
  134. data/lib/Hashiparmentier/doc/css/rdoc.css +590 -0
  135. data/lib/Hashiparmentier/doc/fonts/Lato-Light.ttf +0 -0
  136. data/lib/Hashiparmentier/doc/fonts/Lato-LightItalic.ttf +0 -0
  137. data/lib/Hashiparmentier/doc/fonts/Lato-Regular.ttf +0 -0
  138. data/lib/Hashiparmentier/doc/fonts/Lato-RegularItalic.ttf +0 -0
  139. data/lib/Hashiparmentier/doc/fonts/SourceCodePro-Bold.ttf +0 -0
  140. data/lib/Hashiparmentier/doc/fonts/SourceCodePro-Regular.ttf +0 -0
  141. data/lib/Hashiparmentier/doc/images/add.png +0 -0
  142. data/lib/Hashiparmentier/doc/images/arrow_up.png +0 -0
  143. data/lib/Hashiparmentier/doc/images/brick.png +0 -0
  144. data/lib/Hashiparmentier/doc/images/brick_link.png +0 -0
  145. data/lib/Hashiparmentier/doc/images/bug.png +0 -0
  146. data/lib/Hashiparmentier/doc/images/bullet_black.png +0 -0
  147. data/lib/Hashiparmentier/doc/images/bullet_toggle_minus.png +0 -0
  148. data/lib/Hashiparmentier/doc/images/bullet_toggle_plus.png +0 -0
  149. data/lib/Hashiparmentier/doc/images/date.png +0 -0
  150. data/lib/Hashiparmentier/doc/images/delete.png +0 -0
  151. data/lib/Hashiparmentier/doc/images/find.png +0 -0
  152. data/lib/Hashiparmentier/doc/images/loadingAnimation.gif +0 -0
  153. data/lib/Hashiparmentier/doc/images/macFFBgHack.png +0 -0
  154. data/lib/Hashiparmentier/doc/images/package.png +0 -0
  155. data/lib/Hashiparmentier/doc/images/page_green.png +0 -0
  156. data/lib/Hashiparmentier/doc/images/page_white_text.png +0 -0
  157. data/lib/Hashiparmentier/doc/images/page_white_width.png +0 -0
  158. data/lib/Hashiparmentier/doc/images/plugin.png +0 -0
  159. data/lib/Hashiparmentier/doc/images/ruby.png +0 -0
  160. data/lib/Hashiparmentier/doc/images/tag_blue.png +0 -0
  161. data/lib/Hashiparmentier/doc/images/tag_green.png +0 -0
  162. data/lib/Hashiparmentier/doc/images/transparent.png +0 -0
  163. data/lib/Hashiparmentier/doc/images/wrench.png +0 -0
  164. data/lib/Hashiparmentier/doc/images/wrench_orange.png +0 -0
  165. data/lib/Hashiparmentier/doc/images/zoom.png +0 -0
  166. data/lib/Hashiparmentier/doc/index.html +154 -0
  167. data/lib/Hashiparmentier/doc/js/darkfish.js +161 -0
  168. data/lib/Hashiparmentier/doc/js/jquery.js +4 -0
  169. data/lib/Hashiparmentier/doc/js/navigation.js +141 -0
  170. data/lib/Hashiparmentier/doc/js/navigation.js.gz +0 -0
  171. data/lib/Hashiparmentier/doc/js/search.js +109 -0
  172. data/lib/Hashiparmentier/doc/js/search_index.js +1 -0
  173. data/lib/Hashiparmentier/doc/js/search_index.js.gz +0 -0
  174. data/lib/Hashiparmentier/doc/js/searcher.js +229 -0
  175. data/lib/Hashiparmentier/doc/js/searcher.js.gz +0 -0
  176. data/lib/Hashiparmentier/doc/table_of_contents.html +1197 -0
  177. data/lib/Hashiparmentier/glade/Fin.glade +222 -0
  178. data/lib/Hashiparmentier/glade/aide.glade +127 -0
  179. data/lib/Hashiparmentier/glade/aideJeu.glade +143 -0
  180. data/lib/Hashiparmentier/glade/astuces.glade +1558 -0
  181. data/lib/Hashiparmentier/glade/fonts/VINERITC.TTF +0 -0
  182. data/lib/Hashiparmentier/glade/images/18790.ico +0 -0
  183. data/lib/Hashiparmentier/glade/images/1stars.png +0 -0
  184. data/lib/Hashiparmentier/glade/images/2stars.png +0 -0
  185. data/lib/Hashiparmentier/glade/images/3stars.png +0 -0
  186. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-07 11-48-54.png +0 -0
  187. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-13 17-54-16.png +0 -0
  188. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-13 18-00-00.png +0 -0
  189. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-13 18-01-25.png +0 -0
  190. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-13 18-17-16.png +0 -0
  191. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-13 18-17-40.png +0 -0
  192. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-13 18-18-01.png +0 -0
  193. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-13 18-18-23.png +0 -0
  194. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-13 18-19-00.png +0 -0
  195. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-13 18-19-17.png +0 -0
  196. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-13 18-19-54.png +0 -0
  197. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 14-24-24.png +0 -0
  198. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 14-24-44.png +0 -0
  199. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 14-24-58.png +0 -0
  200. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 14-25-16.png +0 -0
  201. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 14-25-36.png +0 -0
  202. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 14-25-51.png +0 -0
  203. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 14-26-04.png +0 -0
  204. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 14-26-15.png +0 -0
  205. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 15-01-40.png +0 -0
  206. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 15-02-08.png +0 -0
  207. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 15-02-33.png +0 -0
  208. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 15-02-54.png +0 -0
  209. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 15-03-13.png +0 -0
  210. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 15-03-39.png +0 -0
  211. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 15-03-55.png +0 -0
  212. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 15-04-10.png +0 -0
  213. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 15-33-07.png +0 -0
  214. data/lib/Hashiparmentier/glade/images/Capture du 2020-02-18 15-36-05.png +0 -0
  215. data/lib/Hashiparmentier/glade/images/LOGO.png +0 -0
  216. data/lib/Hashiparmentier/glade/images/LOGpR.png +0 -0
  217. data/lib/Hashiparmentier/glade/images/LOGpR2.png +0 -0
  218. data/lib/Hashiparmentier/glade/images/bg.jpg +0 -0
  219. data/lib/Hashiparmentier/glade/images/ex111.png +0 -0
  220. data/lib/Hashiparmentier/glade/images/ex112.png +0 -0
  221. data/lib/Hashiparmentier/glade/images/ex211.png +0 -0
  222. data/lib/Hashiparmentier/glade/images/ex212.png +0 -0
  223. data/lib/Hashiparmentier/glade/images/ex221.png +0 -0
  224. data/lib/Hashiparmentier/glade/images/ex222.png +0 -0
  225. data/lib/Hashiparmentier/glade/images/ex231.png +0 -0
  226. data/lib/Hashiparmentier/glade/images/ex232.png +0 -0
  227. data/lib/Hashiparmentier/glade/images/ex241.png +0 -0
  228. data/lib/Hashiparmentier/glade/images/ex242.png +0 -0
  229. data/lib/Hashiparmentier/glade/images/ex251.png +0 -0
  230. data/lib/Hashiparmentier/glade/images/ex252.png +0 -0
  231. data/lib/Hashiparmentier/glade/images/ex311.png +0 -0
  232. data/lib/Hashiparmentier/glade/images/ex312.png +0 -0
  233. data/lib/Hashiparmentier/glade/images/ex321.png +0 -0
  234. data/lib/Hashiparmentier/glade/images/ex322.png +0 -0
  235. data/lib/Hashiparmentier/glade/images/ex331.png +0 -0
  236. data/lib/Hashiparmentier/glade/images/ex332.png +0 -0
  237. data/lib/Hashiparmentier/glade/images/ex341.png +0 -0
  238. data/lib/Hashiparmentier/glade/images/ex342.png +0 -0
  239. data/lib/Hashiparmentier/glade/images/ex411.png +0 -0
  240. data/lib/Hashiparmentier/glade/images/ex412.png +0 -0
  241. data/lib/Hashiparmentier/glade/images/ex413.png +0 -0
  242. data/lib/Hashiparmentier/glade/images/ex421.png +0 -0
  243. data/lib/Hashiparmentier/glade/images/ex422.png +0 -0
  244. data/lib/Hashiparmentier/glade/images/ex423.png +0 -0
  245. data/lib/Hashiparmentier/glade/images/ex431.png +0 -0
  246. data/lib/Hashiparmentier/glade/images/ex432.png +0 -0
  247. data/lib/Hashiparmentier/glade/images/ex433.png +0 -0
  248. data/lib/Hashiparmentier/glade/images/ex441.png +0 -0
  249. data/lib/Hashiparmentier/glade/images/ex442.png +0 -0
  250. data/lib/Hashiparmentier/glade/images/ex443.png +0 -0
  251. data/lib/Hashiparmentier/glade/images/icone.png +0 -0
  252. data/lib/Hashiparmentier/glade/images/puzzle-solvation.gif +0 -0
  253. data/lib/Hashiparmentier/glade/images/wJapStylePlusNet.jpg +0 -0
  254. data/lib/Hashiparmentier/glade/images/wJapStylePlusNet15.jpg +0 -0
  255. data/lib/Hashiparmentier/glade/jeu.glade +539 -0
  256. data/lib/Hashiparmentier/glade/menu.glade +511 -0
  257. data/lib/Hashiparmentier/glade/regles.glade +856 -0
  258. data/lib/Hashiparmentier/map.txt +316 -0
  259. 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