hashi-ruby 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (368) hide show
  1. checksums.yaml +7 -0
  2. data/bin/assets/FlatColor/gtk-3.20/assets/blank.png +0 -0
  3. data/bin/assets/FlatColor/gtk-3.20/assets/check-insensitive.png +0 -0
  4. data/bin/assets/FlatColor/gtk-3.20/assets/check-mixed-insensitive.png +0 -0
  5. data/bin/assets/FlatColor/gtk-3.20/assets/check-mixed.png +0 -0
  6. data/bin/assets/FlatColor/gtk-3.20/assets/check.png +0 -0
  7. data/bin/assets/FlatColor/gtk-3.20/assets/grid-selection-blank.png +0 -0
  8. data/bin/assets/FlatColor/gtk-3.20/assets/grid-selection.png +0 -0
  9. data/bin/assets/FlatColor/gtk-3.20/assets/menuitem-checkbox-checked-hover.png +0 -0
  10. data/bin/assets/FlatColor/gtk-3.20/assets/menuitem-checkbox-checked-insensitive.png +0 -0
  11. data/bin/assets/FlatColor/gtk-3.20/assets/menuitem-checkbox-checked.png +0 -0
  12. data/bin/assets/FlatColor/gtk-3.20/assets/menuitem-checkbox-mixed-hover.png +0 -0
  13. data/bin/assets/FlatColor/gtk-3.20/assets/menuitem-checkbox-mixed-insensitive.png +0 -0
  14. data/bin/assets/FlatColor/gtk-3.20/assets/menuitem-checkbox-mixed.png +0 -0
  15. data/bin/assets/FlatColor/gtk-3.20/assets/menuitem-radio-checked-hover.png +0 -0
  16. data/bin/assets/FlatColor/gtk-3.20/assets/menuitem-radio-checked-insensitive.png +0 -0
  17. data/bin/assets/FlatColor/gtk-3.20/assets/menuitem-radio-checked.png +0 -0
  18. data/bin/assets/FlatColor/gtk-3.20/assets/pane-separator-grip-vertical.png +0 -0
  19. data/bin/assets/FlatColor/gtk-3.20/assets/pane-separator-grip.png +0 -0
  20. data/bin/assets/FlatColor/gtk-3.20/assets/radio-checked.png +0 -0
  21. data/bin/assets/FlatColor/gtk-3.20/assets/radio-insensitive.png +0 -0
  22. data/bin/assets/FlatColor/gtk-3.20/assets/radio-unchecked.png +0 -0
  23. data/bin/assets/FlatColor/gtk-3.20/assets/radio.png +0 -0
  24. data/bin/assets/FlatColor/gtk-3.20/assets/slider-dark.png +0 -0
  25. data/bin/assets/FlatColor/gtk-3.20/assets/slider-dark@2.png +0 -0
  26. data/bin/assets/FlatColor/gtk-3.20/assets/slider-horz-scale-has-marks-above-dark.png +0 -0
  27. data/bin/assets/FlatColor/gtk-3.20/assets/slider-horz-scale-has-marks-above-dark@2.png +0 -0
  28. data/bin/assets/FlatColor/gtk-3.20/assets/slider-horz-scale-has-marks-above-insensitive-dark.png +0 -0
  29. data/bin/assets/FlatColor/gtk-3.20/assets/slider-horz-scale-has-marks-above-insensitive-dark@2.png +0 -0
  30. data/bin/assets/FlatColor/gtk-3.20/assets/slider-horz-scale-has-marks-above-insensitive.png +0 -0
  31. data/bin/assets/FlatColor/gtk-3.20/assets/slider-horz-scale-has-marks-above-insensitive@2.png +0 -0
  32. data/bin/assets/FlatColor/gtk-3.20/assets/slider-horz-scale-has-marks-above.png +0 -0
  33. data/bin/assets/FlatColor/gtk-3.20/assets/slider-horz-scale-has-marks-above@2.png +0 -0
  34. data/bin/assets/FlatColor/gtk-3.20/assets/slider-horz-scale-has-marks-below-dark.png +0 -0
  35. data/bin/assets/FlatColor/gtk-3.20/assets/slider-horz-scale-has-marks-below-dark@2.png +0 -0
  36. data/bin/assets/FlatColor/gtk-3.20/assets/slider-horz-scale-has-marks-below-insensitive-dark.png +0 -0
  37. data/bin/assets/FlatColor/gtk-3.20/assets/slider-horz-scale-has-marks-below-insensitive-dark@2.png +0 -0
  38. data/bin/assets/FlatColor/gtk-3.20/assets/slider-horz-scale-has-marks-below-insensitive.png +0 -0
  39. data/bin/assets/FlatColor/gtk-3.20/assets/slider-horz-scale-has-marks-below-insensitive@2.png +0 -0
  40. data/bin/assets/FlatColor/gtk-3.20/assets/slider-horz-scale-has-marks-below.png +0 -0
  41. data/bin/assets/FlatColor/gtk-3.20/assets/slider-horz-scale-has-marks-below@2.png +0 -0
  42. data/bin/assets/FlatColor/gtk-3.20/assets/slider-insensitive-dark.png +0 -0
  43. data/bin/assets/FlatColor/gtk-3.20/assets/slider-insensitive-dark@2.png +0 -0
  44. data/bin/assets/FlatColor/gtk-3.20/assets/slider-insensitive.png +0 -0
  45. data/bin/assets/FlatColor/gtk-3.20/assets/slider-insensitive@2.png +0 -0
  46. data/bin/assets/FlatColor/gtk-3.20/assets/slider-vert-scale-has-marks-above-dark.png +0 -0
  47. data/bin/assets/FlatColor/gtk-3.20/assets/slider-vert-scale-has-marks-above-dark@2.png +0 -0
  48. data/bin/assets/FlatColor/gtk-3.20/assets/slider-vert-scale-has-marks-above-insensitive-dark.png +0 -0
  49. data/bin/assets/FlatColor/gtk-3.20/assets/slider-vert-scale-has-marks-above-insensitive-dark@2.png +0 -0
  50. data/bin/assets/FlatColor/gtk-3.20/assets/slider-vert-scale-has-marks-above-insensitive.png +0 -0
  51. data/bin/assets/FlatColor/gtk-3.20/assets/slider-vert-scale-has-marks-above-insensitive@2.png +0 -0
  52. data/bin/assets/FlatColor/gtk-3.20/assets/slider-vert-scale-has-marks-above.png +0 -0
  53. data/bin/assets/FlatColor/gtk-3.20/assets/slider-vert-scale-has-marks-above@2.png +0 -0
  54. data/bin/assets/FlatColor/gtk-3.20/assets/slider-vert-scale-has-marks-below-dark.png +0 -0
  55. data/bin/assets/FlatColor/gtk-3.20/assets/slider-vert-scale-has-marks-below-dark@2.png +0 -0
  56. data/bin/assets/FlatColor/gtk-3.20/assets/slider-vert-scale-has-marks-below-insensitive-dark.png +0 -0
  57. data/bin/assets/FlatColor/gtk-3.20/assets/slider-vert-scale-has-marks-below-insensitive-dark@2.png +0 -0
  58. data/bin/assets/FlatColor/gtk-3.20/assets/slider-vert-scale-has-marks-below-insensitive.png +0 -0
  59. data/bin/assets/FlatColor/gtk-3.20/assets/slider-vert-scale-has-marks-below-insensitive@2.png +0 -0
  60. data/bin/assets/FlatColor/gtk-3.20/assets/slider-vert-scale-has-marks-below.png +0 -0
  61. data/bin/assets/FlatColor/gtk-3.20/assets/slider-vert-scale-has-marks-below@2.png +0 -0
  62. data/bin/assets/FlatColor/gtk-3.20/assets/slider.png +0 -0
  63. data/bin/assets/FlatColor/gtk-3.20/assets/slider@2.png +0 -0
  64. data/bin/assets/FlatColor/gtk-3.20/gnome-applications.css +429 -0
  65. data/bin/assets/FlatColor/gtk-3.20/gtk-widgets.css +786 -0
  66. data/bin/assets/FlatColor/gtk-3.20/gtk.css +113 -0
  67. data/bin/assets/FlatColor/gtk-3.20/gtk.css.base +108 -0
  68. data/bin/assets/FlatColor/gtk-3.20/settings.ini +7 -0
  69. data/bin/assets/FlatColor/gtk-3.20/unity.css +68 -0
  70. data/bin/assets/FlatColor/gtk-3.20/widgets/button.css +58 -0
  71. data/bin/assets/FlatColor/gtk-3.20/widgets/calendar.css +32 -0
  72. data/bin/assets/FlatColor/gtk-3.20/widgets/cell-row.css +25 -0
  73. data/bin/assets/FlatColor/gtk-3.20/widgets/check-radio.css +164 -0
  74. data/bin/assets/FlatColor/gtk-3.20/widgets/chrome.css +16 -0
  75. data/bin/assets/FlatColor/gtk-3.20/widgets/color-chooser.css +114 -0
  76. data/bin/assets/FlatColor/gtk-3.20/widgets/column-header.css +52 -0
  77. data/bin/assets/FlatColor/gtk-3.20/widgets/combobox.css +26 -0
  78. data/bin/assets/FlatColor/gtk-3.20/widgets/csd.css +125 -0
  79. data/bin/assets/FlatColor/gtk-3.20/widgets/entry.css +40 -0
  80. data/bin/assets/FlatColor/gtk-3.20/widgets/header-bar.css +27 -0
  81. data/bin/assets/FlatColor/gtk-3.20/widgets/infobar.css +90 -0
  82. data/bin/assets/FlatColor/gtk-3.20/widgets/linked-buttons.css +524 -0
  83. data/bin/assets/FlatColor/gtk-3.20/widgets/menu.css +127 -0
  84. data/bin/assets/FlatColor/gtk-3.20/widgets/notebook.css +200 -0
  85. data/bin/assets/FlatColor/gtk-3.20/widgets/osd.css +203 -0
  86. data/bin/assets/FlatColor/gtk-3.20/widgets/progress-scale.css +365 -0
  87. data/bin/assets/FlatColor/gtk-3.20/widgets/scrollbar.css +116 -0
  88. data/bin/assets/FlatColor/gtk-3.20/widgets/selection-mode.css +109 -0
  89. data/bin/assets/FlatColor/gtk-3.20/widgets/separator.css +24 -0
  90. data/bin/assets/FlatColor/gtk-3.20/widgets/sidebar.css +43 -0
  91. data/bin/assets/FlatColor/gtk-3.20/widgets/spinbutton.css +102 -0
  92. data/bin/assets/FlatColor/gtk-3.20/widgets/spinner.css +120 -0
  93. data/bin/assets/FlatColor/gtk-3.20/widgets/switch.css +63 -0
  94. data/bin/assets/FlatColor/gtk-3.20/widgets/toolbar.css +39 -0
  95. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-checked-dark.png +0 -0
  96. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-checked-dark@2.png +0 -0
  97. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-checked-insensitive-dark.png +0 -0
  98. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-checked-insensitive-dark@2.png +0 -0
  99. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-checked-insensitive-selected.png +0 -0
  100. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-checked-insensitive-selected@2.png +0 -0
  101. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-checked-insensitive.png +0 -0
  102. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-checked-insensitive@2.png +0 -0
  103. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-checked-selected.png +0 -0
  104. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-checked-selected@2.png +0 -0
  105. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-checked-selectionmode-dark.png +0 -0
  106. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-checked-selectionmode-dark@2.png +0 -0
  107. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-checked-selectionmode.png +0 -0
  108. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-checked-selectionmode@2.png +0 -0
  109. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-checked.png +0 -0
  110. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-checked@2.png +0 -0
  111. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-mixed-dark.png +0 -0
  112. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-mixed-dark@2.png +0 -0
  113. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-mixed-insensitive-dark.png +0 -0
  114. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-mixed-insensitive-dark@2.png +0 -0
  115. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-mixed-insensitive-selected.png +0 -0
  116. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-mixed-insensitive-selected@2.png +0 -0
  117. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-mixed-insensitive.png +0 -0
  118. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-mixed-insensitive@2.png +0 -0
  119. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-mixed-selected.png +0 -0
  120. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-mixed-selected@2.png +0 -0
  121. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-mixed.png +0 -0
  122. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-mixed@2.png +0 -0
  123. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-selectionmode-dark.png +0 -0
  124. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-selectionmode-dark@2.png +0 -0
  125. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-selectionmode.png +0 -0
  126. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-selectionmode@2.png +0 -0
  127. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-unchecked-dark.png +0 -0
  128. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-unchecked-dark@2.png +0 -0
  129. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-unchecked-insensitive-dark.png +0 -0
  130. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-unchecked-insensitive-dark@2.png +0 -0
  131. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-unchecked-insensitive-selected.png +0 -0
  132. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-unchecked-insensitive-selected@2.png +0 -0
  133. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-unchecked-insensitive.png +0 -0
  134. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-unchecked-insensitive@2.png +0 -0
  135. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-unchecked-selected.png +0 -0
  136. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-unchecked-selected@2.png +0 -0
  137. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-unchecked.png +0 -0
  138. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/checkbox-unchecked@2.png +0 -0
  139. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-checked-dark.png +0 -0
  140. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-checked-dark@2.png +0 -0
  141. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-checked-insensitive-dark.png +0 -0
  142. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-checked-insensitive-dark@2.png +0 -0
  143. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-checked-insensitive-selected.png +0 -0
  144. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-checked-insensitive-selected@2.png +0 -0
  145. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-checked-insensitive.png +0 -0
  146. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-checked-insensitive@2.png +0 -0
  147. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-checked-selected.png +0 -0
  148. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-checked-selected@2.png +0 -0
  149. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-checked.png +0 -0
  150. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-checked@2.png +0 -0
  151. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-mixed-dark.png +0 -0
  152. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-mixed-dark@2.png +0 -0
  153. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-mixed-insensitive-dark.png +0 -0
  154. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-mixed-insensitive-dark@2.png +0 -0
  155. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-mixed-insensitive-selected.png +0 -0
  156. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-mixed-insensitive-selected@2.png +0 -0
  157. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-mixed-insensitive.png +0 -0
  158. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-mixed-insensitive@2.png +0 -0
  159. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-mixed-selected.png +0 -0
  160. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-mixed-selected@2.png +0 -0
  161. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-mixed.png +0 -0
  162. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-mixed@2.png +0 -0
  163. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-unchecked-dark.png +0 -0
  164. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-unchecked-dark@2.png +0 -0
  165. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-unchecked-insensitive-dark.png +0 -0
  166. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-unchecked-insensitive-dark@2.png +0 -0
  167. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-unchecked-insensitive-selected.png +0 -0
  168. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-unchecked-insensitive-selected@2.png +0 -0
  169. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-unchecked-insensitive.png +0 -0
  170. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-unchecked-insensitive@2.png +0 -0
  171. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-unchecked-selected.png +0 -0
  172. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-unchecked-selected@2.png +0 -0
  173. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-unchecked.png +0 -0
  174. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/radio-unchecked@2.png +0 -0
  175. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-dark.png +0 -0
  176. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-dark@2.png +0 -0
  177. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-header-dark.png +0 -0
  178. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-header-dark@2.png +0 -0
  179. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-header.png +0 -0
  180. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-header@2.png +0 -0
  181. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-hover-dark.png +0 -0
  182. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-hover-dark@2.png +0 -0
  183. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-hover-header-dark.png +0 -0
  184. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-hover-header-dark@2.png +0 -0
  185. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-hover-header.png +0 -0
  186. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-hover-header@2.png +0 -0
  187. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-hover-selected.png +0 -0
  188. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-hover-selected@2.png +0 -0
  189. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-hover.png +0 -0
  190. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-hover@2.png +0 -0
  191. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-insensitive-dark.png +0 -0
  192. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-insensitive-dark@2.png +0 -0
  193. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-insensitive-header-dark.png +0 -0
  194. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-insensitive-header-dark@2.png +0 -0
  195. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-insensitive-header.png +0 -0
  196. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-insensitive-header@2.png +0 -0
  197. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-insensitive-selected.png +0 -0
  198. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-insensitive-selected@2.png +0 -0
  199. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-insensitive.png +0 -0
  200. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-insensitive@2.png +0 -0
  201. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-selected.png +0 -0
  202. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active-selected@2.png +0 -0
  203. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active.png +0 -0
  204. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-active@2.png +0 -0
  205. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-dark.png +0 -0
  206. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-dark@2.png +0 -0
  207. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-header-dark.png +0 -0
  208. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-header-dark@2.png +0 -0
  209. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-header.png +0 -0
  210. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-header@2.png +0 -0
  211. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-hover-dark.png +0 -0
  212. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-hover-dark@2.png +0 -0
  213. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-hover-header-dark.png +0 -0
  214. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-hover-header-dark@2.png +0 -0
  215. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-hover-header.png +0 -0
  216. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-hover-header@2.png +0 -0
  217. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-hover-selected.png +0 -0
  218. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-hover-selected@2.png +0 -0
  219. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-hover.png +0 -0
  220. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-hover@2.png +0 -0
  221. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-insensitive-dark.png +0 -0
  222. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-insensitive-dark@2.png +0 -0
  223. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-insensitive-header-dark.png +0 -0
  224. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-insensitive-header-dark@2.png +0 -0
  225. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-insensitive-header.png +0 -0
  226. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-insensitive-header@2.png +0 -0
  227. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-insensitive-selected.png +0 -0
  228. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-insensitive-selected@2.png +0 -0
  229. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-insensitive.png +0 -0
  230. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-insensitive@2.png +0 -0
  231. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-selected.png +0 -0
  232. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch-selected@2.png +0 -0
  233. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch.png +0 -0
  234. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/switch@2.png +0 -0
  235. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-close-active-dark.png +0 -0
  236. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-close-active-dark@2.png +0 -0
  237. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-close-active.png +0 -0
  238. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-close-active@2.png +0 -0
  239. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-close-backdrop-dark.png +0 -0
  240. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-close-backdrop-dark@2.png +0 -0
  241. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-close-backdrop.png +0 -0
  242. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-close-backdrop@2.png +0 -0
  243. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-close-dark.png +0 -0
  244. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-close-dark@2.png +0 -0
  245. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-close-hover-dark.png +0 -0
  246. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-close-hover-dark@2.png +0 -0
  247. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-close-hover.png +0 -0
  248. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-close-hover@2.png +0 -0
  249. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-close.png +0 -0
  250. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-close@2.png +0 -0
  251. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-maximize-active-dark.png +0 -0
  252. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-maximize-active-dark@2.png +0 -0
  253. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-maximize-active.png +0 -0
  254. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-maximize-active@2.png +0 -0
  255. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-maximize-backdrop-dark.png +0 -0
  256. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-maximize-backdrop-dark@2.png +0 -0
  257. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-maximize-backdrop.png +0 -0
  258. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-maximize-backdrop@2.png +0 -0
  259. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-maximize-dark.png +0 -0
  260. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-maximize-dark@2.png +0 -0
  261. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-maximize-hover-dark.png +0 -0
  262. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-maximize-hover-dark@2.png +0 -0
  263. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-maximize-hover.png +0 -0
  264. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-maximize-hover@2.png +0 -0
  265. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-maximize.png +0 -0
  266. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-maximize@2.png +0 -0
  267. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-minimize-active-dark.png +0 -0
  268. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-minimize-active-dark@2.png +0 -0
  269. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-minimize-active.png +0 -0
  270. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-minimize-active@2.png +0 -0
  271. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-minimize-backdrop-dark.png +0 -0
  272. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-minimize-backdrop-dark@2.png +0 -0
  273. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-minimize-backdrop.png +0 -0
  274. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-minimize-backdrop@2.png +0 -0
  275. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-minimize-dark.png +0 -0
  276. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-minimize-dark@2.png +0 -0
  277. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-minimize-hover-dark.png +0 -0
  278. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-minimize-hover-dark@2.png +0 -0
  279. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-minimize-hover.png +0 -0
  280. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-minimize-hover@2.png +0 -0
  281. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-minimize.png +0 -0
  282. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-minimize@2.png +0 -0
  283. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-restore-active-dark.png +0 -0
  284. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-restore-active-dark@2.png +0 -0
  285. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-restore-active.png +0 -0
  286. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-restore-active@2.png +0 -0
  287. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-restore-backdrop-dark.png +0 -0
  288. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-restore-backdrop-dark@2.png +0 -0
  289. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-restore-backdrop.png +0 -0
  290. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-restore-backdrop@2.png +0 -0
  291. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-restore-dark.png +0 -0
  292. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-restore-dark@2.png +0 -0
  293. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-restore-hover-dark.png +0 -0
  294. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-restore-hover-dark@2.png +0 -0
  295. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-restore-hover.png +0 -0
  296. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-restore-hover@2.png +0 -0
  297. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-restore.png +0 -0
  298. data/bin/assets/Matcha-dark-aliz/gtk-3.0/assets/titlebutton-restore@2.png +0 -0
  299. data/bin/assets/Matcha-dark-aliz/gtk-3.0/gtk-dark.css +10090 -0
  300. data/bin/assets/Matcha-dark-aliz/gtk-3.0/gtk.css +10100 -0
  301. data/bin/assets/Matcha-dark-aliz/gtk-3.0/thumbnail.png +0 -0
  302. data/bin/assets/Matcha-dark-aliz/index.theme +12 -0
  303. data/bin/assets/didacticiel/1.jpg +0 -0
  304. data/bin/assets/didacticiel/2.jpg +0 -0
  305. data/bin/assets/didacticiel/3.jpg +0 -0
  306. data/bin/assets/didacticiel/4.jpg +0 -0
  307. data/bin/assets/didacticiel/5.jpg +0 -0
  308. data/bin/assets/didacticiel/6.jpg +0 -0
  309. data/bin/assets/didacticiel/7.jpg +0 -0
  310. data/bin/assets/didacticiel/8.jpg +0 -0
  311. data/bin/assets/map.png +0 -0
  312. data/bin/db/Difficulte.rb +9 -0
  313. data/bin/db/GestionBase.rb +334 -0
  314. data/bin/db/GrilleDb.rb +15 -0
  315. data/bin/db/Joue.rb +10 -0
  316. data/bin/db/Joueur.rb +9 -0
  317. data/bin/db/Migration.rb +70 -0
  318. data/bin/db/Mode.rb +9 -0
  319. data/bin/db/PhrasesAventure.rb +4 -0
  320. data/bin/db/TestBase.rb +144 -0
  321. data/bin/db/base.sqlite +0 -0
  322. data/bin/hashi +5 -0
  323. data/bin/src/Action.rb +46 -0
  324. data/bin/src/Aides.rb +41 -0
  325. data/bin/src/Case.rb +410 -0
  326. data/bin/src/Grille.rb +914 -0
  327. data/bin/src/Grilles/grilles_site.txt +30 -0
  328. data/bin/src/Grilles/grilles_site_difficile.txt +90 -0
  329. data/bin/src/Grilles/grilles_site_facile.txt +90 -0
  330. data/bin/src/Grilles/grilles_site_moyen.txt +90 -0
  331. data/bin/src/Grilles/grilles_site_ser.txt +0 -0
  332. data/bin/src/Grilles/grilles_site_ser_difficile.txt +90 -0
  333. data/bin/src/Grilles/grilles_site_ser_facile.txt +90 -0
  334. data/bin/src/Grilles/grilles_site_ser_moyen.txt +90 -0
  335. data/bin/src/Hashi.rb +214 -0
  336. data/bin/src/Lien.rb +57 -0
  337. data/bin/src/Pile.rb +41 -0
  338. data/bin/src/Rakefile.rb +6 -0
  339. data/bin/src/SerGrille.rb +430 -0
  340. data/bin/src/Test.rb +24 -0
  341. data/bin/src/Test2.rb +135 -0
  342. data/bin/src/Utilitaire.rb +12 -0
  343. data/bin/src/testSerGrille.rb +21 -0
  344. data/bin/src/ui/AfficheurGrille.rb +385 -0
  345. data/bin/src/ui/AfficheurJeu.rb +209 -0
  346. data/bin/src/ui/AfficheurSelection.rb +38 -0
  347. data/bin/src/ui/Afrique.rb +38 -0
  348. data/bin/src/ui/AmeriqueNord.rb +38 -0
  349. data/bin/src/ui/AmeriqueSud.rb +38 -0
  350. data/bin/src/ui/Antarctique.rb +32 -0
  351. data/bin/src/ui/Asie.rb +38 -0
  352. data/bin/src/ui/Aventure.rb +132 -0
  353. data/bin/src/ui/Carte.rb +282 -0
  354. data/bin/src/ui/ChargementAventure.rb +61 -0
  355. data/bin/src/ui/Classement.rb +42 -0
  356. data/bin/src/ui/Connexion.rb +60 -0
  357. data/bin/src/ui/Didacticiel.rb +169 -0
  358. data/bin/src/ui/Etiquette.rb +24 -0
  359. data/bin/src/ui/Europe.rb +38 -0
  360. data/bin/src/ui/ListeClassement.rb +44 -0
  361. data/bin/src/ui/Menu.rb +74 -0
  362. data/bin/src/ui/Monde.rb +167 -0
  363. data/bin/src/ui/Oceanie.rb +38 -0
  364. data/bin/src/ui/SelecteurGrille.rb +58 -0
  365. data/bin/src/ui/SelectionDifficulte.rb +38 -0
  366. data/bin/src/ui/SelectionUtilisateur.rb +46 -0
  367. data/bin/src/ui/Timer.rb +29 -0
  368. metadata +479 -0
data/bin/src/Grille.rb ADDED
@@ -0,0 +1,914 @@
1
+ require_relative "Case"
2
+ require_relative "Aides"
3
+ require_relative "Utilitaire"
4
+ require_relative "SerGrille"
5
+ require_relative "Pile"
6
+ require_relative "Action"
7
+
8
+ #Classe représentant une Grille
9
+ # Une grille peut :
10
+ # avoir une table des cases : méthode contientCaseAvecEtiquette
11
+ # avoir une table des liens entre les cases, et supprimer les liens
12
+ # commencer les hypotheses des liens, les valider ou annuler
13
+
14
+ class Grille
15
+
16
+ # @tabCase => tableau contenant les cases (objet Case)
17
+ # @tabLien => tableau contenant les liens (objet Lien)
18
+ # @hypothese => boolean correspondnant a l'état du jeu, en mode hypothese ou non
19
+ # @grilleRes => object Grille contenant la grille finie et correcte
20
+ # @hauteur => entier, hauteur de la grille
21
+ # @largeur => entier, largeur de la grille
22
+ # @timer => entier, temps déja passé sur la grille en seconde
23
+ # @grilleFini => boolean correspondant a l'état de la grille, si elle est fini ou non (et correcte)
24
+ # @nbAides => entier, représentant le nombre d'aides déja utilisées
25
+
26
+
27
+ # Méthodes d'accès en lecture/écriture de @tabCase
28
+ attr_accessor :tabCase
29
+ # Méthodes d'accès en lecture/écriture de @tabLien
30
+ attr_accessor :tabLien
31
+ # Méthodes d'accès en lecture/écriture de @hypothese
32
+ attr_accessor :hypothese
33
+
34
+ # Méthodes d'accès en lecture/écriture de @grilleRes
35
+ attr_accessor :grilleRes
36
+
37
+ # Méthode d'accès en lecture de @hauteur
38
+ attr_reader :hauteur
39
+
40
+ # Méthode d'accès en lecture de @largeur
41
+ attr_reader :largeur
42
+
43
+ # Méthodes d'accès en lecture/écriture de @timer
44
+ attr_accessor :timer
45
+
46
+ # Méthodes d'accès en lecture/écriture de @grilleFini
47
+ attr_accessor :grilleFinie
48
+
49
+ # Méthodes d'accès en lecture/écriture de @nbAides
50
+ attr_accessor :nbAides
51
+
52
+ # Rend la méthode new privée
53
+ private_class_method :new
54
+
55
+ # Initialisation de la grille
56
+ #
57
+ # === Paramètres
58
+ #
59
+ # * +tab+ => la table des cases
60
+ # * +hauteur+ => le nombre maximal des lignes de la grille
61
+ # * +largeur+ => le nombre maximal des colonnes de la grille
62
+ #
63
+ def initialize(tab,hauteur,largeur,grilleRes)
64
+ @hypothese=false
65
+ @tabLien=Array.new()
66
+ #@tabCase=Array.new() # Inutile avec la ligne d'en dessous
67
+ @tabCase=tab
68
+ @hauteur=hauteur
69
+ @largeur=largeur
70
+ @grilleFinie=false
71
+ @grilleRes=grilleRes
72
+ @pile=Pile.creer()
73
+ @pileRedo=Pile.creer()
74
+ @timer ||= 0
75
+ @nbAides ||= 0
76
+
77
+
78
+ for i in 0..@tabCase.length-1 do
79
+ for j in 0..@tabCase.length-1 do
80
+ if(i !=j)
81
+ #on récupère le voisin le plus proche dans la direction nord
82
+ if((@tabCase[i].tabVoisins[0]==false && @tabCase[i].ligne>@tabCase[j].ligne && @tabCase[i].colonne==@tabCase[j].colonne) || ( @tabCase[i].ligne>@tabCase[j].ligne && @tabCase[i].colonne==@tabCase[j].colonne && @tabCase[j].ligne>@tabCase[i].tabVoisins[0].ligne ) )
83
+ @tabCase[i].tabVoisins[0]=@tabCase[j]
84
+ @tabCase[i].tabTriangle[0]=true
85
+ end
86
+ #on récupère le voisin le plus proche dans la direction Sud
87
+ if((@tabCase[i].tabVoisins[2]==false && @tabCase[i].ligne<@tabCase[j].ligne && @tabCase[i].colonne==@tabCase[j].colonne) || ( @tabCase[i].ligne<@tabCase[j].ligne && @tabCase[i].colonne==@tabCase[j].colonne && @tabCase[j].ligne<@tabCase[i].tabVoisins[2].ligne ) )
88
+ @tabCase[i].tabVoisins[2]=@tabCase[j]
89
+ @tabCase[i].tabTriangle[2]=true
90
+ end
91
+ #on récupère le voisin le plus proche dans la direction ouest
92
+ if((@tabCase[i].tabVoisins[3]==false && @tabCase[i].colonne>@tabCase[j].colonne && @tabCase[i].ligne==@tabCase[j].ligne) || ( @tabCase[i].colonne>@tabCase[j].colonne && @tabCase[i].ligne==@tabCase[j].ligne && @tabCase[j].colonne>@tabCase[i].tabVoisins[3].colonne ) )
93
+ @tabCase[i].tabVoisins[3]=@tabCase[j]
94
+ @tabCase[i].tabTriangle[3]=true
95
+ end
96
+ #on récupère le voisin le plus proche dans la direction est
97
+ if((@tabCase[i].tabVoisins[1]==false && @tabCase[i].colonne<@tabCase[j].colonne && @tabCase[i].ligne==@tabCase[j].ligne) || ( @tabCase[i].colonne<@tabCase[j].colonne && @tabCase[i].ligne==@tabCase[j].ligne && @tabCase[j].colonne<@tabCase[i].tabVoisins[1].colonne ) )
98
+ @tabCase[i].tabVoisins[1]=@tabCase[j]
99
+ @tabCase[i].tabTriangle[1]=true
100
+ end
101
+ end
102
+ end
103
+ end
104
+
105
+ self.actuCroisement()
106
+
107
+ end
108
+
109
+ # Méthode de création d'une grille
110
+ #
111
+ # === Paramètres
112
+ #
113
+ # * +tab+ => la table des cases
114
+ # * +hauteur+ => le nombre maximal des lignes de la grille
115
+ # * +largeur+ => le nombre maximal des colonnes de la grille
116
+ #
117
+ def Grille.creer(tab,hauteur,largeur,grilleRes)
118
+ new(tab,hauteur,largeur,grilleRes)
119
+ end
120
+
121
+ # Méthode d'affichage de la table des cases
122
+ #
123
+ def tabCaseAfficher()
124
+ for i in 0..@tabCase.length-1
125
+ puts(tabCase[i])
126
+ end
127
+ end
128
+
129
+ # Méthode qui trouve une case selon ses coordonnées
130
+ #
131
+ # === Paramètres
132
+ #
133
+ # * +ligne+ => la position dans la grille
134
+ # * +colonne+ => la position dans la grille
135
+ #
136
+ # === Retour
137
+ #
138
+ # Retourne la case sinon retourne faux
139
+ #
140
+ def caseIci(ligne, colonne)
141
+ @tabCase.each do |c|
142
+ if(c.ligne==ligne && c.colonne==colonne)
143
+ return c
144
+ end
145
+ end
146
+ return false
147
+ end
148
+
149
+ # Méthode de suppression des liens entres les cases
150
+ #
151
+ # === Paramètres
152
+ #
153
+ # * +l+ => le lien à supprimer
154
+ #
155
+ def supprimerLien(l)
156
+ i=Utilitaire.index(@tabLien,l)
157
+ x=Utilitaire.index(@tabCase,@tabLien[i].case1)
158
+ y=Utilitaire.index(@tabCase,@tabLien[i].case2)
159
+ #on peut remplacer par l.case1 et l.case2 au lieu des indices
160
+ @tabLien.delete_at(i)
161
+
162
+ self.actuCroisement()
163
+
164
+ end
165
+
166
+ # Méthode pour remplir la table des cases avec une valeur
167
+ #
168
+ # === Paramètres
169
+ #
170
+ # * +ligne+ => entier correspondant la ligne d'une case de la grille
171
+ # * +colonne+ => entier correspondant la colonne d'une case de la grille
172
+ #
173
+ # === Retour
174
+ #
175
+ # Retourne la valeur de la case, sinon retourne faux
176
+ #
177
+ def contientCaseAvecEtiquette(ligne,colonne)
178
+ for i in 0..@tabCase.length-1 do
179
+ if(@tabCase[i].ligne==ligne && @tabCase[i].colonne==colonne)
180
+ return @tabCase[i]
181
+ end
182
+ end
183
+ return false
184
+ end
185
+
186
+
187
+ # Méthode lors d'un clic sur un cercle/une case
188
+ #
189
+ # === Paramètres
190
+ #
191
+ # * +case1+ => la case du clic
192
+ # * +tabLien2+ => le tableau qui va contenir les liens à mettre en surbrillance
193
+ #
194
+ # === Retour
195
+ #rien
196
+ #
197
+ def clicCercle(case1,tabLien2)
198
+ for i in 0..3 do
199
+ if(case1.tabVoisins[i]!=false)
200
+ if(case1.nbLienEntreDeuxCases(@tabLien,i) != 0 )
201
+ c=0
202
+ #on push le ou les lien(s) si ils ne sont pas dans le tabLien2
203
+ @tabLien.each do |lien|
204
+ if((lien.case1.ligne == case1.ligne && lien.case1.colonne == case1.colonne) && (lien.case2.ligne == case1.tabVoisins[i].ligne && lien.case2.colonne == case1.tabVoisins[i].colonne ) )
205
+ if( Utilitaire.index(tabLien2,lien)==-1 )
206
+ tabLien2.push(lien)
207
+ c +=1
208
+ end
209
+ elsif ((lien.case2.ligne == case1.ligne && lien.case2.colonne == case1.colonne) && (lien.case1.ligne == case1.tabVoisins[i].ligne && lien.case1.colonne == case1.tabVoisins[i].colonne ))
210
+ if( Utilitaire.index(tabLien2,lien)==-1 )
211
+ tabLien2.push(lien)
212
+ c +=1
213
+ end
214
+ end
215
+
216
+ end
217
+
218
+ if(c!=0)
219
+ clicCercle(case1.tabVoisins[i],tabLien2)
220
+ end
221
+ end
222
+ end
223
+ end
224
+ return
225
+ end
226
+
227
+
228
+
229
+ # test si une archipelle n'est pas complète(c'est a dire qu'il reste au moins un triangle dans l'archipelle))
230
+ #
231
+ # === Paramètres
232
+ #
233
+ # * +case1+ => la case du clic
234
+ # * +tabCase2+ => le tableau qui va contenir les case deja test
235
+ #
236
+ # === Retour
237
+ # boolean sur le test
238
+ #
239
+ def ArchiNonComplete(case1,tabCase2)
240
+ if(case1.nbVoisinsDispo()==0)
241
+ if(tabCase2.include?(case1)==false)
242
+ tabCase2.push(case1)
243
+ end
244
+ for i in 0..3 do
245
+ if(case1.tabVoisins[i]!=false && case1.nbLienEntreDeuxCases(@tabLien,i) != 0 )
246
+ if(tabCase2.include?(case1.tabVoisins[i])==false)
247
+ if(ArchiNonComplete(case1.tabVoisins[i],tabCase2)==true)
248
+ return true
249
+ end
250
+ end
251
+
252
+ end
253
+ end
254
+ else
255
+ return true
256
+ end
257
+
258
+ return false
259
+ end
260
+
261
+
262
+
263
+
264
+ # Méthode appelée lors d'un clic sur le triangle d'un cercle/une case
265
+ #
266
+ # === Paramètres
267
+ #
268
+ # * +case1+ => la case du clic
269
+ # * +pos+ => entier correspondant la position du lien de deux cases
270
+ #
271
+ def clicTriangle(case1,pos)
272
+ l=case1.creerLien(pos,@hypothese,@tabLien)
273
+ @pile.empiler(Action.creer("ajout",l))
274
+ #@pile.afficherPile()
275
+ @pileRedo.vider()
276
+ self.actuCroisement()
277
+ end
278
+
279
+ # actualise les triangles de chaques cases pour empecher les croisements de liens et met à jours les autres triangles.
280
+ #
281
+ def actuCroisement()
282
+
283
+ @tabCase.each do |c|
284
+ if(c.etiquetteCase.to_i() > c.nbLienCase(@tabLien) )
285
+ for i in 0..3 do
286
+ if(c.tabVoisins[i]!=false)
287
+ c.tabTriangle[i]=true
288
+ else
289
+ c.tabTriangle[i]=false
290
+ end
291
+ end
292
+ end
293
+
294
+ for i in 0..3 do
295
+ if(c.tabTriangle[i]==true)
296
+ if(c.nbLienEntreDeuxCases(@tabLien,i)<=1 && c.etiquetteCase.to_i() > c.nbLienCase(@tabLien))
297
+ c.tabTriangle[i]=true
298
+ else
299
+ c.tabTriangle[i]=false
300
+ end
301
+ end
302
+ end
303
+
304
+
305
+ for i in 0..3 do
306
+ if(c.tabTriangle[i]==true)
307
+ if(c.lienPasseEntreDeuxCases(@tabLien,i)==false && c.etiquetteCase.to_i() > c.nbLienCase(@tabLien) && c.nbLienEntreDeuxCases(@tabLien,i)<=1)
308
+ c.tabTriangle[i]=true
309
+ else
310
+ c.tabTriangle[i]=false
311
+ end
312
+ end
313
+ end
314
+
315
+
316
+ end
317
+
318
+ @tabCase.each do |c|
319
+ for i in 0..3 do
320
+ if(c.tabVoisins[i]!=false && c.tabVoisins[i].tabTriangle[(i+2)%4]==false)
321
+ c.tabTriangle[i]=false
322
+ end
323
+ end
324
+
325
+ end
326
+
327
+
328
+ end
329
+
330
+
331
+ # Méthode appelée lors du clic sur un lien pour le supprimer
332
+ #
333
+ # === Paramètres
334
+ #
335
+ # * +l+ => le lien qui a été cliqué
336
+ #
337
+ def clicLien(l)
338
+ @pile.empiler(Action.creer("suppression",l))
339
+ self.supprimerLien(l)
340
+ @pileRedo.vider()
341
+ end
342
+
343
+ # Méthode pour commencer à faire une hypothèse
344
+ #
345
+ def commencerHypothese()
346
+ @pile.empiler(Action.creer("debutHypothese",nil))
347
+ @hypothese=true
348
+ end
349
+
350
+ # Méthode pour valider une hypothèse
351
+ #
352
+ def validerHypothese()
353
+ for i in 0..@tabLien.length-1 do
354
+ if(@tabLien[i].hypothese==true)
355
+ @tabLien[i].hypothese=false
356
+ end
357
+ end
358
+ @pile.empiler(Action.creer("hypotheseValidee",nil) )
359
+ @hypothese=false
360
+ end
361
+
362
+ # Méthode permettant de savoir si un lien est entre les même case qu'un autre (ATTENTION : retourne nil s'il est le seul)
363
+ #
364
+ # === Paramètres
365
+ #
366
+ # * +l+ => un lien
367
+ #
368
+ # === Retour
369
+ #
370
+ # Retourne le lien si c'est le même, sinon nil
371
+ #
372
+ def lienSimilaire(l)
373
+ @tabLien.each do |lien|
374
+ if(l!=lien && (lien.case1==l.case1 && lien.case2==l.case2) || (lien.case1==l.case2 && lien.case2==l.case1))
375
+ return lien
376
+ end
377
+ end
378
+ return nil
379
+ end
380
+
381
+
382
+ # Méthode permettant de savoir si un lien est présent dans un tableau de lien en comparent les coordonée des cases
383
+ #
384
+ # === Paramètres
385
+ #
386
+ # * +l+ => un lien
387
+ # * +tab+ => un tableau de ;lien
388
+ #
389
+ # === Retour
390
+ # un lien ou null
391
+ #
392
+ def leMemeLien(l,tab)
393
+ tab.each do |lien|
394
+ if((lien.case1.ligne==l.case1.ligne && lien.case1.colonne==l.case1.colonne && lien.case2.ligne==l.case2.ligne && lien.case2.colonne==l.case2.colonne) || (lien.case1.ligne==l.case2.ligne && lien.case1.colonne==l.case2.colonne && lien.case2.ligne==l.case1.ligne && lien.case2.colonne==l.case1.colonne))
395
+ return lien
396
+ end
397
+ end
398
+ return nil
399
+ end
400
+
401
+
402
+
403
+
404
+ # Méthode permettant de tester si la grille est terminée ou non
405
+ #
406
+ # === Retour
407
+ # boolean correspondant au test
408
+ #
409
+ def grilleFinie?()
410
+ if( self.nbErreurGrille()==0 && @tabLien.length==@grilleRes.tabLien.length )
411
+ @grilleFinie=true
412
+ return true
413
+ end
414
+
415
+ return false
416
+ end
417
+
418
+
419
+
420
+
421
+
422
+
423
+ # Méthode permettant de savoir le nb d'erreur sur la grille
424
+ #
425
+ # === Retour
426
+ # entier correspondant au nombre d'erreur
427
+ #
428
+ def nbErreurGrille()
429
+ nbErreur=0
430
+
431
+ tabRes=Marshal.load(Marshal.dump(@grilleRes.tabLien))
432
+
433
+ @tabLien.each do |lien|
434
+
435
+ l=leMemeLien(lien,tabRes)
436
+ if( l!=nil )
437
+ tabRes.delete(l)
438
+ else
439
+ nbErreur+=1
440
+ end
441
+
442
+ end
443
+
444
+ return nbErreur
445
+ end
446
+
447
+
448
+
449
+ # Méthode permettant de retourner au dernier etat correct de la grille
450
+ #
451
+ # === Retour
452
+ # entier correspondant au nombre d'erreur lors de l'appel de la methode
453
+ #
454
+ def verification()
455
+ val=nbErreurGrille()
456
+ while(self.nbErreurGrille()!=0 )
457
+ self.annuler()
458
+ end
459
+ @pileRedo.vider()
460
+ return val
461
+
462
+ end
463
+
464
+
465
+
466
+
467
+ # Méthode pour annuler une hypothèse
468
+ #
469
+ def annulerHypothese()
470
+
471
+ a = @pile.sommet()
472
+ while(a.action != "debutHypothese")
473
+ if(a.action == "ajout")
474
+ self.supprimerLien( a.lien )
475
+ end
476
+
477
+ if(a.action == "suppression")
478
+ a.lien.case1.creerLien(Utilitaire.index(a.lien.case1.tabVoisins,a.lien.case2),a.lien.hypothese,@tabLien)
479
+ self.actuCroisement()
480
+ end
481
+
482
+ @pile.depiler()
483
+ a = @pile.sommet()
484
+ end
485
+ @pile.depiler()
486
+
487
+ @tabLien.each do |l|
488
+ l.hypothese=false
489
+ end
490
+
491
+
492
+
493
+ @hypothese=false
494
+ end
495
+
496
+
497
+ # Méthode pour annuler une action (Undo)
498
+ #
499
+ def annuler()
500
+
501
+ if( !@pile.estVide() )
502
+ a = @pile.sommet()
503
+
504
+ @pileRedo.empiler(a) #quand on depile en Undo on doit empiler en Redo
505
+
506
+ if(a.action == "ajout")
507
+ @pile.depiler()
508
+ self.supprimerLien( a.lien )
509
+ end
510
+
511
+ if(a.action == "suppression")
512
+ @pile.depiler()
513
+ a.lien.case1.creerLien(Utilitaire.index(a.lien.case1.tabVoisins,a.lien.case2),a.lien.hypothese,@tabLien)
514
+ self.actuCroisement()
515
+ end
516
+
517
+ if(a.action == "hypotheseValidee")
518
+
519
+ @pile.depiler()
520
+ a = @pile.sommet()
521
+ @pileRedo.empiler(a)
522
+ while(a.action != "debutHypothese")
523
+ if(a.action == "ajout")
524
+ self.supprimerLien( a.lien )
525
+ end
526
+
527
+ if(a.action == "suppression")
528
+ a.lien.case1.creerLien(Utilitaire.index(a.lien.case1.tabVoisins,a.lien.case2),a.lien.hypothese,@tabLien)
529
+ self.actuCroisement()
530
+ end
531
+
532
+ @pile.depiler()
533
+ a = @pile.sommet()
534
+ @pileRedo.empiler(a)
535
+ end
536
+ @pile.depiler()
537
+ end
538
+
539
+ end
540
+
541
+ end
542
+
543
+
544
+ # Méthode pour refaire une action (Redo)
545
+ #
546
+ def refaire()
547
+
548
+
549
+ if( !@pileRedo.estVide() )
550
+ a = @pileRedo.sommet()
551
+ @pile.empiler(a) #quand on depile en Redo on doit empiler en Undo
552
+
553
+ if(a.action == "ajout")
554
+ @pileRedo.depiler()
555
+ a.lien.case1.creerLien(Utilitaire.index(a.lien.case1.tabVoisins,a.lien.case2),a.lien.hypothese,@tabLien)
556
+ self.actuCroisement()
557
+ end
558
+
559
+ if(a.action == "suppression")
560
+ @pileRedo.depiler()
561
+ self.supprimerLien( a.lien )
562
+ end
563
+
564
+ if(a.action == "hypotheseValidee")
565
+
566
+ @pileRedo.depiler()
567
+ a = @pileRedo.sommet()
568
+ @pile.empiler(a)
569
+ while(a.action != "debutHypothese")
570
+ if(a.action == "ajout")
571
+ a.lien.case1.creerLien(Utilitaire.index(a.lien.case1.tabVoisins,a.lien.case2),a.lien.hypothese,@tabLien)
572
+ self.actuCroisement()
573
+ end
574
+
575
+ if(a.action == "suppression")
576
+ self.supprimerLien( a.lien )
577
+ end
578
+
579
+ @pileRedo.depiler()
580
+ a = @pileRedo.sommet()
581
+ @pile.empiler(a)
582
+ end
583
+ @pileRedo.depiler()
584
+ end
585
+
586
+ end
587
+
588
+
589
+ end
590
+
591
+
592
+ # Méthode pour réinitialiser toute la grille et les actions (en gros nouveau départ)
593
+ #
594
+ def reinitialiser()
595
+ for i in 0..@tabLien.length-1 do
596
+ self.clicLien(@tabLien[i])
597
+ end
598
+ @pile.vider()
599
+ @pileRedo.vider()
600
+ end
601
+
602
+
603
+ #methode pour les aides
604
+ #
605
+ # === Retour
606
+ #
607
+ # Retourne un objet Aides
608
+ #
609
+ def obtenirAide()
610
+ aides1=Array.new() #aide qui utilise l'etiquette de la case et sa postion dans la grille
611
+ aides2=Array.new() #aide qui utilise l'etiquette de la case et sa liste de voisins
612
+ aides3=Array.new() #aide qui utilise l'etiquette de la case et sa liste de voisins ainsi que toute l'archipelle
613
+
614
+ niveau=1
615
+
616
+
617
+ #on génere les aides par rapport a la grille actuelle ici, on push toutes les aides possibles dans les tableaux correspondant à leurs difficultés
618
+
619
+ @tabCase.each do |c|
620
+ if( (c.etiquetteCase.to_i - c.nbLienCase(@tabLien))!=0 )
621
+
622
+
623
+ #=================NIVEAU 1==============#
624
+
625
+
626
+
627
+ if( c.nbVoisinsDispo()==1 && c.etiquetteCase.to_i>c.nbLienCase(@tabLien) )
628
+ aides1.push( Aides.creer(1,c,"Une case #{c.etiquetteCase} possède exactement un voisin; il est donc possible de créer tous les liens restants vers ce seul voisin."))
629
+ # "Si une case avec une etiquette de #{c.etiquetteCase} possède exactement un voisin et possède encore au moins un pont créable; il est possible de créer tous les ponts restants"))
630
+ end
631
+
632
+
633
+ if( (c.etiquetteCase.to_i - c.nbLienCase(@tabLien)) == c.nbLienCasePossible(@tabLien) )
634
+ aides1.push( Aides.creer(1,c,"Une case #{c.etiquetteCase} possède autant de ponts réalisables que de directions possibles, que ce soit en simple pont ou en double ponts; il est donc possible de créer tous les liens restants vers tous ses voisins."))
635
+ #"Si une case avec une etiquette de #{c.etiquetteCase} possède autant de ponts créables que (l'étiquette - ponts); il est possible de créer tous les ponts restants"))
636
+ end
637
+
638
+
639
+
640
+
641
+
642
+ for i in 0..1 do
643
+ if( c.etiquetteCase.to_i - c.nbLienCase(@tabLien) == 3-i && c.nbVoisinsDispo()==2 && c.nbCasePasDejaRelie(@tabLien)==2-i )
644
+ aides1.push( Aides.creer(1,c,"Une case n’a plus que #{c.etiquetteCase.to_i - c.nbLienCase(@tabLien)} ponts à créer et ne possède plus que #{c.nbVoisinsDispo()} voisins; il est donc possible de créer au moins un lien vers chaque voisins."))
645
+ #"Si une case possède une valeur de #{c.etiquetteCase.to_i - c.nbLienCase(@tabLien)} correspondant à son etiquette moins le nombre de ponts déja présent sur cette case et #{c.nbCasePasDejaRelie(@tabLien)} voisins pas encore relié, il est possible de créer au moins un pont vers chacun de ces voisins ") )
646
+ end
647
+ end
648
+
649
+ for i in 0..2 do
650
+ if( c.etiquetteCase.to_i - c.nbLienCase(@tabLien) == 5-i && c.nbVoisinsDispo()==3 && c.nbCasePasDejaRelie(@tabLien)==3-i )
651
+ aides1.push( Aides.creer(1,c,"Une case n’a plus que #{c.etiquetteCase.to_i - c.nbLienCase(@tabLien)} ponts à créer et ne possède plus que #{c.nbVoisinsDispo()} voisins; il est donc possible de créer au moins un lien vers chaque voisins."))
652
+ #"Si une case possède une valeur de #{c.etiquetteCase.to_i - c.nbLienCase(@tabLien)} correspondant à son etiquette moins le nombre de ponts déja présent sur cette case et #{c.nbCasePasDejaRelie(@tabLien)} voisins pas encore relié, il est possible de créer au moins un pont vers chacun de ces voisins ") )
653
+ end
654
+ end
655
+
656
+ for i in 0..3 do
657
+ if( c.etiquetteCase.to_i - c.nbLienCase(@tabLien) == 7-i && c.nbVoisinsDispo()==4 && c.nbCasePasDejaRelie(@tabLien)==4-i )
658
+ aides1.push( Aides.creer(1,c,"Une case n’a plus que #{c.etiquetteCase.to_i - c.nbLienCase(@tabLien)} ponts à créer; il est donc possible de créer au moins un lien vers chaque voisins."))
659
+ #"Si une case possède une valeur de #{c.etiquetteCase.to_i - c.nbLienCase(@tabLien)} correspondant à son etiquette moins le nombre de ponts déja présent sur cette case et #{c.nbCasePasDejaRelie(@tabLien)} voisins pas encore relié, il est possible de créer au moins un pont vers chacun de ces voisins ") )
660
+ end
661
+ end
662
+
663
+
664
+
665
+ #=================NIVEAU 2==============#
666
+
667
+ if(aides1.length==0)
668
+
669
+
670
+ if( (c.etiquetteCase.to_i - c.nbLienCase(@tabLien)) == c.nbLienCasePossible(@tabLien)-1 && (c.nbCasePasDejaRelie(@tabLien)==2 || c.nbCasePasDejaRelie(@tabLien)==3 || c.nbCasePasDejaRelie(@tabLien)==4 ) && c.nbVoisinsDispoPasRelieEtiRestanteDe(1,@tabLien)==1 )
671
+ aides2.push( Aides.creer(2,c,"Une case n’a plus que #{(c.etiquetteCase.to_i - c.nbLienCase(@tabLien))} ponts à créer et ne possède plus que #{c.nbCasePasDejaRelie(@tabLien)} voisins pas encore relié dont un au moins avec 1 pont restant à créer; il est donc possible de créer un pont vers chaque voisin sauf vers ce dernier."))
672
+ end
673
+
674
+
675
+
676
+
677
+ if( (c.etiquetteCase.to_i - c.nbLienCase(@tabLien)) ==4 && c.nbVoisinsDispo()==3 && c.nbVoisinsDispoEtiDe(2)>=2 && c.nbCasePasDejaRelie(@tabLien)==3 )
678
+ aides2.push( Aides.creer(2,c,"Une case n’a plus que 4 ponts à créer et ne possède plus que trois voisins dont deux au moins sont des cases 2; il est donc possible de créer un pont vers le troisième voisin pour ne pas créer d’archipel isolé."))
679
+
680
+ #"Si une case possède une valeur de 4 correspondant à son etiquette moins le nombre de ponts vers des directions déja completes et possède 3 voisins dont deux avec des etiquettes de 2, il est possible de créer un pont vers le troisieme voisin ") )
681
+ end
682
+
683
+ for i in 0..1 do
684
+ if( (c.etiquetteCase.to_i - c.nbLienCase(@tabLien)) ==3-i && c.nbVoisinsDispo()==3 && c.nbVoisinsDispoEtiDe(2)>=2 && c.nbCasePasDejaRelie(@tabLien)==2-i && !c.lienDifDeFois(2,2,@tabLien) )
685
+ aides2.push( Aides.creer(2,c,"Une case n’a plus que 4 ponts à créer et ne possède plus que trois voisins dont deux au moins sont des cases 2; il est donc possible de créer un pont vers le troisième voisin pour ne pas créer d’archipel isolé."))
686
+ #"Si une case possède une valeur de 4 correspondant à son etiquette moins le nombre de ponts vers des directions déja completes et possède 3 voisins dont deux avec des etiquettes de 2, il est possible de créer un pont vers le troisieme voisin ") )
687
+ end
688
+ end
689
+
690
+
691
+
692
+
693
+
694
+ if( c.etiquetteCase.to_i==2 && c.nbVoisinsDispo()==2 && c.nbVoisinsDispoEtiDe(2)==2 && c.nbLienCase(@tabLien)==0)
695
+ aides2.push( Aides.creer(2,c,"Une case 2 possède exactement deux voisins qui sont tous les deux des cases 2; il est donc possible de créer un pont vers chaque voisin."))
696
+
697
+ #Si une case avec une etiquette de 2 possède 2 voisins qui sont deux case avec des etiquettes de 2, il est possible de créer un pont vers chaque voisin ") )
698
+ end
699
+
700
+
701
+
702
+ if( c.etiquetteCase.to_i==2 && c.nbVoisinsDispo()==2 && c.nbVoisinsDispoEtiDe(2)==1 && c.nbLienCase(@tabLien)==0)
703
+ aides2.push( Aides.creer(2,c,"Une case 2 possède exactement deux voisins dont un est une case 2 et l’autre une case portant une valeur plus élevée; il est donc possible de créer un pont vers la case dont la valeur est la plus élevée."))
704
+
705
+ #"Si une case avec une etiquette de 2 et 0 lien possède 2 voisins dont un seul avec une etiquette de 2, il est possible de créer un pont vers l'autre voisin ") )
706
+ end
707
+
708
+
709
+ if( c.etiquetteCase.to_i==2 && c.nbVoisinsDispo()==2 && c.nbVoisinsDispoEtiDe(1)==1 && c.nbLienCase(@tabLien)==0)
710
+ aides2.push( Aides.creer(2,c,"Une case 2 possède exactement deux voisins dont l’un est une case 1; il est donc possible de créer un pont vers l’autre voisin."))
711
+ #"Si une case avec une etiquette de 2 possède 2 voisins dont un avec une etiquette de 1, il est possible de créer un pont vers l'autre voisins ") )
712
+ end
713
+
714
+
715
+
716
+
717
+
718
+ #=================NIVEAU 3==============#
719
+
720
+
721
+ if(aides2.length==0)
722
+
723
+ if( self.testArchipel1(c) )
724
+ aides3.push( Aides.creer(3,c,"Lors de la création d’un pont sur une case, un archipel peut être formé, ce qui bloquerait le jeu; il est donc possible de déterminer où créer un pont pour ne pas arriver à cette situation."))
725
+ #" Si lors de la création d'un pont la suite du jeu est bloqué car une île complette est formé(suite de case sans triangle restant relié par des ponts) , il est possible de déterminer ou créer un pont ") )
726
+ end
727
+
728
+
729
+ if( self.testArchipel2(c) )
730
+ aides3.push( Aides.creer(3,c,"Lors de la création de 2 ponts sur une case comportant 2 voisins et lui restant 2 ponts à construire, un archipel peut être formé, ce qui bloquerait le jeu; il est donc possible de déterminer où créer un pont pour ne pas arriver à cette situation."))
731
+
732
+ # Si lors de la création de deux ponts sur une case avec 2 voisins et 2 ponts restant max a construire la suite du jeu est bloqué car une île complette est formé(suite de case sans triangle restant relié par des ponts) , il est possible de déterminer ou créer au moins un pont") )
733
+ end
734
+
735
+ if( self.testArchipel3(c) )
736
+ aides3.push( Aides.creer(3,c,"Lors de la création de 4 ponts sur une case comportant 3 voisins et lui restant quatre ponts à construire, un archipel peut être formé, ce qui bloquerait le jeu; il est donc possible de déterminer où créer au moins un pont pour ne pas arriver à cette situation."))
737
+
738
+ # Si lors de la création de quatre ponts sur une case avec 3 voisins et 4 ponts restant max a construire la suite du jeu est bloqué car une ile complette est formé(suite de case sans triangle restant relié par des ponts) , il est possible de déterminer ou créer au moins un pont") )
739
+ end
740
+
741
+ end
742
+
743
+ end
744
+
745
+
746
+ end
747
+
748
+ end
749
+
750
+
751
+ #on retourne une aides en fonction du niveau
752
+
753
+ if(niveau==1 && aides1.length==0)
754
+ niveau+=1
755
+ end
756
+ if(niveau==2 && aides2.length==0)
757
+ niveau+=1
758
+ end
759
+ if(niveau==3 && aides3.length==0)
760
+ return Aides.creer(1,@tabCase[0],"Aucune aide disponible pour le moment, il est conseillé de faire une verification car les aides s'adaptent à votre grille actuelle.")
761
+ end
762
+
763
+ case(niveau)
764
+ when 1
765
+ return aides1[rand(0..(aides1.length-1) )]
766
+ when 2
767
+ return aides2[rand(0..(aides2.length-1) )]
768
+ when 3
769
+ return aides3[rand(0..(aides3.length-1) )]
770
+ end
771
+ end
772
+
773
+
774
+
775
+
776
+
777
+
778
+ # test si une seule solution est possible sur une case dans le cadre de la creation de liens pour eviter les archipelles completes avec creation d'un unique lien
779
+ #
780
+ # === Parametres
781
+ #
782
+ # * + case + = > la case pour le test
783
+ #
784
+ # === Retour
785
+ #
786
+ # boolean sur le test
787
+ #
788
+ def testArchipel1(case1)
789
+ compteur=0
790
+
791
+
792
+ if(case1.nbLienCase(@tabLien)==case1.etiquetteCase.to_i-1)
793
+
794
+ for i in 0..3 do
795
+ if(case1.tabTriangle[i]==true)
796
+ lien=case1.creerLien(i,false,tabLien)
797
+ self.actuCroisement()
798
+ if( ArchiNonComplete(case1,Array.new()) )
799
+ compteur+=1
800
+ end
801
+ supprimerLien(lien)
802
+ end
803
+ end
804
+
805
+ end
806
+
807
+ if(compteur==1)
808
+ return true
809
+ end
810
+ return false
811
+ end
812
+
813
+
814
+ # test si une seule solution est possible sur une case dans le cadre de la creation de liens pour eviter les archipelles completes avec creation de deux liens
815
+ #
816
+ # === Parametres
817
+ #
818
+ # * + case + = > la case pour le test
819
+ #
820
+ # === Retour
821
+ #
822
+ # boolean sur le test
823
+ #
824
+ def testArchipel2(case1)
825
+
826
+ if(case1.nbLienCase(@tabLien)==case1.etiquetteCase.to_i-2 && case1.nbVoisinsDispo()==2 && case1.nbCasePasDejaRelie(@tabLien)==2 && case1.nbVoisinsDispoEtiRestanteDe(1,@tabLien)==0 )
827
+ compteur=0
828
+ for i in 0..3 do
829
+ if(case1.tabTriangle[i]==true)
830
+
831
+ lien=case1.creerLien(i,false,tabLien)
832
+ lien2=case1.creerLien(i,false,tabLien)
833
+
834
+ self.actuCroisement()
835
+ if( ArchiNonComplete(case1,Array.new()) )
836
+ compteur+=1
837
+ end
838
+
839
+ supprimerLien(lien)
840
+ supprimerLien(lien2)
841
+
842
+
843
+ end
844
+ end
845
+
846
+ if(compteur==0 || compteur==1)
847
+ return true
848
+ end
849
+
850
+ end
851
+
852
+ return false
853
+ end
854
+
855
+
856
+ # test si une seule solution est possible sur une case dans le cadre de la création de liens pour eviter les archipelles complètes avec création de deux liens dans plusieurs directions
857
+ #
858
+ # === Paramètres
859
+ #
860
+ # * + case + = > la case pour le test
861
+ #
862
+ # === Retour
863
+ #
864
+ # boolean sur le test
865
+ #
866
+ def testArchipel3(case1)
867
+
868
+ if(case1.nbLienCase(@tabLien)==case1.etiquetteCase.to_i-4 && case1.nbVoisinsDispo()==3 && case1.nbCasePasDejaRelie(@tabLien)==3 && case1.nbVoisinsDispoEtiRestanteDe(1,@tabLien)==0 )
869
+ compteur=0
870
+ for i in 0..3 do
871
+ for j in 0..3 do
872
+
873
+ if(case1.tabTriangle[i]==true && case1.tabTriangle[j]==true && i!=j)
874
+ lien=case1.creerLien(i,false,tabLien)
875
+ lien2=case1.creerLien(i,false,tabLien)
876
+ lien3=case1.creerLien(j,false,tabLien)
877
+ lien4=case1.creerLien(j,false,tabLien)
878
+
879
+
880
+ self.actuCroisement()
881
+ if( !ArchiNonComplete(case1,Array.new()) )
882
+ compteur+=1
883
+ end
884
+
885
+ supprimerLien(lien)
886
+ supprimerLien(lien2)
887
+ supprimerLien(lien3)
888
+ supprimerLien(lien4)
889
+
890
+
891
+ end
892
+
893
+ end
894
+ end
895
+
896
+ if(compteur>=1)
897
+ return true
898
+ end
899
+
900
+ end
901
+
902
+ return false
903
+ end
904
+
905
+
906
+
907
+
908
+
909
+
910
+
911
+
912
+
913
+
914
+ end