bioshogi 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (820) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.ruby-version +3 -0
  4. data/.travis.yml +14 -0
  5. data/Brewfile +2 -0
  6. data/Gemfile +2 -0
  7. data/Gemfile.lock +135 -0
  8. data/LICENSE +661 -0
  9. data/NEW_README.md +27 -0
  10. data/README.org +711 -0
  11. data/Rakefile +3 -0
  12. data/bin/bioshogi +3 -0
  13. data/bioshogi.gemspec +44 -0
  14. data/bioshogi.png +0 -0
  15. data/credit.org +6 -0
  16. data/lib/bioshogi/ai/brain.rb +202 -0
  17. data/lib/bioshogi/ai/diver/base.rb +114 -0
  18. data/lib/bioshogi/ai/diver/nega_alpha_diver.rb +122 -0
  19. data/lib/bioshogi/ai/diver/nega_alpha_mate_diver.rb +212 -0
  20. data/lib/bioshogi/ai/diver/nega_max_diver.rb +58 -0
  21. data/lib/bioshogi/ai/diver/nega_scout_diver.rb +120 -0
  22. data/lib/bioshogi/ai/evaluator/attack_weight_table.rb +52 -0
  23. data/lib/bioshogi/ai/evaluator/base.rb +40 -0
  24. data/lib/bioshogi/ai/evaluator/level0.rb +25 -0
  25. data/lib/bioshogi/ai/evaluator/level1.rb +26 -0
  26. data/lib/bioshogi/ai/evaluator/level2.rb +31 -0
  27. data/lib/bioshogi/ai/evaluator/level3.rb +121 -0
  28. data/lib/bioshogi/ai/evaluator/level4.rb +43 -0
  29. data/lib/bioshogi/ai/evaluator/opening_basic_table.rb +108 -0
  30. data/lib/bioshogi/ai/player_brain_mod.rb +142 -0
  31. data/lib/bioshogi/ai.rb +5 -0
  32. data/lib/bioshogi/application_memory_record.rb +28 -0
  33. data/lib/bioshogi/assertion.rb +20 -0
  34. data/lib/bioshogi/assets/audios/any.band/Alternatives/000/DisplayState.plist +0 -0
  35. data/lib/bioshogi/assets/audios/any.band/Alternatives/000/DisplayStateArchive +0 -0
  36. data/lib/bioshogi/assets/audios/any.band/Alternatives/000/MetaData.plist +0 -0
  37. data/lib/bioshogi/assets/audios/any.band/Alternatives/000/ProjectData +0 -0
  38. data/lib/bioshogi/assets/audios/any.band/Alternatives/000/WindowImage.jpg +0 -0
  39. data/lib/bioshogi/assets/audios/any.band/Media/Audio Files/Strategy.caf +0 -0
  40. data/lib/bioshogi/assets/audios/any.band/Resources/ProjectInformation.plist +0 -0
  41. data/lib/bioshogi/assets/audios/any.band/projectData +3183 -0
  42. data/lib/bioshogi/assets/audios/blank.m4a +0 -0
  43. data/lib/bioshogi/assets/audios/blank.wav +0 -0
  44. data/lib/bioshogi/assets/audios/blank1.m4a +0 -0
  45. data/lib/bioshogi/assets/audios/blank2.m4a +0 -0
  46. data/lib/bioshogi/assets/audios/blank3.m4a +0 -0
  47. data/lib/bioshogi/assets/audios/breakbeat_long.band/Alternatives/000/DisplayState.plist +0 -0
  48. data/lib/bioshogi/assets/audios/breakbeat_long.band/Alternatives/000/DisplayStateArchive +0 -0
  49. data/lib/bioshogi/assets/audios/breakbeat_long.band/Alternatives/000/MetaData.plist +0 -0
  50. data/lib/bioshogi/assets/audios/breakbeat_long.band/Alternatives/000/ProjectData +0 -0
  51. data/lib/bioshogi/assets/audios/breakbeat_long.band/Alternatives/000/WindowImage.jpg +0 -0
  52. data/lib/bioshogi/assets/audios/breakbeat_long.band/Resources/ProjectInformation.plist +0 -0
  53. data/lib/bioshogi/assets/audios/breakbeat_long.band/projectData +3183 -0
  54. data/lib/bioshogi/assets/audios/breakbeat_long.m4a +0 -0
  55. data/lib/bioshogi/assets/audios/breakbeat_long_old.m4a +0 -0
  56. data/lib/bioshogi/assets/audios/breakbeat_long_strip.band/Alternatives/000/DisplayState.plist +0 -0
  57. data/lib/bioshogi/assets/audios/breakbeat_long_strip.band/Alternatives/000/DisplayStateArchive +0 -0
  58. data/lib/bioshogi/assets/audios/breakbeat_long_strip.band/Alternatives/000/MetaData.plist +0 -0
  59. data/lib/bioshogi/assets/audios/breakbeat_long_strip.band/Alternatives/000/ProjectData +0 -0
  60. data/lib/bioshogi/assets/audios/breakbeat_long_strip.band/Alternatives/000/WindowImage.jpg +0 -0
  61. data/lib/bioshogi/assets/audios/breakbeat_long_strip.band/Media/Audio Files/Strategy.caf +0 -0
  62. data/lib/bioshogi/assets/audios/breakbeat_long_strip.band/Resources/ProjectInformation.plist +0 -0
  63. data/lib/bioshogi/assets/audios/breakbeat_long_strip.band/projectData +3183 -0
  64. data/lib/bioshogi/assets/audios/breakbeat_long_strip.m4a +0 -0
  65. data/lib/bioshogi/assets/audios/china_like.band/Alternatives/000/DisplayState.plist +0 -0
  66. data/lib/bioshogi/assets/audios/china_like.band/Alternatives/000/DisplayStateArchive +0 -0
  67. data/lib/bioshogi/assets/audios/china_like.band/Alternatives/000/MetaData.plist +0 -0
  68. data/lib/bioshogi/assets/audios/china_like.band/Alternatives/000/ProjectData +0 -0
  69. data/lib/bioshogi/assets/audios/china_like.band/Alternatives/000/WindowImage.jpg +0 -0
  70. data/lib/bioshogi/assets/audios/china_like.band/Resources/ProjectInformation.plist +0 -0
  71. data/lib/bioshogi/assets/audios/china_like.band/projectData +3183 -0
  72. data/lib/bioshogi/assets/audios/china_like_a.m4a +0 -0
  73. data/lib/bioshogi/assets/audios/china_like_b.m4a +0 -0
  74. data/lib/bioshogi/assets/audios/convert.sh +52 -0
  75. data/lib/bioshogi/assets/audios/diamond_shark.m4a +0 -0
  76. data/lib/bioshogi/assets/audios/digit_blast_layers.band/Alternatives/000/DisplayState.plist +0 -0
  77. data/lib/bioshogi/assets/audios/digit_blast_layers.band/Alternatives/000/DisplayStateArchive +0 -0
  78. data/lib/bioshogi/assets/audios/digit_blast_layers.band/Alternatives/000/MetaData.plist +0 -0
  79. data/lib/bioshogi/assets/audios/digit_blast_layers.band/Alternatives/000/ProjectData +0 -0
  80. data/lib/bioshogi/assets/audios/digit_blast_layers.band/Alternatives/000/WindowImage.jpg +0 -0
  81. data/lib/bioshogi/assets/audios/digit_blast_layers.band/Resources/ProjectInformation.plist +0 -0
  82. data/lib/bioshogi/assets/audios/digit_blast_layers.band/projectData +3183 -0
  83. data/lib/bioshogi/assets/audios/ds1022.m4a +0 -0
  84. data/lib/bioshogi/assets/audios/ds1022.mp3 +0 -0
  85. data/lib/bioshogi/assets/audios/ds10827.m4a +0 -0
  86. data/lib/bioshogi/assets/audios/ds10827.mp3 +0 -0
  87. data/lib/bioshogi/assets/audios/ds11184.m4a +0 -0
  88. data/lib/bioshogi/assets/audios/ds11184.mp3 +0 -0
  89. data/lib/bioshogi/assets/audios/ds13037.m4a +0 -0
  90. data/lib/bioshogi/assets/audios/ds13037.mp3 +0 -0
  91. data/lib/bioshogi/assets/audios/ds13513.m4a +0 -0
  92. data/lib/bioshogi/assets/audios/ds13513.mp3 +0 -0
  93. data/lib/bioshogi/assets/audios/ds14640.m4a +0 -0
  94. data/lib/bioshogi/assets/audios/ds14640.mp3 +0 -0
  95. data/lib/bioshogi/assets/audios/ds1982.m4a +0 -0
  96. data/lib/bioshogi/assets/audios/ds1982.mp3 +0 -0
  97. data/lib/bioshogi/assets/audios/ds2142.m4a +0 -0
  98. data/lib/bioshogi/assets/audios/ds2142.mp3 +0 -0
  99. data/lib/bioshogi/assets/audios/ds3479.m4a +0 -0
  100. data/lib/bioshogi/assets/audios/ds3479.mp3 +0 -0
  101. data/lib/bioshogi/assets/audios/ds3480.m4a +0 -0
  102. data/lib/bioshogi/assets/audios/ds3480.mp3 +0 -0
  103. data/lib/bioshogi/assets/audios/ds3812.m4a +0 -0
  104. data/lib/bioshogi/assets/audios/ds3812.mp3 +0 -0
  105. data/lib/bioshogi/assets/audios/ds3895.m4a +0 -0
  106. data/lib/bioshogi/assets/audios/ds3895.mp3 +0 -0
  107. data/lib/bioshogi/assets/audios/ds4520.m4a +0 -0
  108. data/lib/bioshogi/assets/audios/ds4520.mp3 +0 -0
  109. data/lib/bioshogi/assets/audios/ds4616.m4a +0 -0
  110. data/lib/bioshogi/assets/audios/ds4616.mp3 +0 -0
  111. data/lib/bioshogi/assets/audios/ds5615.m4a +0 -0
  112. data/lib/bioshogi/assets/audios/ds5615.mp3 +0 -0
  113. data/lib/bioshogi/assets/audios/ds5616.m4a +0 -0
  114. data/lib/bioshogi/assets/audios/ds5616.mp3 +0 -0
  115. data/lib/bioshogi/assets/audios/ds568.m4a +0 -0
  116. data/lib/bioshogi/assets/audios/ds568.mp3 +0 -0
  117. data/lib/bioshogi/assets/audios/ds7138.m4a +0 -0
  118. data/lib/bioshogi/assets/audios/ds7138.mp3 +0 -0
  119. data/lib/bioshogi/assets/audios/ds8705.m4a +0 -0
  120. data/lib/bioshogi/assets/audios/ds8705.mp3 +0 -0
  121. data/lib/bioshogi/assets/audios/foo.band/Alternatives/000/DisplayState.plist +0 -0
  122. data/lib/bioshogi/assets/audios/foo.band/Alternatives/000/DisplayStateArchive +0 -0
  123. data/lib/bioshogi/assets/audios/foo.band/Alternatives/000/MetaData.plist +0 -0
  124. data/lib/bioshogi/assets/audios/foo.band/Alternatives/000/ProjectData +0 -0
  125. data/lib/bioshogi/assets/audios/foo.band/Alternatives/000/WindowImage.jpg +0 -0
  126. data/lib/bioshogi/assets/audios/foo.band/Media/Audio Files/Strategy.caf +0 -0
  127. data/lib/bioshogi/assets/audios/foo.band/Resources/ProjectInformation.plist +0 -0
  128. data/lib/bioshogi/assets/audios/foo.band/projectData +3183 -0
  129. data/lib/bioshogi/assets/audios/headspin_long.band/Alternatives/000/DisplayState.plist +0 -0
  130. data/lib/bioshogi/assets/audios/headspin_long.band/Alternatives/000/DisplayStateArchive +0 -0
  131. data/lib/bioshogi/assets/audios/headspin_long.band/Alternatives/000/MetaData.plist +0 -0
  132. data/lib/bioshogi/assets/audios/headspin_long.band/Alternatives/000/ProjectData +0 -0
  133. data/lib/bioshogi/assets/audios/headspin_long.band/Alternatives/000/WindowImage.jpg +0 -0
  134. data/lib/bioshogi/assets/audios/headspin_long.band/Resources/ProjectInformation.plist +0 -0
  135. data/lib/bioshogi/assets/audios/headspin_long.band/projectData +3183 -0
  136. data/lib/bioshogi/assets/audios/headspin_long.m4a +0 -0
  137. data/lib/bioshogi/assets/audios/loop_bgm_i.band/Alternatives/000/DisplayState.plist +0 -0
  138. data/lib/bioshogi/assets/audios/loop_bgm_i.band/Alternatives/000/DisplayStateArchive +0 -0
  139. data/lib/bioshogi/assets/audios/loop_bgm_i.band/Alternatives/000/MetaData.plist +0 -0
  140. data/lib/bioshogi/assets/audios/loop_bgm_i.band/Alternatives/000/ProjectData +0 -0
  141. data/lib/bioshogi/assets/audios/loop_bgm_i.band/Alternatives/000/WindowImage.jpg +0 -0
  142. data/lib/bioshogi/assets/audios/loop_bgm_i.band/Resources/ProjectInformation.plist +0 -0
  143. data/lib/bioshogi/assets/audios/loop_bgm_i.band/projectData +3183 -0
  144. data/lib/bioshogi/assets/audios/mastermind.band/Alternatives/000/DisplayState.plist +0 -0
  145. data/lib/bioshogi/assets/audios/mastermind.band/Alternatives/000/DisplayStateArchive +0 -0
  146. data/lib/bioshogi/assets/audios/mastermind.band/Alternatives/000/MetaData.plist +0 -0
  147. data/lib/bioshogi/assets/audios/mastermind.band/Alternatives/000/ProjectData +0 -0
  148. data/lib/bioshogi/assets/audios/mastermind.band/Alternatives/000/WindowImage.jpg +0 -0
  149. data/lib/bioshogi/assets/audios/mastermind.band/Resources/ProjectInformation.plist +0 -0
  150. data/lib/bioshogi/assets/audios/mastermind.band/projectData +3183 -0
  151. data/lib/bioshogi/assets/audios/mastermind.m4a +0 -0
  152. data/lib/bioshogi/assets/audios/nc105702.m4a +0 -0
  153. data/lib/bioshogi/assets/audios/nc105702.mp3 +0 -0
  154. data/lib/bioshogi/assets/audios/nc142538.m4a +0 -0
  155. data/lib/bioshogi/assets/audios/nc142538.mp3 +0 -0
  156. data/lib/bioshogi/assets/audios/nc162705.m4a +0 -0
  157. data/lib/bioshogi/assets/audios/nc162705.mp3 +0 -0
  158. data/lib/bioshogi/assets/audios/nc799.m4a +0 -0
  159. data/lib/bioshogi/assets/audios/nc799.mp3 +0 -0
  160. data/lib/bioshogi/assets/audios/nc97718.m4a +0 -0
  161. data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/Autosave/.dummy +0 -0
  162. data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/Autosave/2021-08-19 05:25:23Z.displayData +0 -0
  163. data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/Autosave/2021-08-19 05:25:23Z.eventData +0 -0
  164. data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/Autosave/2021-08-19 05:25:23Z.songData +0 -0
  165. data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/DisplayState.plist +0 -0
  166. data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/DisplayStateArchive +0 -0
  167. data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/MetaData.plist +0 -0
  168. data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/ProjectData +0 -0
  169. data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/WindowImage.jpg +0 -0
  170. data/lib/bioshogi/assets/audios/positive_think.band/Resources/ProjectInformation.plist +0 -0
  171. data/lib/bioshogi/assets/audios/positive_think.band/projectData +3183 -0
  172. data/lib/bioshogi/assets/audios/positive_think.m4a +0 -0
  173. data/lib/bioshogi/assets/audios/shw_akatsuki_japan.m4a +0 -0
  174. data/lib/bioshogi/assets/audios/shw_akatsuki_japan.mp3 +0 -0
  175. data/lib/bioshogi/assets/audios/stg_like_type1.band/Alternatives/000/DisplayState.plist +0 -0
  176. data/lib/bioshogi/assets/audios/stg_like_type1.band/Alternatives/000/DisplayStateArchive +0 -0
  177. data/lib/bioshogi/assets/audios/stg_like_type1.band/Alternatives/000/MetaData.plist +0 -0
  178. data/lib/bioshogi/assets/audios/stg_like_type1.band/Alternatives/000/ProjectData +0 -0
  179. data/lib/bioshogi/assets/audios/stg_like_type1.band/Alternatives/000/WindowImage.jpg +0 -0
  180. data/lib/bioshogi/assets/audios/stg_like_type1.band/Resources/ProjectInformation.plist +0 -0
  181. data/lib/bioshogi/assets/audios/stg_like_type1.band/projectData +3183 -0
  182. data/lib/bioshogi/assets/audios/stg_like_type1a.m4a +0 -0
  183. data/lib/bioshogi/assets/audios/stg_like_type1b.m4a +0 -0
  184. data/lib/bioshogi/assets/audios/strategy.band/Alternatives/000/DisplayState.plist +0 -0
  185. data/lib/bioshogi/assets/audios/strategy.band/Alternatives/000/DisplayStateArchive +0 -0
  186. data/lib/bioshogi/assets/audios/strategy.band/Alternatives/000/MetaData.plist +0 -0
  187. data/lib/bioshogi/assets/audios/strategy.band/Alternatives/000/ProjectData +0 -0
  188. data/lib/bioshogi/assets/audios/strategy.band/Alternatives/000/WindowImage.jpg +0 -0
  189. data/lib/bioshogi/assets/audios/strategy.band/Media/Audio Files/Strategy.caf +0 -0
  190. data/lib/bioshogi/assets/audios/strategy.band/Resources/ProjectInformation.plist +0 -0
  191. data/lib/bioshogi/assets/audios/strategy.band/projectData +3183 -0
  192. data/lib/bioshogi/assets/audios/strategy.m4a +0 -0
  193. data/lib/bioshogi/assets/audios/test1.band/Alternatives/000/DisplayState.plist +0 -0
  194. data/lib/bioshogi/assets/audios/test1.band/Alternatives/000/DisplayStateArchive +0 -0
  195. data/lib/bioshogi/assets/audios/test1.band/Alternatives/000/MetaData.plist +0 -0
  196. data/lib/bioshogi/assets/audios/test1.band/Alternatives/000/ProjectData +0 -0
  197. data/lib/bioshogi/assets/audios/test1.band/Alternatives/000/WindowImage.jpg +0 -0
  198. data/lib/bioshogi/assets/audios/test1.band/Resources/ProjectInformation.plist +0 -0
  199. data/lib/bioshogi/assets/audios/test1.band/projectData +3183 -0
  200. data/lib/bioshogi/assets/audios/test2.band/Alternatives/000/DisplayState.plist +0 -0
  201. data/lib/bioshogi/assets/audios/test2.band/Alternatives/000/DisplayStateArchive +0 -0
  202. data/lib/bioshogi/assets/audios/test2.band/Alternatives/000/MetaData.plist +0 -0
  203. data/lib/bioshogi/assets/audios/test2.band/Alternatives/000/ProjectData +0 -0
  204. data/lib/bioshogi/assets/audios/test2.band/Alternatives/000/WindowImage.jpg +0 -0
  205. data/lib/bioshogi/assets/audios/test2.band/Resources/ProjectInformation.plist +0 -0
  206. data/lib/bioshogi/assets/audios/test2.band/projectData +3183 -0
  207. data/lib/bioshogi/assets/fonts/MPLUSRounded1c-Black.ttf +0 -0
  208. data/lib/bioshogi/assets/fonts/MPLUSRounded1c-Bold.ttf +0 -0
  209. data/lib/bioshogi/assets/fonts/MPLUSRounded1c-ExtraBold.ttf +0 -0
  210. data/lib/bioshogi/assets/fonts/MPLUSRounded1c-Light.ttf +0 -0
  211. data/lib/bioshogi/assets/fonts/MPLUSRounded1c-Medium.ttf +0 -0
  212. data/lib/bioshogi/assets/fonts/MPLUSRounded1c-Regular.ttf +0 -0
  213. data/lib/bioshogi/assets/fonts/MPLUSRounded1c-Thin.ttf +0 -0
  214. data/lib/bioshogi/assets/fonts/NewTegomin-Regular.ttf +0 -0
  215. data/lib/bioshogi/assets/fonts/NotoSansJP-Black.otf +0 -0
  216. data/lib/bioshogi/assets/fonts/NotoSansJP-Bold.otf +0 -0
  217. data/lib/bioshogi/assets/fonts/NotoSansJP-Light.otf +0 -0
  218. data/lib/bioshogi/assets/fonts/NotoSansJP-Medium.otf +0 -0
  219. data/lib/bioshogi/assets/fonts/NotoSansJP-Regular.otf +0 -0
  220. data/lib/bioshogi/assets/fonts/NotoSansJP-Thin.otf +0 -0
  221. data/lib/bioshogi/assets/fonts/NotoSerifJP-Black.otf +0 -0
  222. data/lib/bioshogi/assets/fonts/NotoSerifJP-Bold.otf +0 -0
  223. data/lib/bioshogi/assets/fonts/NotoSerifJP-ExtraLight.otf +0 -0
  224. data/lib/bioshogi/assets/fonts/NotoSerifJP-Light.otf +0 -0
  225. data/lib/bioshogi/assets/fonts/NotoSerifJP-Medium.otf +0 -0
  226. data/lib/bioshogi/assets/fonts/NotoSerifJP-Regular.otf +0 -0
  227. data/lib/bioshogi/assets/fonts/NotoSerifJP-SemiBold.otf +0 -0
  228. data/lib/bioshogi/assets/fonts/README.org +9 -0
  229. data/lib/bioshogi/assets/fonts/RictyDiminished-Bold.ttf +0 -0
  230. data/lib/bioshogi/assets/fonts/RictyDiminished-Regular.ttf +0 -0
  231. data/lib/bioshogi/assets/fonts/YuseiMagic-Regular.ttf +0 -0
  232. data/lib/bioshogi/assets/images/README.org +0 -0
  233. data/lib/bioshogi/assets/images/background/README.org +9 -0
  234. data/lib/bioshogi/assets/images/background/background_a.png +0 -0
  235. data/lib/bioshogi/assets/images/board/README.org +7 -0
  236. data/lib/bioshogi/assets/images/board/board_a.png +0 -0
  237. data/lib/bioshogi/assets/images/color_theme_preview/is_color_theme_club24.png +0 -0
  238. data/lib/bioshogi/assets/images/color_theme_preview/is_color_theme_paper.png +0 -0
  239. data/lib/bioshogi/assets/images/color_theme_preview/is_color_theme_piyo.png +0 -0
  240. data/lib/bioshogi/assets/images/color_theme_preview/is_color_theme_real.png +0 -0
  241. data/lib/bioshogi/assets/images/color_theme_preview/is_color_theme_shape.png +0 -0
  242. data/lib/bioshogi/assets/images/piece/Portella/BB0.png +0 -0
  243. data/lib/bioshogi/assets/images/piece/Portella/BB1.png +0 -0
  244. data/lib/bioshogi/assets/images/piece/Portella/BG0.png +0 -0
  245. data/lib/bioshogi/assets/images/piece/Portella/BK0.png +0 -0
  246. data/lib/bioshogi/assets/images/piece/Portella/BL0.png +0 -0
  247. data/lib/bioshogi/assets/images/piece/Portella/BL1.png +0 -0
  248. data/lib/bioshogi/assets/images/piece/Portella/BN0.png +0 -0
  249. data/lib/bioshogi/assets/images/piece/Portella/BN1.png +0 -0
  250. data/lib/bioshogi/assets/images/piece/Portella/BP0.png +0 -0
  251. data/lib/bioshogi/assets/images/piece/Portella/BP1.png +0 -0
  252. data/lib/bioshogi/assets/images/piece/Portella/BR0.png +0 -0
  253. data/lib/bioshogi/assets/images/piece/Portella/BR1.png +0 -0
  254. data/lib/bioshogi/assets/images/piece/Portella/BS0.png +0 -0
  255. data/lib/bioshogi/assets/images/piece/Portella/BS1.png +0 -0
  256. data/lib/bioshogi/assets/images/piece/Portella/BX0.png +0 -0
  257. data/lib/bioshogi/assets/images/piece/Portella/README.org +1 -0
  258. data/lib/bioshogi/assets/images/piece/Portella/WB0.png +0 -0
  259. data/lib/bioshogi/assets/images/piece/Portella/WB1.png +0 -0
  260. data/lib/bioshogi/assets/images/piece/Portella/WG0.png +0 -0
  261. data/lib/bioshogi/assets/images/piece/Portella/WK0.png +0 -0
  262. data/lib/bioshogi/assets/images/piece/Portella/WL0.png +0 -0
  263. data/lib/bioshogi/assets/images/piece/Portella/WL1.png +0 -0
  264. data/lib/bioshogi/assets/images/piece/Portella/WN0.png +0 -0
  265. data/lib/bioshogi/assets/images/piece/Portella/WN1.png +0 -0
  266. data/lib/bioshogi/assets/images/piece/Portella/WP0.png +0 -0
  267. data/lib/bioshogi/assets/images/piece/Portella/WP1.png +0 -0
  268. data/lib/bioshogi/assets/images/piece/Portella/WR0.png +0 -0
  269. data/lib/bioshogi/assets/images/piece/Portella/WR1.png +0 -0
  270. data/lib/bioshogi/assets/images/piece/Portella/WS0.png +0 -0
  271. data/lib/bioshogi/assets/images/piece/Portella/WS1.png +0 -0
  272. data/lib/bioshogi/assets/images/piece/Portella/WX0.png +0 -0
  273. data/lib/bioshogi/assets/images/piece/Portella/convert.sh +32 -0
  274. data/lib/bioshogi/assets/images/piece/Portella/original/0FU.png +0 -0
  275. data/lib/bioshogi/assets/images/piece/Portella/original/0GI.png +0 -0
  276. data/lib/bioshogi/assets/images/piece/Portella/original/0GY.png +0 -0
  277. data/lib/bioshogi/assets/images/piece/Portella/original/0HI.png +0 -0
  278. data/lib/bioshogi/assets/images/piece/Portella/original/0KA.png +0 -0
  279. data/lib/bioshogi/assets/images/piece/Portella/original/0KE.png +0 -0
  280. data/lib/bioshogi/assets/images/piece/Portella/original/0KI.png +0 -0
  281. data/lib/bioshogi/assets/images/piece/Portella/original/0KI.svg +1 -0
  282. data/lib/bioshogi/assets/images/piece/Portella/original/0KY.png +0 -0
  283. data/lib/bioshogi/assets/images/piece/Portella/original/0NG.png +0 -0
  284. data/lib/bioshogi/assets/images/piece/Portella/original/0NK.png +0 -0
  285. data/lib/bioshogi/assets/images/piece/Portella/original/0NY.png +0 -0
  286. data/lib/bioshogi/assets/images/piece/Portella/original/0OU.png +0 -0
  287. data/lib/bioshogi/assets/images/piece/Portella/original/0RY.png +0 -0
  288. data/lib/bioshogi/assets/images/piece/Portella/original/0TO.png +0 -0
  289. data/lib/bioshogi/assets/images/piece/Portella/original/0UM.png +0 -0
  290. data/lib/bioshogi/assets/images/piece/Portella/original/1FU.png +0 -0
  291. data/lib/bioshogi/assets/images/piece/Portella/original/1GI.png +0 -0
  292. data/lib/bioshogi/assets/images/piece/Portella/original/1GY.png +0 -0
  293. data/lib/bioshogi/assets/images/piece/Portella/original/1HI.png +0 -0
  294. data/lib/bioshogi/assets/images/piece/Portella/original/1KA.png +0 -0
  295. data/lib/bioshogi/assets/images/piece/Portella/original/1KE.png +0 -0
  296. data/lib/bioshogi/assets/images/piece/Portella/original/1KI.png +0 -0
  297. data/lib/bioshogi/assets/images/piece/Portella/original/1KY.png +0 -0
  298. data/lib/bioshogi/assets/images/piece/Portella/original/1NG.png +0 -0
  299. data/lib/bioshogi/assets/images/piece/Portella/original/1NK.png +0 -0
  300. data/lib/bioshogi/assets/images/piece/Portella/original/1NY.png +0 -0
  301. data/lib/bioshogi/assets/images/piece/Portella/original/1OU.png +0 -0
  302. data/lib/bioshogi/assets/images/piece/Portella/original/1RY.png +0 -0
  303. data/lib/bioshogi/assets/images/piece/Portella/original/1TO.png +0 -0
  304. data/lib/bioshogi/assets/images/piece/Portella/original/1UM.png +0 -0
  305. data/lib/bioshogi/board/basic.rb +24 -0
  306. data/lib/bioshogi/board/csa_formatter.rb +40 -0
  307. data/lib/bioshogi/board/kakinoki_formatter.rb +57 -0
  308. data/lib/bioshogi/board/piece_counts_methods.rb +43 -0
  309. data/lib/bioshogi/board/reader_methods.rb +91 -0
  310. data/lib/bioshogi/board/technique_matcher_methods.rb +23 -0
  311. data/lib/bioshogi/board/update_methods.rb +79 -0
  312. data/lib/bioshogi/board.rb +28 -0
  313. data/lib/bioshogi/board_parser/base.rb +43 -0
  314. data/lib/bioshogi/board_parser/compare_board_parser.rb +95 -0
  315. data/lib/bioshogi/board_parser/csa_board_parser.rb +45 -0
  316. data/lib/bioshogi/board_parser/kakinoki_board_parser.rb +95 -0
  317. data/lib/bioshogi/board_parser/sfen_board_parser.rb +29 -0
  318. data/lib/bioshogi/board_parser.rb +33 -0
  319. data/lib/bioshogi/builder.rb +9 -0
  320. data/lib/bioshogi/cli/.gitignore +1 -0
  321. data/lib/bioshogi/cli/convert.rb +34 -0
  322. data/lib/bioshogi/cli/input_parser.rb +23 -0
  323. data/lib/bioshogi/cli/piece.rb +19 -0
  324. data/lib/bioshogi/cli/versus.rb +160 -0
  325. data/lib/bioshogi/cli.rb +106 -0
  326. data/lib/bioshogi/container/basic.rb +13 -0
  327. data/lib/bioshogi/container/checkmate_yomiage.rb +87 -0
  328. data/lib/bioshogi/container/core_methods.rb +99 -0
  329. data/lib/bioshogi/container/execute_methods.rb +40 -0
  330. data/lib/bioshogi/container/fast.rb +16 -0
  331. data/lib/bioshogi/container/players_methods.rb +106 -0
  332. data/lib/bioshogi/container/serialize_methods.rb +180 -0
  333. data/lib/bioshogi/container/simple.rb +17 -0
  334. data/lib/bioshogi/container/test_methods.rb +65 -0
  335. data/lib/bioshogi/container.rb +9 -0
  336. data/lib/bioshogi/cover_image/bottom_text_methods.rb +34 -0
  337. data/lib/bioshogi/cover_image/core_methods.rb +60 -0
  338. data/lib/bioshogi/cover_image/main_text_methods.rb +36 -0
  339. data/lib/bioshogi/cover_image/renderer.rb +10 -0
  340. data/lib/bioshogi/cover_image.rb +7 -0
  341. data/lib/bioshogi/csa_header_info.rb +90 -0
  342. data/lib/bioshogi/dimension/base.rb +92 -0
  343. data/lib/bioshogi/dimension/char_info.rb +24 -0
  344. data/lib/bioshogi/dimension/dimension_info.rb +25 -0
  345. data/lib/bioshogi/dimension/module_methods.rb +42 -0
  346. data/lib/bioshogi/dimension/place_x.rb +27 -0
  347. data/lib/bioshogi/dimension/place_y.rb +57 -0
  348. data/lib/bioshogi/dimension.rb +7 -0
  349. data/lib/bioshogi/errors.rb +145 -0
  350. data/lib/bioshogi/explain/attack_info.rb +195 -0
  351. data/lib/bioshogi/explain/board_piller_methods.rb +53 -0
  352. data/lib/bioshogi/explain/chaos_info.rb +17 -0
  353. data/lib/bioshogi/explain/defense_info.rb +130 -0
  354. data/lib/bioshogi/explain/distribution_ratio.rb +1840 -0
  355. data/lib/bioshogi/explain/distribution_ratio_generator.rb +48 -0
  356. data/lib/bioshogi/explain/file_normalizer.rb +20 -0
  357. data/lib/bioshogi/explain/group_info.rb +16 -0
  358. data/lib/bioshogi/explain/monitor_mod.rb +78 -0
  359. data/lib/bioshogi/explain/note_info.rb +63 -0
  360. data/lib/bioshogi/explain/sect_info.rb +13 -0
  361. data/lib/bioshogi/explain/shape_info.rb +4582 -0
  362. data/lib/bioshogi/explain/shape_info_relation.rb +37 -0
  363. data/lib/bioshogi/explain/skill_monitor.rb +352 -0
  364. data/lib/bioshogi/explain/skill_set.rb +100 -0
  365. data/lib/bioshogi/explain/tactic_hit_turn_table.rb +316 -0
  366. data/lib/bioshogi/explain/tactic_hit_turn_table_generator.rb +61 -0
  367. data/lib/bioshogi/explain/tactic_info.rb +124 -0
  368. data/lib/bioshogi/explain/tactic_validator.rb +40 -0
  369. data/lib/bioshogi/explain/tech_accessor.rb +147 -0
  370. data/lib/bioshogi/explain/technique_info.rb +28 -0
  371. data/lib/bioshogi/explain/technique_matcher_info.rb +298 -0
  372. data/lib/bioshogi/explain//345/202/231/350/200/203//345/205/245/347/216/211.kif +24 -0
  373. data/lib/bioshogi/explain//345/202/231/350/200/203//345/244/247/351/247/222/343/202/263/343/203/263/343/203/227/343/203/252/343/203/274/343/203/210.kif +19 -0
  374. data/lib/bioshogi/explain//345/202/231/350/200/203//345/244/247/351/247/222/345/205/250/346/266/210/345/244/261.kif +19 -0
  375. data/lib/bioshogi/explain//345/202/231/350/200/203//345/257/276/346/212/227/345/236/213.kif +12 -0
  376. data/lib/bioshogi/explain//345/202/231/350/200/203//345/257/276/346/214/257/343/202/212.kif +12 -0
  377. data/lib/bioshogi/explain//345/202/231/350/200/203//345/261/205/351/243/233/350/273/212.kif +10 -0
  378. data/lib/bioshogi/explain//345/202/231/350/200/203//346/214/257/343/202/212/351/243/233/350/273/212.kif +12 -0
  379. data/lib/bioshogi/explain//345/202/231/350/200/203//347/233/270/345/205/245/347/216/211.kif +24 -0
  380. data/lib/bioshogi/explain//345/202/231/350/200/203//347/233/270/345/261/205/347/216/211.kif +26 -0
  381. data/lib/bioshogi/explain//345/202/231/350/200/203//347/233/270/345/261/205/351/243/233/350/273/212.kif +8 -0
  382. data/lib/bioshogi/explain//345/202/231/350/200/203//347/233/270/346/214/257/343/202/212.kif +16 -0
  383. data/lib/bioshogi/explain//345/202/231/350/200/203//350/203/214/346/260/264/343/201/256/351/231/243.kif +34 -0
  384. data/lib/bioshogi/explain//345/202/231/350/200/203//350/247/222/344/270/215/346/210/220.kif +16 -0
  385. data/lib/bioshogi/explain//345/202/231/350/200/203//351/243/233/350/273/212/344/270/215/346/210/220.kif +17 -0
  386. data/lib/bioshogi/explain//345/202/231/350/200/203//351/247/222/346/237/261.kif +48 -0
  387. data/lib/bioshogi/explain//345/233/262/343/201/204//343/201/202/343/201/232/343/201/276/343/202/204/345/233/262/343/201/204.kif +30 -0
  388. data/lib/bioshogi/explain//345/233/262/343/201/204//343/201/204/343/201/241/343/201/224/345/233/262/343/201/204.kif +82 -0
  389. data/lib/bioshogi/explain//345/233/262/343/201/204//343/201/213/343/202/223/343/201/264/343/202/207/343/201/206/345/233/262/343/201/204.kif +122 -0
  390. data/lib/bioshogi/explain//345/233/262/343/201/204//343/201/232/343/202/214/347/276/216/346/277/203.kif +25 -0
  391. data/lib/bioshogi/explain//345/233/262/343/201/204//343/201/241/343/202/207/343/202/223/343/201/276/343/201/222/347/276/216/346/277/203.kif +25 -0
  392. data/lib/bioshogi/explain//345/233/262/343/201/204//343/201/270/343/201/223/343/201/277/347/237/242/345/200/211.kif +41 -0
  393. data/lib/bioshogi/explain//345/233/262/343/201/204//343/202/242/343/203/222/343/203/253/345/233/262/343/201/204.kif +148 -0
  394. data/lib/bioshogi/explain//345/233/262/343/201/204//343/202/250/343/203/253/343/203/242/345/233/262/343/201/204.kif +23 -0
  395. data/lib/bioshogi/explain//345/233/262/343/201/204//343/202/252/343/203/252/343/202/270/343/203/212/343/203/253/351/233/201/346/234/250.kif +40 -0
  396. data/lib/bioshogi/explain//345/233/262/343/201/204//343/202/252/343/203/274/343/203/253/343/203/211/351/233/201/346/234/250.kif +92 -0
  397. data/lib/bioshogi/explain//345/233/262/343/201/204//343/202/253/343/202/256/345/233/262/343/201/204.kif +40 -0
  398. data/lib/bioshogi/explain//345/233/262/343/201/204//343/202/253/343/202/277/345/233/262/343/201/204.kif +144 -0
  399. data/lib/bioshogi/explain//345/233/262/343/201/204//343/202/253/343/203/213/345/233/262/343/201/204.kif +69 -0
  400. data/lib/bioshogi/explain//345/233/262/343/201/204//343/202/253/343/203/213/347/274/266/345/233/262/343/201/204.kif +23 -0
  401. data/lib/bioshogi/explain//345/233/262/343/201/204//343/202/253/343/203/226/343/203/210/345/233/262/343/201/204.kif +29 -0
  402. data/lib/bioshogi/explain//345/233/262/343/201/204//343/202/253/343/203/226/343/203/210/347/276/216/346/277/203.kif +49 -0
  403. data/lib/bioshogi/explain//345/233/262/343/201/204//343/202/273/343/203/241/343/203/263/343/203/210/345/233/262/343/201/204.kif +124 -0
  404. data/lib/bioshogi/explain//345/233/262/343/201/204//343/203/200/343/202/244/343/203/244/343/203/242/343/203/263/343/203/211/347/276/216/346/277/203.kif +89 -0
  405. data/lib/bioshogi/explain//345/233/262/343/201/204//343/203/201/343/203/247/343/202/263/343/203/254/343/203/274/343/203/210/345/233/262/343/201/204.kif +59 -0
  406. data/lib/bioshogi/explain//345/233/262/343/201/204//343/203/204/343/203/216/351/212/200/345/236/213/345/217/263/347/216/211.kif +45 -0
  407. data/lib/bioshogi/explain//345/233/262/343/201/204//343/203/204/343/203/216/351/212/200/351/233/201/346/234/250.kif +113 -0
  408. data/lib/bioshogi/explain//345/233/262/343/201/204//343/203/223/343/203/203/343/202/2604.kif +104 -0
  409. data/lib/bioshogi/explain//345/233/262/343/201/204//343/203/234/343/203/212/343/203/263/343/202/266/345/233/262/343/201/204.kif +89 -0
  410. data/lib/bioshogi/explain//345/233/262/343/201/204//343/203/237/343/203/254/343/203/213/343/202/242/343/203/240/345/233/262/343/201/204.kif +96 -0
  411. data/lib/bioshogi/explain//345/233/262/343/201/204//343/203/242/343/203/216/343/203/254/343/203/274/343/203/253/345/233/262/343/201/204.kif +47 -0
  412. data/lib/bioshogi/explain//345/233/262/343/201/204//344/270/200/346/226/207/345/255/227/347/237/242/345/200/211.kif +48 -0
  413. data/lib/bioshogi/explain//345/233/262/343/201/204//344/270/211/346/211/213/345/233/262/343/201/204.kif +23 -0
  414. data/lib/bioshogi/explain//345/233/262/343/201/204//344/270/211/346/256/265/345/217/263/347/216/211.kif +50 -0
  415. data/lib/bioshogi/explain//345/233/262/343/201/204//344/270/255/344/275/217/343/201/276/343/201/204.kif +71 -0
  416. data/lib/bioshogi/explain//345/233/262/343/201/204//344/270/255/345/216/237/345/233/262/343/201/204.kif +69 -0
  417. data/lib/bioshogi/explain//345/233/262/343/201/204//344/270/262/343/202/253/343/203/204/345/233/262/343/201/204.kif +75 -0
  418. data/lib/bioshogi/explain//345/233/262/343/201/204//345/215/207/347/224/260/347/276/216/346/277/203.kif +43 -0
  419. data/lib/bioshogi/explain//345/233/262/343/201/204//345/217/263/347/216/211.kif +82 -0
  420. data/lib/bioshogi/explain//345/233/262/343/201/204//345/217/263/347/237/242/345/200/211.kif +92 -0
  421. data/lib/bioshogi/explain//345/233/262/343/201/204//345/233/233/346/236/232/347/276/216/346/277/203.kif +82 -0
  422. data/lib/bioshogi/explain//345/233/262/343/201/204//345/233/233/346/236/232/351/212/200/345/206/240.kif +150 -0
  423. data/lib/bioshogi/explain//345/233/262/343/201/204//345/233/233/346/256/265/347/253/257/347/216/211.kif +213 -0
  424. data/lib/bioshogi/explain//345/233/262/343/201/204//345/233/233/346/256/265/347/253/257/347/216/2112.kif +91 -0
  425. data/lib/bioshogi/explain//345/233/262/343/201/204//345/233/233/350/247/222/347/237/242/345/200/211.kif +57 -0
  426. data/lib/bioshogi/explain//345/233/262/343/201/204//345/234/237/345/261/205/347/237/242/345/200/211.kif +39 -0
  427. data/lib/bioshogi/explain//345/233/262/343/201/204//345/235/212/344/270/273/347/276/216/346/277/203.kif +79 -0
  428. data/lib/bioshogi/explain//345/233/262/343/201/204//345/244/247/345/261/261/347/276/216/346/277/203.kif +44 -0
  429. data/lib/bioshogi/explain//345/233/262/343/201/204//345/244/247/347/233/276/345/233/262/343/201/204.kif +33 -0
  430. data/lib/bioshogi/explain//345/233/262/343/201/204//345/244/251/345/256/210/351/226/243/345/233/262/343/201/204.kif +29 -0
  431. data/lib/bioshogi/explain//345/233/262/343/201/204//345/244/251/345/256/210/351/226/243/347/276/216/346/277/203.kif +75 -0
  432. data/lib/bioshogi/explain//345/233/262/343/201/204//345/244/251/351/207/216/347/237/242/345/200/211.kif +76 -0
  433. data/lib/bioshogi/explain//345/233/262/343/201/204//345/257/214/345/243/253/350/246/213/347/237/242/345/200/211.kif +45 -0
  434. data/lib/bioshogi/explain//345/233/262/343/201/204//345/261/205/347/216/211.kif +57 -0
  435. data/lib/bioshogi/explain//345/233/262/343/201/204//345/261/205/351/243/233/347/251/264/351/237/263/347/204/241/343/201/227/343/201/256/346/247/213/343/201/210.kif +60 -0
  436. data/lib/bioshogi/explain//345/233/262/343/201/204//345/261/205/351/243/233/350/273/212/347/251/264/347/206/212.kif +76 -0
  437. data/lib/bioshogi/explain//345/233/262/343/201/204//345/261/205/351/243/233/350/273/212/351/207/221/347/276/216/346/277/203.kif +42 -0
  438. data/lib/bioshogi/explain//345/233/262/343/201/204//345/267/246/345/261/261/345/233/262/343/201/204.kif +26 -0
  439. data/lib/bioshogi/explain//345/233/262/343/201/204//345/267/246/347/276/216/346/277/203.kif +72 -0
  440. data/lib/bioshogi/explain//345/233/262/343/201/204//346/202/252/345/275/242/347/237/242/345/200/211.kif +31 -0
  441. data/lib/bioshogi/explain//345/233/262/343/201/204//346/214/257/343/202/212/351/243/233/350/273/212/343/202/250/343/203/253/343/203/242.kif +31 -0
  442. data/lib/bioshogi/explain//345/233/262/343/201/204//346/214/257/343/202/212/351/243/233/350/273/212/343/203/223/343/203/203/343/202/2604.kif +151 -0
  443. data/lib/bioshogi/explain//345/233/262/343/201/204//346/214/257/343/202/212/351/243/233/350/273/212/343/203/237/343/203/254/343/203/213/343/202/242/343/203/240.kif +130 -0
  444. data/lib/bioshogi/explain//345/233/262/343/201/204//346/214/257/343/202/212/351/243/233/350/273/212/344/270/262/343/202/253/343/203/204/345/233/262/343/201/204.kif +39 -0
  445. data/lib/bioshogi/explain//345/233/262/343/201/204//346/214/257/343/202/212/351/243/233/350/273/212/345/233/233/346/236/232/347/276/216/346/277/203.kif +57 -0
  446. data/lib/bioshogi/explain//345/233/262/343/201/204//346/214/257/343/202/212/351/243/233/350/273/212/345/244/251/345/256/210/351/226/243/347/276/216/346/277/203.kif +50 -0
  447. data/lib/bioshogi/explain//345/233/262/343/201/204//346/214/257/343/202/212/351/243/233/350/273/212/347/251/264/347/206/212.kif +40 -0
  448. data/lib/bioshogi/explain//345/233/262/343/201/204//346/214/257/343/202/212/351/243/233/350/273/212/347/253/257/347/216/211/351/212/200/345/206/240.kif +39 -0
  449. data/lib/bioshogi/explain//345/233/262/343/201/204//346/214/257/343/202/212/351/243/233/350/273/212/351/212/200/345/206/240/347/251/264/347/206/212.kif +57 -0
  450. data/lib/bioshogi/explain//345/233/262/343/201/204//346/226/207/351/216/256/345/233/262/343/201/204.kif +40 -0
  451. data/lib/bioshogi/explain//345/233/262/343/201/204//346/226/260/345/236/213/351/233/201/346/234/250.kif +53 -0
  452. data/lib/bioshogi/explain//345/233/262/343/201/204//346/227/251/345/233/262/343/201/204.kif +22 -0
  453. data/lib/bioshogi/explain//345/233/262/343/201/204//346/234/250/346/235/221/347/276/216/346/277/203.kif +88 -0
  454. data/lib/bioshogi/explain//345/233/262/343/201/204//346/235/276/345/260/276/346/265/201/347/251/264/347/206/212.kif +84 -0
  455. data/lib/bioshogi/explain//345/233/262/343/201/204//346/241/220/345/261/261/346/265/201/344/270/255/345/216/237/345/233/262/343/201/204.kif +37 -0
  456. data/lib/bioshogi/explain//345/233/262/343/201/204//346/265/201/343/202/214/347/237/242/345/200/211.kif +43 -0
  457. data/lib/bioshogi/explain//345/233/262/343/201/204//347/204/241/346/225/265/345/233/262/343/201/204.kif +136 -0
  458. data/lib/bioshogi/explain//345/233/262/343/201/204//347/204/241/350/262/254/344/273/273/347/237/242/345/200/211.kif +44 -0
  459. data/lib/bioshogi/explain//345/233/262/343/201/204//347/211/207/347/276/216/346/277/203/345/233/262/343/201/204.kif +68 -0
  460. data/lib/bioshogi/explain//345/233/262/343/201/204//347/211/207/351/212/200/345/206/240.kif +50 -0
  461. data/lib/bioshogi/explain//345/233/262/343/201/204//347/237/242/345/200/211/345/217/263/347/216/211.kif +40 -0
  462. data/lib/bioshogi/explain//345/233/262/343/201/204//347/237/242/345/200/211/346/227/251/345/233/262/343/201/204.kif +31 -0
  463. data/lib/bioshogi/explain//345/233/262/343/201/204//347/237/242/345/200/211/347/251/264/347/206/212.kif +86 -0
  464. data/lib/bioshogi/explain//345/233/262/343/201/204//347/245/236/345/220/211/346/265/201/347/251/264/347/206/212.kif +50 -0
  465. data/lib/bioshogi/explain//345/233/262/343/201/204//347/251/272/344/270/255/346/245/274/351/226/243.kif +126 -0
  466. data/lib/bioshogi/explain//345/233/262/343/201/204//347/253/257/347/216/211/351/212/200/345/206/240.kif +88 -0
  467. data/lib/bioshogi/explain//345/233/262/343/201/204//347/256/261/345/205/245/343/202/212/345/250/230.kif +72 -0
  468. data/lib/bioshogi/explain//345/233/262/343/201/204//347/263/270/350/260/267/346/265/201/345/217/263/347/216/211.kif +151 -0
  469. data/lib/bioshogi/explain//345/233/262/343/201/204//347/264/231/347/251/264/347/206/212.kif +194 -0
  470. data/lib/bioshogi/explain//345/233/262/343/201/204//347/267/217/347/237/242/345/200/211.kif +78 -0
  471. data/lib/bioshogi/explain//345/233/262/343/201/204//347/276/216/346/277/203/345/233/262/343/201/204.kif +52 -0
  472. data/lib/bioshogi/explain//345/233/262/343/201/204//347/276/216/346/277/203/347/206/212/345/233/262/343/201/204.kif +50 -0
  473. data/lib/bioshogi/explain//345/233/262/343/201/204//347/276/275/347/224/237/346/265/201/345/217/263/347/216/211.kif +43 -0
  474. data/lib/bioshogi/explain//345/233/262/343/201/204//350/210/237/345/233/262/343/201/204.kif +67 -0
  475. data/lib/bioshogi/explain//345/233/262/343/201/204//350/210/237/345/233/262/343/201/204DX.kif +32 -0
  476. data/lib/bioshogi/explain//345/233/262/343/201/204//350/217/212/346/260/264/347/237/242/345/200/211.kif +93 -0
  477. data/lib/bioshogi/explain//345/233/262/343/201/204//350/217/261/347/237/242/345/200/211.kif +89 -0
  478. data/lib/bioshogi/explain//345/233/262/343/201/204//350/243/217/343/202/242/343/203/222/343/203/253/345/233/262/343/201/204.kif +29 -0
  479. data/lib/bioshogi/explain//345/233/262/343/201/204//350/243/276/345/233/272/343/202/201.kif +36 -0
  480. data/lib/bioshogi/explain//345/233/262/343/201/204//350/247/222/346/217/233/343/202/217/343/202/212/345/217/263/347/216/211.kif +45 -0
  481. data/lib/bioshogi/explain//345/233/262/343/201/204//350/247/222/347/237/242/345/200/211.kif +43 -0
  482. data/lib/bioshogi/explain//345/233/262/343/201/204//350/247/222/351/201/223/344/270/215/347/252/201/343/201/215/345/267/246/347/276/216/346/277/203.kif +25 -0
  483. data/lib/bioshogi/explain//345/233/262/343/201/204//350/261/206/350/205/220/347/237/242/345/200/211.kif +38 -0
  484. data/lib/bioshogi/explain//345/233/262/343/201/204//351/200/243/347/233/237/347/276/216/346/277/203.kif +31 -0
  485. data/lib/bioshogi/explain//345/233/262/343/201/204//351/207/221/345/244/232/344/274/235.kif +41 -0
  486. data/lib/bioshogi/explain//345/233/262/343/201/204//351/207/221/347/204/241/345/217/214.kif +88 -0
  487. data/lib/bioshogi/explain//345/233/262/343/201/204//351/207/221/347/233/276/345/233/262/343/201/204.kif +43 -0
  488. data/lib/bioshogi/explain//345/233/262/343/201/204//351/207/221/347/237/242/345/200/211.kif +78 -0
  489. data/lib/bioshogi/explain//345/233/262/343/201/204//351/207/221/347/276/216/346/277/203.kif +74 -0
  490. data/lib/bioshogi/explain//345/233/262/343/201/204//351/207/221/351/226/200/347/237/242/345/200/211.kif +54 -0
  491. data/lib/bioshogi/explain//345/233/262/343/201/204//351/212/200/345/206/240.kif +76 -0
  492. data/lib/bioshogi/explain//345/233/262/343/201/204//351/212/200/345/206/240/347/251/264/347/206/212.kif +89 -0
  493. data/lib/bioshogi/explain//345/233/262/343/201/204//351/212/200/345/244/232/344/274/235.kif +141 -0
  494. data/lib/bioshogi/explain//345/233/262/343/201/204//351/212/200/347/237/242/345/200/211.kif +72 -0
  495. data/lib/bioshogi/explain//345/233/262/343/201/204//351/212/200/347/253/213/343/201/241/347/237/242/345/200/211.kif +90 -0
  496. data/lib/bioshogi/explain//345/233/262/343/201/204//351/212/200/347/276/216/346/277/203.kif +77 -0
  497. data/lib/bioshogi/explain//345/233/262/343/201/204//351/232/205/347/237/242/345/200/211.kif +61 -0
  498. data/lib/bioshogi/explain//345/233/262/343/201/204//351/233/201/346/234/250/345/217/263/347/216/211.kif +154 -0
  499. data/lib/bioshogi/explain//345/233/262/343/201/204//351/233/242/343/202/214/351/207/221/347/204/241/345/217/214.kif +56 -0
  500. data/lib/bioshogi/explain//345/233/262/343/201/204//351/253/230/347/237/242/345/200/211.kif +56 -0
  501. data/lib/bioshogi/explain//345/233/262/343/201/204//351/253/230/347/276/216/346/277/203/345/233/262/343/201/204.kif +74 -0
  502. data/lib/bioshogi/explain//346/210/246/345/236/213/2/346/211/213/347/233/256/342/226/26374/346/255/251/346/210/246/346/263/225.kif +10 -0
  503. data/lib/bioshogi/explain//346/210/246/345/236/213/2/346/211/213/347/233/256/342/226/263/357/274/223/343/203/213/351/243/233/346/210/246/346/263/225.kif +127 -0
  504. data/lib/bioshogi/explain//346/210/246/345/236/213/33/351/207/221/345/236/213/346/227/251/347/271/260/343/202/212/351/212/200.kif +34 -0
  505. data/lib/bioshogi/explain//346/210/246/345/236/213/4/346/211/213/347/233/256/342/226/263/357/274/223/344/270/211/350/247/222/346/210/246/346/263/225.kif +13 -0
  506. data/lib/bioshogi/explain//346/210/246/345/236/213/5/347/255/213/344/275/215/345/217/226/343/202/212/344/270/255/351/243/233/350/273/212.kif +16 -0
  507. data/lib/bioshogi/explain//346/210/246/345/236/213/GAVA/350/247/222.kif +33 -0
  508. data/lib/bioshogi/explain//346/210/246/345/236/213/UFO/351/212/200.kif +38 -0
  509. data/lib/bioshogi/explain//346/210/246/345/236/213/xaby/350/247/222/346/210/246/346/263/225.kif +18 -0
  510. data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/262/357/274/223/344/270/203/351/212/200/346/210/246/346/263/225.kif +74 -0
  511. data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/262/357/274/224/344/272/224/346/255/251/346/227/251/344/273/225/346/216/233/343/201/221.kif +64 -0
  512. data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/262/357/274/224/345/205/255/351/212/200/345/217/263/346/200/245/346/210/246.kif +41 -0
  513. data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/262/357/274/224/345/205/255/351/212/200/345/267/246/346/200/245/346/210/246.kif +44 -0
  514. data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/262/357/274/225/344/270/203/351/207/221/346/210/246/346/263/225.kif +133 -0
  515. data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/262/357/274/225/344/272/224/351/276/215/344/270/255/351/243/233/350/273/212.kif +31 -0
  516. data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/262/357/274/227/344/272/214/351/243/233/344/272/234/346/200/245/346/210/246.kif +100 -0
  517. data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/262/357/274/227/345/205/253/351/243/233/346/210/246/346/263/225.kif +12 -0
  518. data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/262/357/274/230/344/272/224/351/243/233/350/273/212/346/210/246/346/263/225.kif +77 -0
  519. data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/263/357/274/222/344/270/211/346/255/251/346/210/246/346/263/225.kif +63 -0
  520. data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/263/357/274/223/344/270/211/346/241/202/346/210/246/346/263/225.kif +50 -0
  521. data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/263/357/274/223/344/270/211/350/247/222/345/236/213/347/251/272/344/270/255/346/210/246/346/263/225.kif +60 -0
  522. data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/263/357/274/223/344/270/211/351/243/233/346/210/246/346/263/225.kif +148 -0
  523. data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/263/357/274/224/344/272/224/350/247/222/346/210/246/346/263/225.kif +61 -0
  524. data/lib/bioshogi/explain//346/210/246/345/236/213//343/201/206/343/201/243/343/201/213/343/202/212/344/270/211/351/226/223/351/243/233/350/273/212.kif +18 -0
  525. data/lib/bioshogi/explain//346/210/246/345/236/213//343/201/213/343/201/276/343/201/204/343/201/237/343/201/241/346/210/246/346/263/225.kif +190 -0
  526. data/lib/bioshogi/explain//346/210/246/345/236/213//343/201/215/343/202/223/343/201/250/343/201/206/343/202/223/346/210/246/346/263/225.kif +38 -0
  527. data/lib/bioshogi/explain//346/210/246/345/236/213//343/201/215/357/275/215/343/201/215/357/275/215/351/207/221.kif +21 -0
  528. data/lib/bioshogi/explain//346/210/246/345/236/213//343/201/244/343/201/217/343/201/244/343/201/217/343/201/274/343/201/206/343/201/227/346/210/246/346/263/225.kif +32 -0
  529. data/lib/bioshogi/explain//346/210/246/345/236/213//343/201/257/343/201/217/345/274/217/345/233/233/351/226/223/351/243/233/350/273/212.kif +34 -0
  530. data/lib/bioshogi/explain//346/210/246/345/236/213//343/201/262/343/201/255/343/202/212/351/243/233/350/273/212.kif +51 -0
  531. data/lib/bioshogi/explain//346/210/246/345/236/213//343/202/242/343/203/222/343/203/253/346/210/246/346/263/225.kif +65 -0
  532. data/lib/bioshogi/explain//346/210/246/345/236/213//343/202/246/343/202/275/347/237/242/345/200/211.kif +17 -0
  533. data/lib/bioshogi/explain//346/210/246/345/236/213//343/202/250/343/203/253/343/203/242/346/200/245/346/210/246.kif +44 -0
  534. data/lib/bioshogi/explain//346/210/246/345/236/213//343/202/252/343/202/266/343/203/257/343/202/267/343/202/271/343/203/206/343/203/240.kif +194 -0
  535. data/lib/bioshogi/explain//346/210/246/345/236/213//343/202/253/343/203/213/343/202/253/343/203/213/351/207/221.kif +43 -0
  536. data/lib/bioshogi/explain//346/210/246/345/236/213//343/202/253/343/203/213/343/202/253/343/203/213/351/212/200.kif +83 -0
  537. data/lib/bioshogi/explain//346/210/246/345/236/213//343/202/253/343/203/241/343/203/254/343/202/252/343/203/263/346/210/246/346/263/225.kif +29 -0
  538. data/lib/bioshogi/explain//346/210/246/345/236/213//343/202/264/343/202/255/343/202/262/343/203/263/344/270/255/351/243/233/350/273/212.kif +16 -0
  539. data/lib/bioshogi/explain//346/210/246/345/236/213//343/202/267/343/203/247/343/203/274/343/203/200/343/203/263/343/202/252/343/203/252/343/202/270/343/203/212/343/203/253.kif +123 -0
  540. data/lib/bioshogi/explain//346/210/246/345/236/213//343/202/267/343/203/247/343/203/274/343/203/200/343/203/263/343/202/267/343/202/271/343/203/206/343/203/240.kif +151 -0
  541. data/lib/bioshogi/explain//346/210/246/345/236/213//343/202/277/343/203/251/343/203/263/343/203/201/343/203/245/343/203/251/346/210/246/346/263/225.kif +29 -0
  542. data/lib/bioshogi/explain//346/210/246/345/236/213//343/203/200/343/202/244/343/203/254/343/202/257/343/203/210/345/220/221/343/201/213/343/201/204/351/243/233/350/273/212.kif +28 -0
  543. data/lib/bioshogi/explain//346/210/246/345/236/213//343/203/204/343/203/216/351/212/200/344/270/255/351/243/233/350/273/212.kif +102 -0
  544. data/lib/bioshogi/explain//346/210/246/345/236/213//343/203/210/343/203/236/343/203/233/343/203/274/343/202/257.kif +128 -0
  545. data/lib/bioshogi/explain//346/210/246/345/236/213//343/203/216/343/203/274/343/202/254/343/203/274/343/203/211/346/210/246/346/263/225.kif +34 -0
  546. data/lib/bioshogi/explain//346/210/246/345/236/213//343/203/221/343/203/203/343/202/257/343/203/236/343/203/263/346/210/246/346/263/225.kif +23 -0
  547. data/lib/bioshogi/explain//346/210/246/345/236/213//343/203/235/343/203/263/343/203/235/343/203/263/346/241/202.kif +115 -0
  548. data/lib/bioshogi/explain//346/210/246/345/236/213//343/203/240/343/203/252/343/203/244/343/203/252/346/227/251/347/237/263/347/224/260.kif +16 -0
  549. data/lib/bioshogi/explain//346/210/246/345/236/213//343/203/241/343/202/244/343/203/211/343/202/267/343/202/271/343/203/206/343/203/240.kif +14 -0
  550. data/lib/bioshogi/explain//346/210/246/345/236/213//343/203/241/343/203/252/343/202/261/343/203/263/345/220/221/343/201/213/343/201/204/351/243/233/350/273/212.kif +29 -0
  551. data/lib/bioshogi/explain//346/210/246/345/236/213//343/203/254/343/202/260/343/202/271/343/203/232.kif +46 -0
  552. data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/200/346/211/213/346/220/215/350/247/222/346/217/233/343/202/217/343/202/212.kif +14 -0
  553. data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/200/347/233/264/347/267/232/347/251/264/347/206/212.kif +128 -0
  554. data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/200/351/226/223/351/243/233/350/273/212.kif +63 -0
  555. data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/200/351/226/223/351/243/233/350/273/212/347/251/264/347/206/212.kif +30 -0
  556. data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/211/351/226/223/351/243/233/350/273/212.kif +52 -0
  557. data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/211/351/226/223/351/243/233/350/273/212/343/203/237/343/203/254/343/203/213/343/202/242/343/203/240.kif +30 -0
  558. data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/255/345/216/237/346/265/201/346/200/245/346/210/246/347/237/242/345/200/211.kif +99 -0
  559. data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/255/345/216/237/346/265/201/347/233/270/346/216/233/343/201/213/343/202/212.kif +89 -0
  560. data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/255/345/216/237/351/243/233/350/273/212.kif +89 -0
  561. data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/255/347/224/260/345/212/237XP.kif +133 -0
  562. data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/255/351/243/233/350/273/212/343/203/237/343/203/254/343/203/213/343/202/242/343/203/240.kif +33 -0
  563. data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/255/351/243/233/350/273/212/345/267/246/347/251/264/347/206/212.kif +95 -0
  564. data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/270/345/261/261/343/203/257/343/202/257/343/203/201/343/203/263.kif +23 -0
  565. data/lib/bioshogi/explain//346/210/246/345/236/213//344/271/205/345/244/242/346/265/201.kif +61 -0
  566. data/lib/bioshogi/explain//346/210/246/345/236/213//345/205/210/346/211/213/344/270/255/351/243/233/350/273/212.kif +17 -0
  567. data/lib/bioshogi/explain//346/210/246/345/236/213//345/210/235/346/211/213/357/274/223/345/205/255/346/255/251/346/210/246/346/263/225.kif +11 -0
  568. data/lib/bioshogi/explain//346/210/246/345/236/213//345/210/235/346/211/213/357/274/227/345/205/253/351/212/200/346/210/246/346/263/225.kif +29 -0
  569. data/lib/bioshogi/explain//346/210/246/345/236/213//345/212/233/346/210/246.kif +26 -0
  570. data/lib/bioshogi/explain//346/210/246/345/236/213//345/212/240/350/227/244/346/265/201/350/242/226/351/243/233/350/273/212.kif +85 -0
  571. data/lib/bioshogi/explain//346/210/246/345/236/213//345/213/207/346/260/227/346/265/201.kif +31 -0
  572. data/lib/bioshogi/explain//346/210/246/345/236/213//345/215/207/347/224/260/345/274/217/347/237/263/347/224/260/346/265/201.kif +89 -0
  573. data/lib/bioshogi/explain//346/210/246/345/236/213//345/216/237/345/247/213/344/270/255/351/243/233/350/273/212.kif +12 -0
  574. data/lib/bioshogi/explain//346/210/246/345/236/213//345/216/237/345/247/213/346/243/222/351/212/200.kif +47 -0
  575. data/lib/bioshogi/explain//346/210/246/345/236/213//345/217/263/345/233/233/351/226/223/351/243/233/350/273/212.kif +82 -0
  576. data/lib/bioshogi/explain//346/210/246/345/236/213//345/217/263/345/233/233/351/226/223/351/243/233/350/273/212/345/267/246/347/276/216/346/277/203.kif +87 -0
  577. data/lib/bioshogi/explain//346/210/246/345/236/213//345/217/263/345/233/233/351/226/223/351/243/233/350/273/212/346/200/245/346/210/246.kif +79 -0
  578. data/lib/bioshogi/explain//346/210/246/345/236/213//345/220/221/343/201/213/343/201/204/351/243/233/350/273/212.kif +55 -0
  579. data/lib/bioshogi/explain//346/210/246/345/236/213//345/233/233/346/211/213/350/247/222.kif +78 -0
  580. data/lib/bioshogi/explain//346/210/246/345/236/213//345/233/233/351/226/223/351/243/233/350/273/212.kif +60 -0
  581. data/lib/bioshogi/explain//346/210/246/345/236/213//345/233/233/351/226/223/351/243/233/350/273/212/343/203/237/343/203/254/343/203/213/343/202/242/343/203/240.kif +32 -0
  582. data/lib/bioshogi/explain//346/210/246/345/236/213//345/234/260/344/270/213/351/211/204/351/243/233/350/273/212.kif +102 -0
  583. data/lib/bioshogi/explain//346/210/246/345/236/213//345/241/232/347/224/260/343/202/271/343/203/232/343/202/267/343/203/243/343/203/253.kif +95 -0
  584. data/lib/bioshogi/explain//346/210/246/345/236/213//345/254/211/351/207/216/346/265/201.kif +9 -0
  585. data/lib/bioshogi/explain//346/210/246/345/236/213//345/257/276/346/214/257/343/202/212/346/214/201/344/271/205/346/210/246.kif +72 -0
  586. data/lib/bioshogi/explain//346/210/246/345/236/213//345/261/213/346/225/267/346/265/201/344/272/214/346/236/232/351/212/200.kif +77 -0
  587. data/lib/bioshogi/explain//346/210/246/345/236/213//345/261/213/346/225/267/346/265/201/344/272/214/346/236/232/351/212/200/346/243/222/351/212/200/345/236/213.kif +60 -0
  588. data/lib/bioshogi/explain//346/210/246/345/236/213//345/261/261/345/264/216/346/265/201/343/203/221/343/203/203/343/202/257/343/203/236/343/203/263.kif +13 -0
  589. data/lib/bioshogi/explain//346/210/246/345/236/213//345/267/246/347/276/216/346/277/203/346/200/245/346/210/246.kif +76 -0
  590. data/lib/bioshogi/explain//346/210/246/345/236/213//345/271/263/347/233/256.kif +110 -0
  591. data/lib/bioshogi/explain//346/210/246/345/236/213//345/271/273/346/203/263/345/233/233/351/226/223/351/243/233/350/273/212.kif +49 -0
  592. data/lib/bioshogi/explain//346/210/246/345/236/213//346/211/213/345/276/227/350/247/222/344/272/244/346/217/233/345/236/213.kif +14 -0
  593. data/lib/bioshogi/explain//346/210/246/345/236/213//346/211/213/346/220/215/350/247/222/344/272/244/346/217/233/345/236/213.kif +12 -0
  594. data/lib/bioshogi/explain//346/210/246/345/236/213//346/226/260/344/270/270/345/261/261/343/203/257/343/202/257/343/203/201/343/203/263.kif +24 -0
  595. data/lib/bioshogi/explain//346/210/246/345/236/213//346/226/260/345/254/211/351/207/216/346/265/201.kif +15 -0
  596. data/lib/bioshogi/explain//346/210/246/345/236/213//346/226/260/346/235/221/347/224/260/343/202/267/343/202/271/343/203/206/343/203/240.kif +117 -0
  597. data/lib/bioshogi/explain//346/210/246/345/236/213//346/226/260/347/237/263/347/224/260/346/265/201.kif +90 -0
  598. data/lib/bioshogi/explain//346/210/246/345/236/213//346/226/260/347/261/263/351/225/267/347/216/211.kif +10 -0
  599. data/lib/bioshogi/explain//346/210/246/345/236/213//346/226/260/351/242/250/350/273/212.kif +44 -0
  600. data/lib/bioshogi/explain//346/210/246/345/236/213//346/226/260/351/254/274/346/256/272/343/201/227.kif +113 -0
  601. data/lib/bioshogi/explain//346/210/246/345/236/213//346/227/251/347/237/263/347/224/260.kif +68 -0
  602. data/lib/bioshogi/explain//346/210/246/345/236/213//346/232/264/351/212/200.kif +37 -0
  603. data/lib/bioshogi/explain//346/210/246/345/236/213//346/234/250/346/235/221/345/256/232/350/267/241.kif +138 -0
  604. data/lib/bioshogi/explain//346/210/246/345/236/213//346/235/221/347/224/260/343/202/267/343/202/271/343/203/206/343/203/240.kif +19 -0
  605. data/lib/bioshogi/explain//346/210/246/345/236/213//346/243/222/347/216/211.kif +80 -0
  606. data/lib/bioshogi/explain//346/210/246/345/236/213//346/243/222/351/207/221.kif +52 -0
  607. data/lib/bioshogi/explain//346/210/246/345/236/213//346/243/222/351/212/200.kif +65 -0
  608. data/lib/bioshogi/explain//346/210/246/345/236/213//346/243/256/344/270/213/343/202/267/343/202/271/343/203/206/343/203/240.kif +118 -0
  609. data/lib/bioshogi/explain//346/210/246/345/236/213//346/245/240/346/234/254/345/274/217/347/237/263/347/224/260/346/265/201.kif +122 -0
  610. data/lib/bioshogi/explain//346/210/246/345/236/213//346/245/265/351/231/220/346/227/251/347/271/260/343/202/212/351/212/200.kif +51 -0
  611. data/lib/bioshogi/explain//346/210/246/345/236/213//346/250/252/346/255/251/345/217/226/343/202/212.kif +50 -0
  612. data/lib/bioshogi/explain//346/210/246/345/236/213//346/270/205/351/207/216/346/265/201/345/262/220/351/230/234/346/210/246/346/263/225.kif +61 -0
  613. data/lib/bioshogi/explain//346/210/246/345/236/213//347/216/211/351/240/255/344/275/215/345/217/226/343/202/212.kif +35 -0
  614. data/lib/bioshogi/explain//346/210/246/345/236/213//347/216/211/351/240/255/351/212/200.kif +68 -0
  615. data/lib/bioshogi/explain//346/210/246/345/236/213//347/233/256/343/201/217/343/202/211/343/201/276/343/201/227/346/210/246/346/263/225.kif +18 -0
  616. data/lib/bioshogi/explain//346/210/246/345/236/213//347/233/270/346/214/257/343/202/212/351/243/233/350/273/212.kif +14 -0
  617. data/lib/bioshogi/explain//346/210/246/345/236/213//347/233/270/346/216/233/343/201/213/343/202/212.kif +45 -0
  618. data/lib/bioshogi/explain//346/210/246/345/236/213//347/233/270/346/216/233/343/201/213/343/202/212/346/243/222/351/212/200.kif +33 -0
  619. data/lib/bioshogi/explain//346/210/246/345/236/213//347/233/270/346/250/252/346/255/251/345/217/226/343/202/212.kif +72 -0
  620. data/lib/bioshogi/explain//346/210/246/345/236/213//347/233/270/347/255/213/351/201/225/343/201/204/350/247/222.kif +45 -0
  621. data/lib/bioshogi/explain//346/210/246/345/236/213//347/234/237/351/203/250/346/265/201.kif +117 -0
  622. data/lib/bioshogi/explain//346/210/246/345/236/213//347/237/242/345/200/211/344/270/255/351/243/233/350/273/212.kif +71 -0
  623. data/lib/bioshogi/explain//346/210/246/345/236/213//347/237/242/345/200/211/345/267/246/347/276/216/346/277/203/346/200/245/346/210/246.kif +122 -0
  624. data/lib/bioshogi/explain//346/210/246/345/236/213//347/237/242/345/200/211/346/243/222/351/212/200.kif +88 -0
  625. data/lib/bioshogi/explain//346/210/246/345/236/213//347/237/263/347/224/260/346/265/201.kif +58 -0
  626. data/lib/bioshogi/explain//346/210/246/345/236/213//347/250/262/345/272/255/346/210/246/346/263/225.kif +31 -0
  627. data/lib/bioshogi/explain//346/210/246/345/236/213//347/251/264/350/247/222/345/220/221/343/201/213/343/201/204/351/243/233/350/273/212.kif +18 -0
  628. data/lib/bioshogi/explain//346/210/246/345/236/213//347/251/264/350/247/222/346/210/246/346/263/225.kif +133 -0
  629. data/lib/bioshogi/explain//346/210/246/345/236/213//347/253/213/347/237/263/346/265/201/345/233/233/351/226/223/351/243/233/350/273/212.kif +43 -0
  630. data/lib/bioshogi/explain//346/210/246/345/236/213//347/253/257/346/243/222/351/212/200.kif +66 -0
  631. data/lib/bioshogi/explain//346/210/246/345/236/213//347/255/213/351/201/225/343/201/204/350/247/222.kif +78 -0
  632. data/lib/bioshogi/explain//346/210/246/345/236/213//347/261/263/351/225/267/346/265/201/346/200/245/346/210/246/347/237/242/345/200/211.kif +172 -0
  633. data/lib/bioshogi/explain//346/210/246/345/236/213//347/276/275/347/224/237/345/274/217/350/242/226/351/243/233/350/273/212.kif +172 -0
  634. data/lib/bioshogi/explain//346/210/246/345/236/213//350/200/200/351/276/215/343/201/262/343/201/255/343/202/212/351/243/233/350/273/212.kif +24 -0
  635. data/lib/bioshogi/explain//346/210/246/345/236/213//350/200/200/351/276/215/345/233/233/351/226/223/351/243/233/350/273/212.kif +50 -0
  636. data/lib/bioshogi/explain//346/210/246/345/236/213//350/204/207/343/202/267/343/202/271/343/203/206/343/203/240.kif +100 -0
  637. data/lib/bioshogi/explain//346/210/246/345/236/213//350/205/260/346/216/233/343/201/221/351/212/200.kif +73 -0
  638. data/lib/bioshogi/explain//346/210/246/345/236/213//350/212/261/346/235/221/346/265/201/345/220/215/345/217/244/345/261/213/346/210/246/346/263/225.kif +72 -0
  639. data/lib/bioshogi/explain//346/210/246/345/236/213//350/213/261/343/201/241/343/202/203/343/202/223/346/265/201/344/270/255/351/243/233/350/273/212.kif +64 -0
  640. data/lib/bioshogi/explain//346/210/246/345/236/213//350/213/261/346/230/245/346/265/201/343/202/253/343/203/241/343/203/254/343/202/252/343/203/263.kif +135 -0
  641. data/lib/bioshogi/explain//346/210/246/345/236/213//350/217/205/344/272/225/346/265/201/344/270/211/351/226/223/351/243/233/350/273/212.kif +23 -0
  642. data/lib/bioshogi/explain//346/210/246/345/236/213//350/217/234/343/200/205/346/262/263/346/265/201/342/226/263/357/274/224/345/233/233/350/247/222.kif +14 -0
  643. data/lib/bioshogi/explain//346/210/246/345/236/213//350/217/234/343/200/205/346/262/263/346/265/201/345/220/221/343/201/213/343/201/204/351/243/233/350/273/212.kif +24 -0
  644. data/lib/bioshogi/explain//346/210/246/345/236/213//350/227/244/344/272/225/343/202/267/343/202/271/343/203/206/343/203/240.kif +73 -0
  645. data/lib/bioshogi/explain//346/210/246/345/236/213//350/227/244/346/243/256/346/265/201/346/200/245/346/210/246/347/237/242/345/200/211.kif +63 -0
  646. data/lib/bioshogi/explain//346/210/246/345/236/213//350/242/226/351/243/233/350/273/212.kif +60 -0
  647. data/lib/bioshogi/explain//346/210/246/345/236/213//350/243/217/343/202/242/343/203/222/343/203/253/346/210/246/346/263/225.kif +29 -0
  648. data/lib/bioshogi/explain//346/210/246/345/236/213//350/247/222/344/272/244/346/217/233/345/236/213.kif +19 -0
  649. data/lib/bioshogi/explain//346/210/246/345/236/213//350/247/222/344/272/244/346/217/233/346/214/257/343/202/212/351/243/233/350/273/212.kif +64 -0
  650. data/lib/bioshogi/explain//346/210/246/345/236/213//350/247/222/346/217/233/343/202/217/343/202/212.kif +20 -0
  651. data/lib/bioshogi/explain//346/210/246/345/236/213//350/247/222/346/217/233/343/202/217/343/202/212/346/226/260/345/236/213.kif +49 -0
  652. data/lib/bioshogi/explain//346/210/246/345/236/213//350/247/222/346/217/233/343/202/217/343/202/212/346/227/251/347/271/260/343/202/212/351/212/200.kif +76 -0
  653. data/lib/bioshogi/explain//346/210/246/345/236/213//350/247/222/346/217/233/343/202/217/343/202/212/346/243/222/351/212/200.kif +65 -0
  654. data/lib/bioshogi/explain//346/210/246/345/236/213//350/247/222/346/217/233/343/202/217/343/202/212/350/205/260/346/216/233/343/201/221/351/212/200.kif +76 -0
  655. data/lib/bioshogi/explain//346/210/246/345/236/213//350/247/222/351/201/223/343/202/252/343/203/274/343/203/227/343/203/263/345/233/233/351/226/223/351/243/233/350/273/212.kif +12 -0
  656. data/lib/bioshogi/explain//346/210/246/345/236/213//350/247/222/351/240/255/346/255/251/346/210/246/346/263/225.kif +15 -0
  657. data/lib/bioshogi/explain//346/210/246/345/236/213//350/266/205/346/200/245/346/210/246.kif +28 -0
  658. data/lib/bioshogi/explain//346/210/246/345/236/213//350/266/205/351/200/237/342/226/262/357/274/223/344/270/203/351/212/200.kif +116 -0
  659. data/lib/bioshogi/explain//346/210/246/345/236/213//351/201/240/345/261/261/346/265/201.kif +98 -0
  660. data/lib/bioshogi/explain//346/210/246/345/236/213//351/203/275/346/210/220/346/265/201/342/226/263/357/274/223/344/270/200/351/207/221.kif +28 -0
  661. data/lib/bioshogi/explain//346/210/246/345/236/213//351/207/221/351/212/200/346/251/213.kif +50 -0
  662. data/lib/bioshogi/explain//346/210/246/345/236/213//351/212/200/351/233/262/351/233/200.kif +38 -0
  663. data/lib/bioshogi/explain//346/210/246/345/236/213//351/216/226/351/216/214/351/212/200.kif +77 -0
  664. data/lib/bioshogi/explain//346/210/246/345/236/213//351/230/252/347/224/260/346/265/201/345/220/221/351/243/233/350/273/212.kif +87 -0
  665. data/lib/bioshogi/explain//346/210/246/345/236/213//351/230/277/344/271/205/346/264/245/346/265/201/346/200/245/346/210/246/347/237/242/345/200/211.kif +74 -0
  666. data/lib/bioshogi/explain//346/210/246/345/236/213//351/231/275/345/213/225/346/214/257/343/202/212/351/243/233/350/273/212.kif +62 -0
  667. data/lib/bioshogi/explain//346/210/246/345/236/213//351/233/200/345/210/272/343/201/227.kif +140 -0
  668. data/lib/bioshogi/explain//346/210/246/345/236/213//351/235/222/351/207/216/346/265/201.kif +31 -0
  669. data/lib/bioshogi/explain//346/210/246/345/236/213//351/242/250/350/273/212.kif +134 -0
  670. data/lib/bioshogi/explain//346/210/246/345/236/213//351/243/257/345/263/266/346/265/201/345/274/225/343/201/215/350/247/222/346/210/246/346/263/225.kif +42 -0
  671. data/lib/bioshogi/explain//346/210/246/345/236/213//351/243/257/345/263/266/346/265/201/347/233/270/346/216/233/343/201/213/343/202/212/345/274/225/343/201/215/350/247/222/346/210/246/346/263/225.kif +49 -0
  672. data/lib/bioshogi/explain//346/210/246/345/236/213//351/253/230/347/224/260/346/265/201/345/267/246/347/216/211.kif +60 -0
  673. data/lib/bioshogi/explain//346/210/246/345/236/213//351/254/274/346/256/272/343/201/227.kif +173 -0
  674. data/lib/bioshogi/explain//346/210/246/345/236/213//351/254/274/346/256/272/343/201/227/345/220/221/343/201/213/343/201/204/351/243/233/350/273/212.kif +73 -0
  675. data/lib/bioshogi/explain//346/210/246/345/236/213//351/255/224/347/225/214/345/233/233/351/226/223/351/243/233/350/273/212.kif +25 -0
  676. data/lib/bioshogi/explain//346/210/246/345/236/213//351/263/245/345/210/272/343/201/227.kif +32 -0
  677. data/lib/bioshogi/explain//346/210/246/345/236/213//351/267/272/345/256/256/345/256/232/350/267/241.kif +72 -0
  678. data/lib/bioshogi/explain//346/210/246/345/236/213//357/274/224/342/206/222/357/274/223/346/210/246/346/263/225.kif +72 -0
  679. data/lib/bioshogi/explain//346/210/246/345/236/213//357/274/226/347/255/213/344/275/215/345/217/226/343/202/212.kif +42 -0
  680. data/lib/bioshogi/explain//346/211/213/347/255/213//343/201/265/343/202/223/343/201/251/343/201/227/343/201/256/346/241/202.kif +25 -0
  681. data/lib/bioshogi/explain//346/211/213/347/255/213//343/203/221/343/203/263/343/203/204/343/202/222/350/204/261/343/201/220.kif +28 -0
  682. data/lib/bioshogi/explain//346/211/213/347/255/213//343/203/255/343/202/261/343/203/203/343/203/210.kif +25 -0
  683. data/lib/bioshogi/explain//346/211/213/347/255/213//345/211/262/343/202/212/346/211/223/343/201/241/343/201/256/351/212/200.kif +28 -0
  684. data/lib/bioshogi/explain//346/211/213/347/255/213//345/236/202/343/202/214/346/255/251.kif +25 -0
  685. data/lib/bioshogi/explain//346/211/213/347/255/213//345/271/275/351/234/212/350/247/222.kif +36 -0
  686. data/lib/bioshogi/explain//346/211/213/347/255/213//346/241/202/351/240/255/343/201/256/351/212/200.kif +25 -0
  687. data/lib/bioshogi/explain//346/211/213/347/255/213//347/266/231/343/201/216/346/241/202.kif +25 -0
  688. data/lib/bioshogi/explain//346/211/213/347/255/213//350/205/271/351/212/200.kif +25 -0
  689. data/lib/bioshogi/explain//346/211/213/347/255/213//351/201/240/350/246/213/343/201/256/350/247/222.kif +25 -0
  690. data/lib/bioshogi/explain//346/211/213/347/255/213//351/207/221/345/272/225/343/201/256/346/255/251.kif +30 -0
  691. data/lib/bioshogi/explain//346/211/213/347/255/213//351/212/200/345/206/240/343/201/256/345/260/217/351/203/250/345/261/213.kif +86 -0
  692. data/lib/bioshogi/extreme_validator.rb +145 -0
  693. data/lib/bioshogi/formatter/akf_builder.rb +79 -0
  694. data/lib/bioshogi/formatter/animation/animation_apng_builder.rb +18 -0
  695. data/lib/bioshogi/formatter/animation/animation_builder_timeout.rb +28 -0
  696. data/lib/bioshogi/formatter/animation/animation_gif_builder.rb +166 -0
  697. data/lib/bioshogi/formatter/animation/animation_mp4_builder.rb +370 -0
  698. data/lib/bioshogi/formatter/animation/animation_webp_builder.rb +14 -0
  699. data/lib/bioshogi/formatter/animation/animation_zip_builder.rb +72 -0
  700. data/lib/bioshogi/formatter/animation/audio_theme_info.rb +97 -0
  701. data/lib/bioshogi/formatter/animation/demo_builder.rb +58 -0
  702. data/lib/bioshogi/formatter/animation/ffmpeg_support.rb +110 -0
  703. data/lib/bioshogi/formatter/animation/progress_cop.rb +114 -0
  704. data/lib/bioshogi/formatter/animation/serial_filename_generator.rb +55 -0
  705. data/lib/bioshogi/formatter/animation/system_support.rb +60 -0
  706. data/lib/bioshogi/formatter/core.rb +239 -0
  707. data/lib/bioshogi/formatter/csa_builder.rb +150 -0
  708. data/lib/bioshogi/formatter/ki2_builder.rb +58 -0
  709. data/lib/bioshogi/formatter/kif_builder.rb +83 -0
  710. data/lib/bioshogi/formatter/kif_ki2_shared.rb +144 -0
  711. data/lib/bioshogi/formatter/last_action_info.rb +77 -0
  712. data/lib/bioshogi/formatter/parser_methods.rb +37 -0
  713. data/lib/bioshogi/formatter/runner.rb +44 -0
  714. data/lib/bioshogi/formatter/skill_embed.rb +174 -0
  715. data/lib/bioshogi/hand/drop.rb +78 -0
  716. data/lib/bioshogi/hand/move.rb +114 -0
  717. data/lib/bioshogi/hand/shared.rb +102 -0
  718. data/lib/bioshogi/hand_log.rb +72 -0
  719. data/lib/bioshogi/hand_logs.rb +21 -0
  720. data/lib/bioshogi/hand_logs_mod.rb +29 -0
  721. data/lib/bioshogi/input_adapter/abstract_adapter.rb +126 -0
  722. data/lib/bioshogi/input_adapter/csa_adapter.rb +56 -0
  723. data/lib/bioshogi/input_adapter/ki2_adapter.rb +155 -0
  724. data/lib/bioshogi/input_adapter/ki2_motion_wrapper.rb +42 -0
  725. data/lib/bioshogi/input_adapter/ki2_place_methods.rb +50 -0
  726. data/lib/bioshogi/input_adapter/kif_adapter.rb +64 -0
  727. data/lib/bioshogi/input_adapter/location_validation.rb +23 -0
  728. data/lib/bioshogi/input_adapter/origin_soldier_methods.rb +24 -0
  729. data/lib/bioshogi/input_adapter/sfen_adapter.rb +60 -0
  730. data/lib/bioshogi/input_adapter/shared_validation.rb +110 -0
  731. data/lib/bioshogi/input_parser.rb +74 -0
  732. data/lib/bioshogi/kanji_number.rb +128 -0
  733. data/lib/bioshogi/kifu_format_info.rb +15 -0
  734. data/lib/bioshogi/location.rb +131 -0
  735. data/lib/bioshogi/logger.rb +5 -0
  736. data/lib/bioshogi/main_clock.rb +21 -0
  737. data/lib/bioshogi/media.rb +85 -0
  738. data/lib/bioshogi/official_formatter.rb +433 -0
  739. data/lib/bioshogi/order_info.rb +12 -0
  740. data/lib/bioshogi/parser/base.rb +61 -0
  741. data/lib/bioshogi/parser/bod_parser.rb +8 -0
  742. data/lib/bioshogi/parser/csa_parser.rb +198 -0
  743. data/lib/bioshogi/parser/header.rb +82 -0
  744. data/lib/bioshogi/parser/inspector.rb +47 -0
  745. data/lib/bioshogi/parser/kakinoki_methods.rb +125 -0
  746. data/lib/bioshogi/parser/ki2_parser.rb +39 -0
  747. data/lib/bioshogi/parser/kif_parser.rb +60 -0
  748. data/lib/bioshogi/parser/pi.rb +45 -0
  749. data/lib/bioshogi/parser/sfen_parser.rb +26 -0
  750. data/lib/bioshogi/parser/time_parser.rb +24 -0
  751. data/lib/bioshogi/parser.rb +40 -0
  752. data/lib/bioshogi/piece/ek_score_info.rb +22 -0
  753. data/lib/bioshogi/piece/piece_csa.rb +31 -0
  754. data/lib/bioshogi/piece/piece_pressure.rb +23 -0
  755. data/lib/bioshogi/piece/piece_scale.rb +19 -0
  756. data/lib/bioshogi/piece/piece_score.rb +31 -0
  757. data/lib/bioshogi/piece/piece_vector.rb +156 -0
  758. data/lib/bioshogi/piece/yomiage_piece_info.rb +31 -0
  759. data/lib/bioshogi/piece.rb +276 -0
  760. data/lib/bioshogi/piece_box.rb +152 -0
  761. data/lib/bioshogi/place.rb +171 -0
  762. data/lib/bioshogi/player/other_methods.rb +60 -0
  763. data/lib/bioshogi/player/piece_box_methods.rb +33 -0
  764. data/lib/bioshogi/player/pressure_methods.rb +37 -0
  765. data/lib/bioshogi/player/soldier_methods.rb +45 -0
  766. data/lib/bioshogi/player.rb +101 -0
  767. data/lib/bioshogi/player_executor/base.rb +120 -0
  768. data/lib/bioshogi/player_executor/brain.rb +7 -0
  769. data/lib/bioshogi/player_executor/error_handler.rb +49 -0
  770. data/lib/bioshogi/player_executor/human.rb +8 -0
  771. data/lib/bioshogi/player_executor/without_monitor.rb +7 -0
  772. data/lib/bioshogi/preset_info.rb +130 -0
  773. data/lib/bioshogi/rect.rb +6 -0
  774. data/lib/bioshogi/screen_image/README.org +14 -0
  775. data/lib/bioshogi/screen_image/board_methods.rb +148 -0
  776. data/lib/bioshogi/screen_image/color_theme_info.rb +137 -0
  777. data/lib/bioshogi/screen_image/core_methods.rb +337 -0
  778. data/lib/bioshogi/screen_image/font_theme_info.rb +35 -0
  779. data/lib/bioshogi/screen_image/helper.rb +73 -0
  780. data/lib/bioshogi/screen_image/layer_methods.rb +87 -0
  781. data/lib/bioshogi/screen_image/palette_info.rb +15 -0
  782. data/lib/bioshogi/screen_image/pentagon.rb +167 -0
  783. data/lib/bioshogi/screen_image/piece_font_weight_info.rb +12 -0
  784. data/lib/bioshogi/screen_image/renderer.rb +15 -0
  785. data/lib/bioshogi/screen_image/soldier_methods.rb +136 -0
  786. data/lib/bioshogi/screen_image/stand.rb +132 -0
  787. data/lib/bioshogi/screen_image/turn_methods.rb +45 -0
  788. data/lib/bioshogi/screen_image.rb +11 -0
  789. data/lib/bioshogi/sfen.rb +120 -0
  790. data/lib/bioshogi/sfen_importer.rb +29 -0
  791. data/lib/bioshogi/simple_model.rb +13 -0
  792. data/lib/bioshogi/simulator.rb +44 -0
  793. data/lib/bioshogi/single_clock.rb +36 -0
  794. data/lib/bioshogi/soldier.rb +293 -0
  795. data/lib/bioshogi/soldier_box.rb +38 -0
  796. data/lib/bioshogi/soldier_walker.rb +122 -0
  797. data/lib/bioshogi/source.rb +30 -0
  798. data/lib/bioshogi/tasks/about.rake +5 -0
  799. data/lib/bioshogi/tasks/chore.rake +8 -0
  800. data/lib/bioshogi/tasks/clean.rake +4 -0
  801. data/lib/bioshogi/tasks/color_theme.rake +9 -0
  802. data/lib/bioshogi/tasks/demo.rake +11 -0
  803. data/lib/bioshogi/tasks/doc.rake +11 -0
  804. data/lib/bioshogi/tasks/extreme_validator.rake +8 -0
  805. data/lib/bioshogi/tasks/generate.rake +9 -0
  806. data/lib/bioshogi/tasks/loader.rake +9 -0
  807. data/lib/bioshogi/tasks/normalize.rake +8 -0
  808. data/lib/bioshogi/tasks/tactic_validator.rake +8 -0
  809. data/lib/bioshogi/tasks/test.rake +41 -0
  810. data/lib/bioshogi/turn_info.rb +67 -0
  811. data/lib/bioshogi/v/once_vector.rb +10 -0
  812. data/lib/bioshogi/v/repeat_vector.rb +10 -0
  813. data/lib/bioshogi/v.rb +77 -0
  814. data/lib/bioshogi/vector_constants.rb +4 -0
  815. data/lib/bioshogi/version.rb +3 -0
  816. data/lib/bioshogi/yomiage/formatter.rb +31 -0
  817. data/lib/bioshogi/yomiage/kanji_info.rb +19 -0
  818. data/lib/bioshogi/yomiage/number_info.rb +18 -0
  819. data/lib/bioshogi.rb +62 -0
  820. metadata +1149 -0
@@ -0,0 +1,9 @@
1
+ |-------------------+------------+----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
2
+ | name | 書体 | 作者 | |
3
+ |-------------------+------------+----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
4
+ | Noto Sans JP | ゴシック | Google | https://fonts.google.com/specimen/Noto+Sans+JP?subset=japanese |
5
+ | Noto Serif JP | 明朝体 | Google | https://fonts.google.com/specimen/Noto+Serif+JP?subset=japanese |
6
+ | Yusei Magic | ゴシック | Tanukizamurai | https://fonts.google.com/specimen/Yusei+Magic?subset=japanese&preview.text=%E7%8E%8B%E7%8E%89%E9%A3%9B%E8%A7%92%E9%87%91%E9%8A%80%E6%A1%82%E9%A6%99%E6%AD%A9%E6%AD%A9%E4%B9%9D%E5%85%AB%E4%B8%83%E5%85%AD%E4%BA%940123456789%E5%85%88%E6%89%8B%E5%BE%8C%E6%89%8B&preview.layout=row&preview.text_type=custom&query=Yusei |
7
+ | New Tegomin | 揺れ明朝 | Kousuke Nagai | https://fonts.google.com/specimen/New+Tegomin?subset=japanese&preview.text=%E7%8E%8B%E7%8E%89%E9%A3%9B%E8%A7%92%E9%87%91%E9%8A%80%E6%A1%82%E9%A6%99%E6%AD%A9%E6%AD%A9%E4%B9%9D%E5%85%AB%E4%B8%83%E5%85%AD%E4%BA%940123456789%E5%85%88%E6%89%8B%E5%BE%8C%E6%89%8B&preview.layout=row&preview.text_type=custom#standard-styles |
8
+ | M PLUS Rounded 1c | 丸ゴシック | Coji Morishita, M+ Fonts Project | https://fonts.google.com/specimen/M+PLUS+Rounded+1c?subset=japanese |
9
+ |-------------------+------------+----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
File without changes
@@ -0,0 +1,9 @@
1
+ |--------------+----------------------------------------------------------------------+----------------------+
2
+ | matrix*.png | ../../../../../rmagick-examples/*_matrix.rb の実行 | |
3
+ | checker*.png | ../../../../../rmagick-examples/*_checker.rb の実行 | |
4
+ | metal*.png | https://www.beiz.jp/%E7%B4%A0%E6%9D%90/%E9%87%91%E5%B1%9E/00005.html | 鉄の表面のへアライン |
5
+ |--------------+----------------------------------------------------------------------+----------------------+
6
+
7
+ 1920x1080
8
+
9
+ gradiention* は 1280x720 で rmagick-examples から生成
@@ -0,0 +1,7 @@
1
+ * サイズ
2
+
3
+ Full HD が 1920x1080 なのですべて 1080x1080
4
+
5
+ * shogi-player と合わせる
6
+
7
+ cp -av ~/src/bioshogi/lib/bioshogi/assets/images/board/*.png ~/src/shogi-player/assets/is_bg_variant
@@ -0,0 +1,32 @@
1
+ #!/bin/sh
2
+ cp original/0OU.png BK0.png
3
+ cp original/0HI.png BR0.png
4
+ cp original/0KA.png BB0.png
5
+ cp original/0KI.png BG0.png
6
+ cp original/0GI.png BS0.png
7
+ cp original/0KE.png BN0.png
8
+ cp original/0KY.png BL0.png
9
+ cp original/0FU.png BP0.png
10
+ cp original/0GY.png BX0.png
11
+ cp original/0RY.png BR1.png
12
+ cp original/0UM.png BB1.png
13
+ cp original/0NG.png BS1.png
14
+ cp original/0NK.png BN1.png
15
+ cp original/0NY.png BL1.png
16
+ cp original/0TO.png BP1.png
17
+
18
+ cp original/1OU.png WK0.png
19
+ cp original/1HI.png WR0.png
20
+ cp original/1KA.png WB0.png
21
+ cp original/1KI.png WG0.png
22
+ cp original/1GI.png WS0.png
23
+ cp original/1KE.png WN0.png
24
+ cp original/1KY.png WL0.png
25
+ cp original/1FU.png WP0.png
26
+ cp original/1GY.png WX0.png
27
+ cp original/1RY.png WR1.png
28
+ cp original/1UM.png WB1.png
29
+ cp original/1NG.png WS1.png
30
+ cp original/1NK.png WN1.png
31
+ cp original/1NY.png WL1.png
32
+ cp original/1TO.png WP1.png
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 249 256"><image width="249" height="256" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPkAAAEACAMAAABGeyDHAAAABGdBTUEAALGPC/xhBQAAACBjSFJN AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAACjlBMVEVHcEzz2Kj35cXx0pn8 36L63aLy27Lmy57vz5Xsy5Lv0Jj437Do0KsKCAbuzZP11pv/4qT879eVcVL/9dyxil8CAQEAAAD+ 8dnEn27/9NzLpXMCAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmSTUAAAAAAACmfFcBAAAA AAAAAABiRTGnfloAAADDm2MAAAAAAAAAAAAAAACBXUS1i1sAAAAAAAAAAAAAAAAAAAD98NgAAAAC AQAAAAAAAABfQiv/9d0AAAABAAB/WTyhdk8AAAA6Jhf/8toAAACRZkMAAAABAQAEAgFdNiA1HA4A AAAAAAAAAAAAAAD/357/5KL/5qf31pbwy4r/6K7/6rb/7L7+3Jn/3pn/4Zz/453/3Zb/4Zn/4Jf/ 3ZP/2pP/4JP/45f/25D/2YzivYHVsHn/8Mv/9+T/9Nr/+ev/3ZL/3ZD81Ij/3Iz/4JD/45PwxH3/ 2YiyfVxWMieeZk/OmGT/24lKJx8aBgYlDQpuRTi/iWDHj18CAQETBgaoa1DktXD/3YsKAwIOBAOv d1b/4Iz/4In/3Y1+Tz3/3Yf/3IVYPT7g09Tx6Ok6IR4sGx2Oa3G/q6ypiIv12bGLWUMaCw3SwcZx U1eSYEzTo2YzFxIGAgEkEhNCKy5oOST/2oT/2YK6gFn/3ICbXDz/1YHerGv4zH95QyrsvHPVrmtw Pib/2YD/2H7/3IL/1XzzxHOubUr/2Hr/23r/03r/23z/2Xv70Hj/1Xj/0nWWWTr/1HeOUjX/1HSh YkL7zXH/2Hf/1XH/2HP/0nL/z3D/zmr/02//0mr/y2bjrVnhpVLRlU3OjEXEhUCzc0S0bTiraUG7 eECoZDWgXTWDSy////8AmmKpAAAAVHRSTlMAKEZqx604Df3JhlQbAuaZ5Wgx7nwGAZrHx/sMCg4U GxEgMR4WXyYsuTxDNojSRvdNWkAdsetSXlZrYn50hlt6vtuBlczgirC0kdedpbHa0Ky8tbvPBZaH AAAAAWJLR0TZdwp3OAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+UDBREqFnx4Gk0AAEL7 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"/></svg>
@@ -0,0 +1,24 @@
1
+ module Bioshogi
2
+ module Board
3
+ class Basic
4
+ delegate :hash, to: :surface
5
+
6
+ def initialize(&block)
7
+ if block_given?
8
+ yield self
9
+ end
10
+ end
11
+
12
+ def surface
13
+ @surface ||= {}
14
+ end
15
+
16
+ include UpdateMethods
17
+ include ReaderMethods
18
+ include TechniqueMatcherMethods
19
+
20
+ prepend Explain::BoardPillerMethods
21
+ prepend PieceCountsMethods
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,40 @@
1
+ # frozen-string-literal: true
2
+ # http://www2.computer-shogi.org/protocol/record_v22.html
3
+
4
+ module Bioshogi
5
+ module Board
6
+ # P1-KY-KE-GI-KI-OU-KI-GI-KE-KY
7
+ # P2 * -HI * * * * * -KA *
8
+ # P3-FU-FU-FU-FU-FU-FU-FU-FU-FU
9
+ # P4 * * * * * * * * *
10
+ # P5 * * * * * * * * *
11
+ # P6 * * * * * * * * *
12
+ # P7+FU+FU+FU+FU+FU+FU+FU+FU+FU
13
+ # P8 * +KA * * * * * +HI *
14
+ # P9+KY+KE+GI+KI+OU+KI+GI+KE+KY
15
+ class CsaFormatter
16
+ def initialize(board)
17
+ @board = board
18
+ end
19
+
20
+ def to_s
21
+ Dimension::PlaceY.dimension.times.collect { |y|
22
+ "P#{y.next}" + Dimension::PlaceX.dimension.times.collect { |x|
23
+ place = Place.fetch([x, y])
24
+ soldier_to_str(@board.surface[place])
25
+ }.join + "\n"
26
+ }.join
27
+ end
28
+
29
+ private
30
+
31
+ def soldier_to_str(soldier)
32
+ if soldier
33
+ soldier.to_csa_bod
34
+ else
35
+ " * "
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,57 @@
1
+ # frozen-string-literal: true
2
+ #
3
+ # 9 8 7 6 5 4 3 2 1
4
+ # +---------------------------+
5
+ # | ・v桂v銀v金v玉v金v銀v桂v香|一
6
+ # | ・v飛 ・ ・ ・ ・ ・v角 ・|二
7
+ # |v歩v歩v歩v歩v歩v歩v歩v歩v歩|三
8
+ # | ・ ・ ・ ・ ・ ・ ・ ・ ・|四
9
+ # | ・ ・ ・ ・ ・ ・ ・ ・ ・|五
10
+ # | ・ ・ ・ ・ ・ ・ ・ ・ ・|六
11
+ # | 歩 歩 歩 歩 歩 歩 歩 歩 歩|七
12
+ # | ・ 角 ・ ・ ・ ・ ・ 飛 ・|八
13
+ # | 香 桂 銀 金 玉 金 銀 桂 香|九
14
+ # +---------------------------+
15
+ #
16
+ module Bioshogi
17
+ module Board
18
+ class KakinokiFormatter
19
+ def initialize(board)
20
+ @board = board
21
+ end
22
+
23
+ def to_s
24
+ [header, line, *rows, line].join("\n") + "\n"
25
+ end
26
+
27
+ private
28
+
29
+ def header
30
+ " " + Dimension::PlaceX.dimension.times.collect { |i| Dimension::PlaceX.fetch(i).name }.join(" ")
31
+ end
32
+
33
+ def line
34
+ "+" + "---" * Dimension::PlaceX.dimension + "+"
35
+ end
36
+
37
+ def rows
38
+ Dimension::PlaceY.dimension.times.collect do |y|
39
+ fields = Dimension::PlaceX.dimension.times.collect do |x|
40
+ place = Place.fetch([x, y])
41
+ soldier = @board.surface[place]
42
+ cell_str(soldier)
43
+ end
44
+ "|" + fields.join + "|" + Dimension::PlaceY.fetch(y).name
45
+ end
46
+ end
47
+
48
+ def cell_str(object)
49
+ if object
50
+ object.to_bod
51
+ else
52
+ " " + "・"
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,43 @@
1
+ # frozen-string-literal: true
2
+ #
3
+ # 盤上にプレイヤーの特定の種類の駒が何個あるかを O(n) で調べる
4
+ # 大駒コンプリートのためだけにある
5
+ #
6
+ module Bioshogi
7
+ module Board
8
+ module PieceCountsMethods
9
+ def place_on(soldier, options = {})
10
+ super
11
+ piece_counts[location_with_piece_key_from(soldier)] += 1 # soldier.piece.stronger をキーにすると速くなるかも?
12
+ end
13
+
14
+ def safe_delete_on(place)
15
+ super.tap do |soldier|
16
+ if soldier
17
+ piece_counts[location_with_piece_key_from(soldier)] -= 1
18
+ end
19
+ end
20
+ end
21
+
22
+ def all_clear
23
+ super
24
+ piece_counts.clear
25
+ end
26
+
27
+ def piece_count_of(location_key, piece_key)
28
+ piece_counts[[location_key, piece_key]]
29
+ end
30
+
31
+ private
32
+
33
+ def piece_counts
34
+ @piece_counts ||= Hash.new(0)
35
+ end
36
+
37
+ # promoted は見ていない
38
+ def location_with_piece_key_from(soldier)
39
+ [soldier.location.key, soldier.piece.key]
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,91 @@
1
+ module Bioshogi
2
+ module Board
3
+ module ReaderMethods
4
+ def lookup(place)
5
+ surface[Place.fetch(place)]
6
+ end
7
+
8
+ def [](place)
9
+ lookup(place)
10
+ end
11
+
12
+ def fetch(place)
13
+ lookup(place) or raise PieceNotFoundOnBoard, "#{place}に何もありません\n#{self}"
14
+ end
15
+
16
+ # FIXME: 空いている升の情報は駒を動かした時点で更新するようにすればこの部分の無駄な判定を減らせる
17
+ def blank_places
18
+ Enumerator.new do |y|
19
+ Place.each do |place|
20
+ unless surface[place]
21
+ y << place
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ def vertical_pieces(x)
28
+ Enumerator.new do |yielder|
29
+ Dimension::PlaceY.dimension.times do |y|
30
+ if soldier = lookup([x, y])
31
+ yielder << soldier
32
+ end
33
+ end
34
+ end
35
+ end
36
+
37
+ # def move_list(soldier, options = {})
38
+ # SoldierWalker.call(self, soldier, options)
39
+ # end
40
+
41
+ def soldiers
42
+ surface.values
43
+ end
44
+
45
+ # 盤上に「歩」と「と」があるなら {p: 2} を返す
46
+ def to_piece_box
47
+ soldiers.inject(PieceBox.new) { |a, e| a.merge(e.piece.key => 1) { |k, a, b| a + b } }
48
+ end
49
+
50
+ def to_s_soldiers
51
+ soldiers.collect(&:name_without_location).sort.join(" ")
52
+ end
53
+
54
+ # 盤の状態から手合割を逆算
55
+ # バリケード将棋などは持駒も見る必要があるけどやってない
56
+ def preset_info(options = {})
57
+ PresetInfo.lookup_by_soldiers(surface.values, options)
58
+ end
59
+
60
+ def to_kif
61
+ KakinokiFormatter.new(self).to_s
62
+ end
63
+
64
+ def to_ki2
65
+ to_kif
66
+ end
67
+
68
+ def to_csa
69
+ CsaFormatter.new(self).to_s
70
+ end
71
+
72
+ def to_s
73
+ to_kif
74
+ end
75
+
76
+ def to_sfen
77
+ Dimension::PlaceY.dimension.times.collect { |y|
78
+ Dimension::PlaceX.dimension.times.collect { |x|
79
+ lookup([x, y])
80
+ }.chunk(&:class).flat_map { |klass, e|
81
+ if klass == NilClass
82
+ e.count
83
+ else
84
+ e.collect(&:to_sfen)
85
+ end
86
+ }.join
87
+ }.join("/")
88
+ end
89
+ end
90
+ end
91
+ end