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,87 @@
1
+
2
+
3
+ require_relative "../Core/Ile.rb"
4
+
5
+ require_relative "../UI/CaseUI.rb"
6
+ require "gtk3"
7
+ require "cairo"
8
+
9
+
10
+ ##
11
+ # Auteur:: Brabant Mano
12
+ # Version:: 0.1
13
+ # Date:: 09/04/2020
14
+ #
15
+ #Cette classe permet d'afficher une ile de la grille
16
+ class IleUI < CaseUI
17
+
18
+ private_class_method :new
19
+
20
+ ##
21
+ #Ce constructeur permet de créer un nouveau afficheur d'ile
22
+ #param::
23
+ # * ile L'ile à afficher
24
+ # * taille La taille d'une case (40 par defaut)
25
+ def IleUI.creer(ile, taille = 40)
26
+ new(ile, taille)
27
+ end
28
+
29
+ #:nodoc:
30
+ def initialize(ile, taille)
31
+ super(ile, taille)
32
+ end
33
+ #:doc:
34
+
35
+ ##
36
+ #Cette méthode permet de dessiner l'ile
37
+ #param::
38
+ # * window La fenetre sur laquelle l'ile va etre afficher
39
+ def draw(window)
40
+
41
+ super(window)
42
+
43
+ cr = window.create_cairo_context
44
+
45
+ positionY = @taille * @casee.posY() + @taille/2
46
+ positionX = @taille * @casee.posX() + @taille/2
47
+
48
+ cr.set_source_rgb(255, 255, 255)
49
+ cr.circle(positionY, positionX, @taille/2)
50
+ cr.fill()
51
+
52
+ choixCouleur(cr)
53
+
54
+ cr.circle(positionY, positionX, @taille/2-1)
55
+
56
+ if(@casee.getCapaciteResiduelle() <= 0)
57
+ cr.fill()
58
+ cr.set_source_rgb(255, 255, 255)
59
+ else
60
+ cr.stroke()
61
+ end
62
+
63
+ text = @casee.valeur.to_s()
64
+
65
+ cr.select_font_face "Serif", Cairo::FONT_SLANT_NORMAL, Cairo::FONT_WEIGHT_NORMAL
66
+ cr.set_font_size @taille/2
67
+
68
+ width = cr.text_extents(text).width
69
+ height = cr.text_extents(text).height #Centrer le texte
70
+
71
+ cr.move_to(positionY - width/2, positionX + height/2)
72
+ cr.show_text(text)
73
+
74
+ end
75
+
76
+
77
+ private def choixCouleur(cr)
78
+
79
+ couleur = Couleur::NOIR
80
+ couleur = Couleur::VERT if @casee.estDernierIle()
81
+ couleur = Couleur::ROUGE if @casee.getCapaciteResiduelle() < 0
82
+
83
+ cr.set_source_rgb(couleur.rouge, couleur.vert, couleur.bleu)
84
+
85
+ end
86
+
87
+ end
@@ -0,0 +1,161 @@
1
+
2
+
3
+ require_relative "../Core/DonnerTechnique.rb"
4
+ require_relative "../Core/VerifierGrille.rb"
5
+ require_relative "../Core/UndoRedo.rb"
6
+
7
+ require_relative "../UI/GrilleJouableUI.rb"
8
+
9
+
10
+ require 'gtk3'
11
+
12
+ ##
13
+ # PAS UTILISE DANS LE VERSION FINALE
14
+ # Auteur:: Brabant Mano
15
+ # Version:: 0.1
16
+ # Date:: 09/04/2020
17
+ class JeuUI < Gtk::Box
18
+
19
+ attr_reader :racine
20
+ attr_reader :compte
21
+
22
+ def initialize(racine)
23
+
24
+ super(:vertical , 0)
25
+
26
+ @racine = racine
27
+
28
+ end
29
+
30
+ ##
31
+ #Cette méthode permet de charger la grille avec laquelle on va jouer
32
+ #param::
33
+ # * grille La grille avec laquelle on va jouer
34
+ # * nomCompte Le nom du compte qui joue
35
+ def chargerGrille(grille, nomCompte)
36
+
37
+ each_all do |c|
38
+ remove(c)
39
+ end
40
+
41
+
42
+ @compte = Compte.recuperer(nomCompte)
43
+
44
+
45
+ @verifGrille = VerifierGrille.creer(grille)
46
+ @donnerTech = DonnerTechnique.creer(grille)
47
+ # @chronoGrille = Chrono.new(@grille)
48
+ # @threadChrono = Thread.new{@chronoGrille.lancerChrono()}
49
+
50
+ @grille = GrilleJouableUI.new(grille)
51
+
52
+ @undo = Gtk::Button.new(:label => "Undo")
53
+ @undo.signal_connect "clicked" do
54
+ @grille.grille.undo()
55
+ end
56
+
57
+ @redo = Gtk::Button.new(:label => "Redo")
58
+ @redo.signal_connect "clicked" do
59
+ @grille.grille.redo()
60
+ end
61
+
62
+ @hypotheseCreer = Gtk::Button.new(:label => "Creer hypothèse")
63
+ @hypotheseCreer.signal_connect "clicked" do
64
+ @grille.grille.creerHypothese()
65
+ end
66
+
67
+ @hypotheseValider = Gtk::Button.new(:label => "Valider hypothèse")
68
+ @hypotheseValider.signal_connect "clicked" do
69
+ @grille.grille.valideHypothese()
70
+ end
71
+
72
+
73
+ @hypotheseSupprimer = Gtk::Button.new(:label => "Supprimer hypothèse")
74
+ @hypotheseSupprimer.signal_connect "clicked" do
75
+ @grille.grille.supprimeHypothese(self)
76
+ end
77
+
78
+ @sauvegarder = Gtk::Button.new(:label => "Sauvegarder")
79
+ @sauvegarder.signal_connect "clicked" do
80
+ Sauvegarde.recuperer(@compte, @grille.grille).setGrille(@grille.grille).sauvegarder()
81
+ end
82
+
83
+
84
+ @aideValide = Gtk::Button.new(:label => "Verifier grille")
85
+ @aideValide.signal_connect "clicked" do
86
+ @verifGrille.aider()
87
+ end
88
+
89
+ @labelTechnique = Gtk::Label.new()
90
+
91
+ @aideTechnique = Gtk::Button.new(:label => "Donner technique")
92
+ @aideTechnique.signal_connect "clicked" do
93
+ @labelTechnique.text = @donnerTech.aider()
94
+ end
95
+
96
+ @valider = Gtk::Button.new(:label => "Valider")
97
+ @valider.signal_connect "clicked" do
98
+ finir()
99
+ end
100
+
101
+ aides = Gtk::Box.new(:horizontal)
102
+ aides.pack_start(@aideValide, :expand => true, :fill => true)
103
+ aides.pack_start(@aideTechnique, :expand => true, :fill => true)
104
+
105
+ labelTechnique = Gtk::Box.new(:vertical)
106
+ labelTechnique.pack_start(@labelTechnique, :expand => true, :fill => true)
107
+ labelTechnique.pack_start(aides, :expand => true, :fill => true)
108
+
109
+ undoRedo = Gtk::Box.new(:horizontal)
110
+ undoRedo.pack_start(@undo, :expand => true, :fill => true)
111
+ undoRedo.pack_start(@redo, :expand => true, :fill => true)
112
+
113
+ hypotheses = Gtk::Box.new(:vertical)
114
+ hypotheses.pack_start(@hypotheseCreer, :expand => true, :fill => true)
115
+ hypotheses.pack_start(@hypotheseValider, :expand => true, :fill => true)
116
+ hypotheses.pack_start(@hypotheseSupprimer, :expand => true, :fill => true)
117
+
118
+ controle = Gtk::Box.new(:vertical)
119
+ controle.pack_start(hypotheses, :expand => true, :fill => true)
120
+ controle.pack_start(undoRedo, :expand => true, :fill => true)
121
+ controle.pack_start(labelTechnique, :expand => true, :fill => true)
122
+
123
+
124
+ jeu = Gtk::Box.new(:horizontal)
125
+ jeu.pack_start(@grille, :expand => true, :fill => true)
126
+ jeu.pack_start(controle, :expand => true, :fill => true)
127
+
128
+ pack_start(jeu, :expand => true, :fill => true)
129
+ pack_start(@valider, :expand => true, :fill => true)
130
+
131
+ show_all
132
+
133
+ end
134
+
135
+ def grille=(grille)
136
+ @grille.grille=(grille)
137
+ end
138
+
139
+ def finir()
140
+
141
+ if(@grille.grille.fini?())
142
+ #puts "Bravo vous avez gagné !!!"
143
+ @grille.recommencer()
144
+ @grille.sauvegarder(@compte)
145
+ @racine.finirPartie(@grille.grille.tailleX, @grille.grille.difficulte)
146
+ end
147
+
148
+ end
149
+
150
+
151
+ def sauvegardeGrille()
152
+
153
+ if(!@grille.eql?(nil))
154
+
155
+ @grille.sauvegarder(@compte)
156
+
157
+ end
158
+
159
+ end
160
+
161
+ end
@@ -0,0 +1,322 @@
1
+ require 'gtk3'
2
+
3
+ require_relative "../UI/FenetreJeuUI.rb"
4
+ require_relative "../UI/AideUI.rb"
5
+ require_relative "../UI/AstucesUI.rb"
6
+ require_relative "../UI/ReglesUI.rb"
7
+ require_relative "../UI/ChoixGrilleUI.rb"
8
+ require_relative "../UI/ChoixGrilleScrollUI.rb"
9
+ require_relative "../CSS/Style.rb"
10
+
11
+
12
+
13
+ class Menu < Gtk::Box
14
+ # --- BUILDERS ---
15
+ # @builder
16
+ # @builderJeu
17
+
18
+ # --- WINDOWS ---
19
+ # @window
20
+
21
+ # --- BTN ---
22
+ # @btnJouer
23
+ # @btnQuitter
24
+ # @btnAide
25
+ # @btnRegles
26
+ # @btnAstuces
27
+
28
+
29
+
30
+ @@mode = 1
31
+ @@taille = 7
32
+ @@difficulte = 0
33
+
34
+ def initialize()
35
+ super(:vertical, 0)
36
+ @builder = Gtk::Builder.new
37
+ #@racine = racine
38
+ self.afficheDemarrage()
39
+ end
40
+
41
+ def afficheDemarrage()
42
+ if(@window != nil) then
43
+ @window.destroy()
44
+ end
45
+ @builder.add_from_file("lib/Hashiparmentier/glade/menu.glade")
46
+
47
+ # --- GET_OBJECT
48
+ # --- WINDOWS ---
49
+ @window = @builder.get_object("windowMenu")
50
+
51
+ # --- BTN ---
52
+ @btnQuitter = @builder.get_object("btnQuitter")
53
+ @btnJouer = @builder.get_object("btnJouer")
54
+ @btnAide = @builder.get_object("btnAide")
55
+ @btnRegles = @builder.get_object("btnRegles")
56
+ @btnAstuces = @builder.get_object("btnAstuces")
57
+
58
+ # --- TGL ---
59
+ @tglMNormal = @builder.get_object("tglNormal")
60
+ @tglAventure = @builder.get_object("tglAventure")
61
+ @tgl77 = @builder.get_object("tgl77")
62
+ @tgl1010 = @builder.get_object("tgl1010")
63
+ @tgl1515 = @builder.get_object("tgl1515")
64
+ @tglFacile = @builder.get_object("tglFacile")
65
+ @tglNormal = @builder.get_object("tglNorma")
66
+ @tglDiff = @builder.get_object("tglDifficile")
67
+
68
+ # -- LABEL
69
+ @lbTaille = @builder.get_object("lbTaille")
70
+ @lbTaille.style_context.add_provider(@@CSS_LABEL_MENU, Gtk::StyleProvider::PRIORITY_USER)
71
+ @lbDiff = @builder.get_object("lbDiff")
72
+ @lbDiff.style_context.add_provider(@@CSS_LABEL_MENU, Gtk::StyleProvider::PRIORITY_USER)
73
+ @lbTaille = @builder.get_object("lbTaille")
74
+ @lbTaille.style_context.add_provider(@@CSS_LABEL_MENU, Gtk::StyleProvider::PRIORITY_USER)
75
+ @lbPseudo = @builder.get_object("lbPseudo")
76
+ @lbPseudo.style_context.add_provider(@@CSS_LABEL_MENU, Gtk::StyleProvider::PRIORITY_USER)
77
+
78
+ @btnQuitter.style_context.add_provider(@@CSS_BTN_BOTMENU, Gtk::StyleProvider::PRIORITY_USER)
79
+ @btnJouer.style_context.add_provider(@@CSS_BTN_BOTMENU, Gtk::StyleProvider::PRIORITY_USER)
80
+
81
+ @btnAide.style_context.add_provider(@@CSS_BTN_TOPMENU, Gtk::StyleProvider::PRIORITY_USER)
82
+ @btnRegles.style_context.add_provider(@@CSS_BTN_TOPMENU, Gtk::StyleProvider::PRIORITY_USER)
83
+ @btnAstuces.style_context.add_provider(@@CSS_BTN_TOPMENU, Gtk::StyleProvider::PRIORITY_USER)
84
+
85
+
86
+ # --- ENTRY
87
+ @pseudo = @builder.get_object("entryPseudo")
88
+
89
+ # --- CSS
90
+ @window.style_context.add_provider(@@CSS_BG_MENU, Gtk::StyleProvider::PRIORITY_USER)
91
+ @tglMNormal.style_context.add_provider(@@CSS_BUTTON_ACTIVE, Gtk::StyleProvider::PRIORITY_USER)
92
+ @tglAventure.style_context.add_provider(@@CSS_BUTTON_ACTIVE, Gtk::StyleProvider::PRIORITY_USER)
93
+ @tgl77.style_context.add_provider(@@CSS_BUTTON_ACTIVE, Gtk::StyleProvider::PRIORITY_USER)
94
+ @tgl1010.style_context.add_provider(@@CSS_BUTTON_ACTIVE, Gtk::StyleProvider::PRIORITY_USER)
95
+ @tgl1515.style_context.add_provider(@@CSS_BUTTON_ACTIVE, Gtk::StyleProvider::PRIORITY_USER)
96
+ @tglFacile.style_context.add_provider(@@CSS_BUTTON_ACTIVE, Gtk::StyleProvider::PRIORITY_USER)
97
+ @tglNormal.style_context.add_provider(@@CSS_BUTTON_ACTIVE, Gtk::StyleProvider::PRIORITY_USER)
98
+ @tglDiff.style_context.add_provider(@@CSS_BUTTON_ACTIVE, Gtk::StyleProvider::PRIORITY_USER)
99
+ # --- SIGNAUX ---
100
+ # --- WINDOWS ---
101
+ @window.signal_connect('destroy') { |_widget| Gtk.main_quit }
102
+
103
+ # --- BTN ---
104
+ @btnQuitter.signal_connect('clicked') { |_widget| Gtk.main_quit }
105
+ @btnJouer.signal_connect('clicked') { |_widget| valide() }
106
+ @btnAide.signal_connect('clicked') { |_widget| AfficherAide() }
107
+ @btnRegles.signal_connect('clicked') { |_widget| AfficherRegles() }
108
+ @btnAstuces.signal_connect('clicked') { |_widget| AfficherAstuces() }
109
+
110
+ @window.show()
111
+ # Appel de la gestion des signaux
112
+ self.gestionTgl()
113
+ Gtk.main()
114
+ end
115
+
116
+ def gestionTgl()
117
+ #Gestion des paramètres selon [Mode], [Taille] et [Difficulté]
118
+
119
+ #1-Mode de jeu : Normal OU Aventure
120
+ @tglMNormal.signal_connect('toggled') {
121
+
122
+ if (@@mode != 1) && @tglAventure.active?
123
+ @tglAventure.active = false;
124
+ @tglMNormal.active = true;
125
+ @@mode = 1;
126
+ #puts "Mode : Normal - #{@@mode}";
127
+ else if !(@tglMNormal.active?) && !(@tglAventure.active?)
128
+ @tglMNormal.active = true;
129
+ @@mode = 1;
130
+ #puts "Mode : Normal - #{@@mode}";
131
+ end
132
+ end
133
+ }
134
+
135
+ @tglAventure.signal_connect('toggled') {
136
+
137
+ if (@@mode != 2) && @tglMNormal.active?
138
+ @tglMNormal.active = false;
139
+ @tglAventure.active = true;
140
+ @@mode = 2;
141
+ #puts "Mode : Aventure - #{@@mode}";
142
+ else if !(@tglAventure.active?) && !(@tglMNormal.active?)
143
+ @tglAventure.active = true;
144
+ @@mode = 2;
145
+ #puts "Mode : Aventure - #{@@mode}";
146
+ end
147
+ end
148
+ }
149
+
150
+ #2-Taille de grille : 7*7, 10*10 OU 15*15
151
+ @tgl77.signal_connect('toggled') {
152
+
153
+ if (@@taille != 7) && (@tgl1010.active? || @tgl1515.active?)
154
+ @tgl1010.active = false;
155
+ @tgl1515.active = false;
156
+ @tgl77.active = true;
157
+ @@taille = 7;
158
+ #puts "Taille grille : 7*7 - #{@@taille}";
159
+ else if !(@tgl77.active?) && !(@tgl1010.active?) && !(@tgl1515.active?)
160
+ @tgl77.active = true;
161
+ @@taille = 7;
162
+ #puts "Taille grille : 7*7 - #{@@taille}";
163
+ end
164
+ end
165
+ }
166
+
167
+ @tgl1010.signal_connect('toggled') {
168
+
169
+ if (@@taille != 10) && (@tgl77.active? || @tgl1515.active?)
170
+ @tgl77.active = false;
171
+ @tgl1515.active = false;
172
+ @tgl1010.active = true;
173
+ @@taille = 10;
174
+ #puts "Taille grille : 10*10 - #{@@taille}";
175
+ else if !(@tgl1010.active?) && !(@tgl77.active?) && !(@tgl1515.active?)
176
+ @tgl1010.active = true;
177
+ @@taille = 10;
178
+ #puts "Taille grille : 10*10 - #{@@taille}";
179
+ end
180
+ end
181
+ }
182
+
183
+ @tgl1515.signal_connect('toggled') {
184
+
185
+ if (@@taille != 15) && (@tgl77.active? || @tgl1010.active?)
186
+ @tgl77.active = false;
187
+ @tgl1010.active = false;
188
+ @tgl1515.active = true;
189
+ @@taille = 15;
190
+ #puts "Taille grille : 15*15 - #{@@taille}";
191
+ else if !(@tgl1515.active?) && !(@tgl77.active?) && !(@tgl1010.active?)
192
+ @tgl1515.active = true;
193
+ @@taille = 15;
194
+ #puts "Taille grille : 15*15 - #{@@taille}";
195
+ end
196
+ end
197
+ }
198
+
199
+ #3-Difficulté de la grille : Facile, Normal OU Difficile
200
+ @tglFacile.signal_connect('toggled'){
201
+
202
+ if (@@difficulte != 0) && (@tglNormal.active? || @tglDiff.active?)
203
+ @tglNormal.active = false;
204
+ @tglDiff.active = false;
205
+ @tglFacile.active = true;
206
+ @@difficulte = 0;
207
+ #puts "Difficultée : Facile - #{@@difficulte}";
208
+ else if !(@tglFacile.active?) && !(@tglNormal.active?) && !(@tglDiff.active?)
209
+ @tglFacile.active = true;
210
+ @@difficulte = 0;
211
+ #puts "Difficultée : Facile - #{@@difficulte}";
212
+ end
213
+ end
214
+ }
215
+
216
+ @tglNormal.signal_connect('toggled'){
217
+ if (@@difficulte != 1) && (@tglFacile.active? || @tglDiff.active?)
218
+ @tglDiff.active = false;
219
+ @tglFacile.active = false;
220
+ @tglNormal.active = true;
221
+ @@difficulte = 1;
222
+ #puts "Difficultée : Normale - #{@@difficulte}";
223
+ else if !(@tglNormal.active?) && !(@tglFacile.active?) && !(@tglDiff.active?)
224
+ @tglNormal.active = true;
225
+ @@difficulte = 1;
226
+ #puts "Difficultée : Normale - #{@@difficulte}";
227
+ end
228
+ end
229
+ }
230
+
231
+ @tglDiff.signal_connect('toggled'){
232
+ if (@@difficulte != 2) && (@tglFacile.active? || @tglNormal.active?)
233
+ @tglFacile.active = false;
234
+ @tglNormal.active = false;
235
+ @tglDiff.active = true;
236
+ @@difficulte = 2;
237
+ #puts "Difficultée : Difficile - #{@@difficulte}";
238
+ else if !(@tglDiff.active?) && !(@tglFacile.active?) && !(@tglNormal.active?)
239
+ @tglDiff.active = true;
240
+ @@difficulte = 2;
241
+ #puts "Difficultée : Difficile - #{@@difficulte}";
242
+ end
243
+ end
244
+ }
245
+ end
246
+
247
+ def AfficherAide()
248
+ @aide = AideUI.new()
249
+ end
250
+
251
+ def AfficherRegles()
252
+ @regles = ReglesUI.new()
253
+ end
254
+
255
+ def AfficherAstuces()
256
+ @astuces = AstucesUI.new()
257
+ end
258
+
259
+ def removeChild(fenetre)
260
+ fenetre.each_all do |c|
261
+ remove(c)
262
+ end
263
+ end
264
+
265
+ def commencerPartie(grille,nomCompte)
266
+ @fenetreScroll.hide
267
+ @jeu = FenetreJeuUI.new(@@mode, grille,nomCompte,@window,@fenetreScroll)
268
+ Gtk.main_quit
269
+ end
270
+
271
+ def retourMenu()
272
+
273
+ each_all do |c|
274
+ remove(c)
275
+ end
276
+
277
+ pack_start(@titre, :expand => true, :fill => true)
278
+ pack_start(@choixNom, :expand => true, :fill => true)
279
+ pack_start(@choixTaille, :expand => true, :fill => true)
280
+ pack_start(@choixDifficulte, :expand => true, :fill => true)
281
+ pack_start(@surBoxValide, :expand => true, :fill => true)
282
+
283
+ end
284
+
285
+
286
+ private def valide()
287
+
288
+ afficheLabel("Creation du compte en cours")
289
+
290
+ @window.hide()
291
+ @fenetreScroll = Gtk::Window.new()
292
+ @fenetreScroll.set_title("Choix Grille")
293
+ boxScroll = Gtk::Box.new(:horizontal)
294
+ choix = ChoixGrilleScrollUI.new(ChoixGrilleUI.new(self))
295
+ choix.chargerGrille(@pseudo.text(),@@taille,@@difficulte)
296
+ boxScroll.pack_start(choix, :expand => true, :fill => true)
297
+ @fenetreScroll.add(boxScroll)
298
+ @fenetreScroll.set_window_position(Gtk::WindowPosition::CENTER)
299
+ @fenetreScroll.maximize
300
+ @fenetreScroll.signal_connect('destroy') {|_widget| Gtk.main_quit}
301
+ @fenetreScroll.show_all
302
+
303
+ #Thread.new{@racine.choisirGrille(@pseudo.text(), @@taille, @@difficulte)}
304
+
305
+ end
306
+
307
+ def afficheLabel(label)
308
+
309
+ pack_start(@label = Gtk::Label.new(label), :expand => true, :fill => true)
310
+
311
+ show_all
312
+
313
+ end
314
+
315
+ def afficheRegles
316
+ @fenetreRegles.show_all
317
+ end
318
+
319
+ end
320
+
321
+ #menu = Menu.new()
322
+ # menu.afficheDemarrage()