bioshogi 0.0.15 → 0.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (506) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.ruby-version +2 -1
  4. data/A/342/206/222B/342/206/222C/345/233/262/343/201/204.txt +1 -0
  5. data/A/342/206/222B/342/206/222C/346/210/246/346/263/225.txt +7 -2
  6. data/Gemfile.lock +57 -47
  7. data/bioshogi.gemspec +3 -1
  8. data/credit.org +0 -1
  9. data/lib/bioshogi/analysis/analyzer.rb +1 -1
  10. data/lib/bioshogi/analysis/analyzer_mod.rb +4 -4
  11. data/lib/bioshogi/analysis/attack_info.rb +231 -230
  12. data/lib/bioshogi/analysis/board_piece_counts_methods.rb +53 -0
  13. data/lib/bioshogi/analysis/board_piller_methods.rb +10 -32
  14. data/lib/bioshogi/analysis/core_soldier_place_methods.rb +58 -0
  15. data/lib/bioshogi/analysis/defense_info.rb +9 -0
  16. data/lib/bioshogi/analysis/frequency.rb +351 -347
  17. data/lib/bioshogi/analysis/note_info.rb +20 -19
  18. data/lib/bioshogi/analysis/player_methods.rb +28 -0
  19. data/lib/bioshogi/analysis/shape_info.rb +40 -6
  20. data/lib/bioshogi/analysis/tactic_hit_turn_table.rb +19 -1
  21. data/lib/bioshogi/analysis/tactic_info.rb +17 -3
  22. data/lib/bioshogi/analysis/technique_info.rb +24 -11
  23. data/lib/bioshogi/analysis/technique_verify_info.rb +179 -6
  24. data/lib/bioshogi/analysis//345/202/231/350/200/203//345/205/250/351/247/222.kif +27 -0
  25. data/lib/bioshogi/analysis//345/202/231/350/200/203//345/220/212/343/202/213/343/201/227/346/241/202.kif +22 -0
  26. data/lib/bioshogi/analysis//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 +7 -2
  27. data/lib/bioshogi/analysis//345/202/231/350/200/203//345/244/247/351/247/222/345/205/250/343/203/226/343/203/203/343/203/201.kif +4 -1
  28. data/lib/bioshogi/analysis//345/202/231/350/200/203//346/200/245/346/210/246.kif +1 -1
  29. data/lib/bioshogi/analysis//345/202/231/350/200/203//346/214/201/344/271/205/346/210/246.kif +4 -1
  30. data/lib/bioshogi/analysis//345/202/231/350/200/203//347/216/211/345/215/230/351/250/216.kif +27 -0
  31. data/lib/bioshogi/analysis//345/202/231/350/200/203//347/233/270/347/251/264/347/206/212.kif +2 -0
  32. data/lib/bioshogi/analysis//345/202/231/350/200/203//350/203/214/346/260/264/343/201/256/351/231/243.kif +4 -1
  33. data/lib/bioshogi/analysis//345/202/231/350/200/203//350/247/222/344/270/215/346/210/220.kif +2 -2
  34. data/lib/bioshogi/analysis//345/202/231/350/200/203//351/203/275/350/251/260/343/202/201.kif +5 -1
  35. data/lib/bioshogi/analysis//345/202/231/350/200/203//351/225/267/346/211/213/346/225/260.kif +13 -2
  36. data/lib/bioshogi/analysis//345/202/231/350/200/203//351/233/252/351/232/240/350/251/260/343/202/201.kif +23 -0
  37. data/lib/bioshogi/analysis//345/202/231/350/200/203//351/247/222/346/237/261.kif +12 -2
  38. data/lib/bioshogi/analysis//345/233/262/343/201/204//343/201/204/343/201/241/343/201/224/345/233/262/343/201/204.kif +1 -1
  39. data/lib/bioshogi/analysis//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 +2 -1
  40. data/lib/bioshogi/analysis//345/233/262/343/201/204//343/201/270/343/201/223/343/201/277/347/237/242/345/200/211.kif +1 -1
  41. data/lib/bioshogi/analysis//345/233/262/343/201/204//343/202/242/343/203/222/343/203/253/345/233/262/343/201/204.kif +5 -1
  42. data/lib/bioshogi/analysis//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 +7 -2
  43. data/lib/bioshogi/analysis//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 +2 -0
  44. data/lib/bioshogi/analysis//345/233/262/343/201/204//343/202/253/343/202/256/345/233/262/343/201/204.kif +17 -2
  45. data/lib/bioshogi/analysis//345/233/262/343/201/204//343/202/253/343/202/277/345/233/262/343/201/204.kif +2 -2
  46. data/lib/bioshogi/analysis//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 +6 -2
  47. data/lib/bioshogi/analysis//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 +2 -0
  48. data/lib/bioshogi/analysis//345/233/262/343/201/204//343/203/204/343/203/216/351/212/200/345/233/262/343/201/204.kif +1 -1
  49. data/lib/bioshogi/analysis//345/233/262/343/201/204//343/203/204/343/203/216/351/212/200/351/233/201/346/234/250.kif +2 -1
  50. data/lib/bioshogi/analysis//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 +2 -3
  51. data/lib/bioshogi/analysis//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 +9 -2
  52. data/lib/bioshogi/analysis//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 +1 -1
  53. data/lib/bioshogi/analysis//345/233/262/343/201/204//344/270/255/344/275/217/343/201/276/343/201/204.kif +2 -1
  54. data/lib/bioshogi/analysis//345/233/262/343/201/204//344/270/262/343/202/253/343/203/204/345/233/262/343/201/204.kif +1 -1
  55. data/lib/bioshogi/analysis//345/233/262/343/201/204//345/233/233/346/236/232/351/212/200/345/206/240.kif +9 -4
  56. data/lib/bioshogi/analysis//345/233/262/343/201/204//345/233/233/346/256/265/347/253/257/347/216/211.kif +5 -2
  57. data/lib/bioshogi/analysis//345/233/262/343/201/204//345/244/251/345/256/210/351/226/243/347/276/216/346/277/203.kif +1 -1
  58. data/lib/bioshogi/analysis//345/233/262/343/201/204//345/257/214/345/243/253/350/246/213/347/237/242/345/200/211.kif +6 -3
  59. data/lib/bioshogi/analysis//345/233/262/343/201/204//345/261/205/347/216/211.kif +2 -1
  60. data/lib/bioshogi/analysis//345/233/262/343/201/204//345/261/205/351/243/233/350/273/212/351/207/221/345/206/240.kif +7 -2
  61. data/lib/bioshogi/analysis//345/233/262/343/201/204//345/261/205/351/243/233/350/273/212/351/207/221/347/204/241/345/217/214.kif +2 -0
  62. data/lib/bioshogi/analysis//345/233/262/343/201/204//345/261/205/351/243/233/350/273/212/351/212/200/345/206/240.kif +2 -0
  63. data/lib/bioshogi/analysis//345/233/262/343/201/204//346/202/252/345/275/242/347/237/242/345/200/211.kif +1 -1
  64. data/lib/bioshogi/analysis//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 +2 -1
  65. data/lib/bioshogi/analysis//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 +2 -1
  66. data/lib/bioshogi/analysis//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 +2 -0
  67. data/lib/bioshogi/analysis//345/233/262/343/201/204//346/226/207/351/216/256/345/233/262/343/201/204.kif +1 -1
  68. data/lib/bioshogi/analysis//345/233/262/343/201/204//346/235/276/345/260/276/346/265/201/347/251/264/347/206/212.kif +2 -0
  69. data/lib/bioshogi/analysis//345/233/262/343/201/204//346/265/201/347/267/232/347/237/242/345/200/211.kif +1 -1
  70. data/lib/bioshogi/analysis//345/233/262/343/201/204//347/204/241/350/262/254/344/273/273/347/237/242/345/200/211.kif +1 -1
  71. data/lib/bioshogi/analysis//345/233/262/343/201/204//347/237/242/345/200/211/346/227/251/345/233/262/343/201/204.kif +1 -1
  72. data/lib/bioshogi/analysis//345/233/262/343/201/204//347/253/257/347/216/211/351/212/200/345/206/240.kif +2 -0
  73. data/lib/bioshogi/analysis//345/233/262/343/201/204//347/256/261/345/205/245/343/202/212/345/250/230.kif +2 -0
  74. data/lib/bioshogi/analysis//345/233/262/343/201/204//347/264/231/347/251/264/347/206/212.kif +4 -2
  75. data/lib/bioshogi/analysis//345/233/262/343/201/204//347/267/217/347/237/242/345/200/211.kif +7 -2
  76. data/lib/bioshogi/analysis//345/233/262/343/201/204//350/217/212/346/260/264/347/237/242/345/200/211.kif +1 -1
  77. data/lib/bioshogi/analysis//345/233/262/343/201/204//350/243/276/345/233/272/343/202/201.kif +2 -0
  78. data/lib/bioshogi/analysis//345/233/262/343/201/204//351/207/221/347/233/276/345/233/262/343/201/204.kif +2 -0
  79. data/lib/bioshogi/analysis//345/233/262/343/201/204//351/207/221/347/276/216/346/277/203.kif +2 -1
  80. data/lib/bioshogi/analysis//345/233/262/343/201/204//351/207/221/351/226/200/347/237/242/345/200/211.kif +1 -1
  81. data/lib/bioshogi/analysis//345/233/262/343/201/204//351/212/200/345/206/240.kif +2 -2
  82. data/lib/bioshogi/analysis//345/233/262/343/201/204//351/212/200/345/206/240/347/251/264/347/206/212.kif +2 -0
  83. data/lib/bioshogi/analysis//345/233/262/343/201/204//351/212/200/345/244/232/344/274/235.kif +8 -1
  84. data/lib/bioshogi/analysis//346/210/246/346/263/225/2/346/211/213/347/233/256/342/226/2633/343/203/213/351/243/233/346/210/246/346/263/225.kif +4 -1
  85. data/lib/bioshogi/analysis//346/210/246/346/263/225/6/347/255/213/344/275/215/345/217/226/343/202/212.kif +1 -1
  86. data/lib/bioshogi/analysis//346/210/246/346/263/225/GAVA/350/247/222.kif +1 -1
  87. data/lib/bioshogi/analysis//346/210/246/346/263/225/U/343/202/277/343/203/274/343/203/263/351/243/233/350/273/212.kif +8 -3
  88. data/lib/bioshogi/analysis//346/210/246/346/263/225/xaby/350/247/222/346/210/246/346/263/225.kif +1 -1
  89. data/lib/bioshogi/analysis//346/210/246/346/263/225//342/226/2624/344/272/224/346/255/251/346/227/251/344/273/225/346/216/233/343/201/221.kif +2 -0
  90. data/lib/bioshogi/analysis//346/210/246/346/263/225//342/226/2624/345/205/255/351/212/200/345/217/263/346/200/245/346/210/246.kif +1 -1
  91. data/lib/bioshogi/analysis//346/210/246/346/263/225//342/226/2625/344/270/203/351/207/221/346/210/246/346/263/225.kif +3 -1
  92. data/lib/bioshogi/analysis//346/210/246/346/263/225//342/226/2625/344/272/224/351/276/215/344/270/255/351/243/233/350/273/212.kif +2 -0
  93. data/lib/bioshogi/analysis//346/210/246/346/263/225//342/226/2633/344/270/211/351/243/233/346/210/246/346/263/225.kif +7 -2
  94. data/lib/bioshogi/analysis//346/210/246/346/263/225//342/226/2634/344/272/224/350/247/222/346/210/246/346/263/225.kif +3 -1
  95. data/lib/bioshogi/analysis//346/210/246/346/263/225//342/226/2637/344/272/214/351/243/233/344/272/234/346/200/245/346/210/246.kif +2 -1
  96. data/lib/bioshogi/analysis//346/210/246/346/263/225//343/201/257/343/201/217/345/274/217/345/233/233/351/226/223/351/243/233/350/273/212.kif +7 -1
  97. data/lib/bioshogi/analysis//346/210/246/346/263/225//343/201/270/343/201/252/343/201/241/343/202/207/343/201/223/346/200/245/346/210/246.kif +2 -1
  98. data/lib/bioshogi/analysis//346/210/246/346/263/225//343/202/242/343/203/222/343/203/253/346/210/246/346/263/225.kif +5 -1
  99. data/lib/bioshogi/analysis//346/210/246/346/263/225//343/202/250/343/203/253/343/203/242/346/200/245/346/210/246.kif +11 -2
  100. data/lib/bioshogi/analysis//346/210/246/346/263/225//343/202/252/343/202/266/343/203/257/343/202/267/343/202/271/343/203/206/343/203/240.kif +4 -2
  101. data/lib/bioshogi/analysis//346/210/246/346/263/225//343/202/263/343/203/274/343/203/244/343/203/263/346/265/201/344/270/211/351/226/223/351/243/233/350/273/212.kif +4 -1
  102. data/lib/bioshogi/analysis//346/210/246/346/263/225//343/202/264/343/202/255/343/202/262/343/203/263/344/270/255/351/243/233/350/273/212.kif +2 -1
  103. data/lib/bioshogi/analysis//346/210/246/346/263/225//343/202/264/343/203/252/343/202/264/343/203/252/351/207/221.kif +4 -0
  104. data/lib/bioshogi/analysis//346/210/246/346/263/225//343/202/264/343/203/252/343/203/251/343/201/256/345/217/263/346/211/213.kif +5 -0
  105. data/lib/bioshogi/analysis//346/210/246/346/263/225//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 +8 -1
  106. data/lib/bioshogi/analysis//346/210/246/346/263/225//343/203/204/343/203/216/351/212/200/344/270/255/351/243/233/350/273/212.kif +4 -1
  107. data/lib/bioshogi/analysis//346/210/246/346/263/225//343/203/204/343/203/216/351/212/200/345/236/213/345/217/263/347/216/211.kif +2 -1
  108. data/lib/bioshogi/analysis//346/210/246/346/263/225//343/203/210/343/203/236/343/203/233/343/203/274/343/202/257.kif +2 -1
  109. data/lib/bioshogi/analysis//346/210/246/346/263/225//343/203/216/343/203/274/343/203/236/343/203/253/344/270/211/351/226/223/351/243/233/350/273/212.kif +5 -1
  110. data/lib/bioshogi/analysis//346/210/246/346/263/225//343/203/222/343/203/251/343/203/241/346/210/246/346/263/225.kif +2 -0
  111. data/lib/bioshogi/analysis//346/210/246/346/263/225//343/203/235/343/203/263/343/203/235/343/203/263/346/241/202.kif +2 -0
  112. data/lib/bioshogi/analysis//346/210/246/346/263/225//343/203/240/343/203/252/343/203/244/343/203/252/346/227/251/347/237/263/347/224/260.kif +18 -4
  113. data/lib/bioshogi/analysis//346/210/246/346/263/225//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 +3 -1
  114. data/lib/bioshogi/analysis//346/210/246/346/263/225//343/203/242/343/203/216/343/203/254/343/203/274/343/203/253/345/220/221/343/201/213/343/201/204/351/243/233/350/273/212.kif +5 -2
  115. data/lib/bioshogi/analysis//346/210/246/346/263/225//344/270/200/346/211/213/346/220/215/350/247/222/346/217/233/343/202/217/343/202/212.kif +5 -3
  116. data/lib/bioshogi/analysis//346/210/246/346/263/225//344/270/200/347/233/264/347/267/232/347/251/264/347/206/212.kif +3 -1
  117. data/lib/bioshogi/analysis//346/210/246/346/263/225//344/270/200/351/226/223/351/243/233/350/273/212.kif +1 -1
  118. data/lib/bioshogi/analysis//346/210/246/346/263/225//344/270/211/346/256/265/345/217/263/347/216/211.kif +5 -2
  119. data/lib/bioshogi/analysis//346/210/246/346/263/225//344/270/213/347/224/272/346/265/201/344/270/211/351/226/223/351/243/233/350/273/212.kif +2 -1
  120. data/lib/bioshogi/analysis//346/210/246/346/263/225//344/270/255/345/216/237/346/265/201/346/200/245/346/210/246/347/237/242/345/200/211.kif +10 -3
  121. data/lib/bioshogi/analysis//346/210/246/346/263/225//344/270/255/345/216/237/346/265/201/347/233/270/346/216/233/343/201/213/343/202/212.kif +3 -0
  122. data/lib/bioshogi/analysis//346/210/246/346/263/225//344/270/255/351/243/233/350/273/212/345/267/246/347/251/264/347/206/212.kif +8 -2
  123. data/lib/bioshogi/analysis//346/210/246/346/263/225//344/271/205/344/277/235/346/265/201/346/227/251/347/237/263/347/224/260.kif +2 -1
  124. data/lib/bioshogi/analysis//346/210/246/346/263/225//344/271/235/351/226/223/351/243/233/350/273/212/345/267/246/347/251/264/347/206/212.kif +4 -1
  125. data/lib/bioshogi/analysis//346/210/246/346/263/225//345/212/240/350/227/244/346/265/201/350/242/226/351/243/233/350/273/212.kif +2 -1
  126. data/lib/bioshogi/analysis//346/210/246/346/263/225//345/215/207/347/224/260/345/274/217/347/237/263/347/224/260/346/265/201.kif +19 -70
  127. data/lib/bioshogi/analysis//346/210/246/346/263/225//345/217/263/345/233/233/351/226/223/351/243/233/350/273/212/346/200/245/346/210/246.kif +3 -1
  128. data/lib/bioshogi/analysis//346/210/246/346/263/225//345/217/263/345/233/233/351/226/223/351/243/233/350/273/212/350/266/205/346/200/245/346/210/246.kif +1 -1
  129. data/lib/bioshogi/analysis//346/210/246/346/263/225//345/234/260/344/270/213/351/211/204/351/243/233/350/273/212.kif +2 -1
  130. data/lib/bioshogi/analysis//346/210/246/346/263/225//345/241/232/347/224/260/343/202/271/343/203/232/343/202/267/343/203/243/343/203/253.kif +5 -2
  131. data/lib/bioshogi/analysis//346/210/246/346/263/225//345/244/251/345/275/246/346/265/201/342/226/2626/345/205/255/350/247/222.kif +1 -1
  132. data/lib/bioshogi/analysis//346/210/246/346/263/225//345/254/211/351/207/216/346/265/201.kif +2 -1
  133. data/lib/bioshogi/analysis//346/210/246/346/263/225//345/256/244/345/262/241/343/202/267/343/202/271/343/203/206/343/203/240.kif +13 -2
  134. data/lib/bioshogi/analysis//346/210/246/346/263/225//345/257/276/347/237/242/345/200/211/346/200/245/346/210/246/346/243/222/351/212/200.kif +4 -1
  135. data/lib/bioshogi/analysis//346/210/246/346/263/225//345/261/213/346/225/267/346/265/201/344/272/214/346/236/232/351/212/200.kif +4 -2
  136. data/lib/bioshogi/analysis//346/210/246/346/263/225//345/261/261/347/224/260/345/256/232/350/267/241.kif +1 -1
  137. data/lib/bioshogi/analysis//346/210/246/346/263/225//345/267/246/347/276/216/346/277/203/346/200/245/346/210/246.kif +12 -2
  138. data/lib/bioshogi/analysis//346/210/246/346/263/225//345/277/205/347/254/221/343/201/262/343/201/243/343/201/213/343/201/221/346/210/246/346/263/225.kif +1 -1
  139. data/lib/bioshogi/analysis//346/210/246/346/263/225//346/226/260/345/254/211/351/207/216/346/265/201.kif +2 -1
  140. data/lib/bioshogi/analysis//346/210/246/346/263/225//346/226/260/346/235/221/347/224/260/343/202/267/343/202/271/343/203/206/343/203/240.kif +4 -1
  141. data/lib/bioshogi/analysis//346/210/246/346/263/225//346/226/260/347/237/263/347/224/260/346/265/201.kif +1 -1
  142. data/lib/bioshogi/analysis//346/210/246/346/263/225//346/226/260/347/261/263/351/225/267/347/216/211.kif +3 -0
  143. data/lib/bioshogi/analysis//346/210/246/346/263/225//346/234/250/346/235/221/345/256/232/350/267/241.kif +4 -2
  144. data/lib/bioshogi/analysis//346/210/246/346/263/225//346/241/220/345/261/261/346/265/201/343/202/277/343/203/206/346/255/251/346/243/222/351/212/200.kif +4 -2
  145. data/lib/bioshogi/analysis//346/210/246/346/263/225//346/243/222/347/216/211.kif +1 -1
  146. data/lib/bioshogi/analysis//346/210/246/346/263/225//346/243/256/344/270/213/343/202/267/343/202/271/343/203/206/343/203/240.kif +6 -2
  147. data/lib/bioshogi/analysis//346/210/246/346/263/225//346/245/240/346/234/254/345/274/217/347/237/263/347/224/260/346/265/201.kif +2 -1
  148. data/lib/bioshogi/analysis//346/210/246/346/263/225//346/245/265/351/231/220/346/227/251/347/271/260/343/202/212/351/212/200.kif +1 -1
  149. data/lib/bioshogi/analysis//346/210/246/346/263/225//347/216/211/351/240/255/351/212/200.kif +4 -2
  150. data/lib/bioshogi/analysis//346/210/246/346/263/225//347/233/270/347/255/213/351/201/225/343/201/204/350/247/222.kif +2 -2
  151. data/lib/bioshogi/analysis//346/210/246/346/263/225//347/237/242/345/200/211/342/226/2623/344/270/203/351/212/200/346/210/246/346/263/225.kif +3 -1
  152. data/lib/bioshogi/analysis//346/210/246/346/263/225//347/237/242/345/200/211/346/243/222/351/212/200.kif +2 -0
  153. data/lib/bioshogi/analysis//346/210/246/346/263/225//347/237/263/347/224/260/346/265/201.kif +135 -55
  154. data/lib/bioshogi/analysis//346/210/246/346/263/225//347/237/263/347/224/260/346/265/201/346/234/254/347/265/204/343/201/277.kif +60 -0
  155. data/lib/bioshogi/analysis//346/210/246/346/263/225//347/255/213/351/201/225/343/201/204/350/247/222.kif +2 -1
  156. data/lib/bioshogi/analysis//346/210/246/346/263/225//347/261/263/351/225/267/346/265/201/346/200/245/346/210/246/347/237/242/345/200/211.kif +11 -2
  157. data/lib/bioshogi/analysis//346/210/246/346/263/225//347/263/270/350/260/267/346/265/201/345/217/263/347/216/211.kif +7 -2
  158. data/lib/bioshogi/analysis//346/210/246/346/263/225//347/276/275/347/224/237/345/274/217/350/242/226/351/243/233/350/273/212.kif +6 -4
  159. data/lib/bioshogi/analysis//346/210/246/346/263/225//347/276/275/347/224/237/346/265/201/345/217/263/347/216/211.kif +1 -1
  160. data/lib/bioshogi/analysis//346/210/246/346/263/225//350/204/207/343/202/267/343/202/271/343/203/206/343/203/240.kif +1 -1
  161. data/lib/bioshogi/analysis//346/210/246/346/263/225//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 +5 -2
  162. data/lib/bioshogi/analysis//346/210/246/346/263/225//350/213/261/346/230/245/346/265/201/343/201/213/343/201/276/343/201/204/343/201/237/343/201/241/346/210/246/346/263/225.kif +11 -2
  163. data/lib/bioshogi/analysis//346/210/246/346/263/225//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 +3 -1
  164. data/lib/bioshogi/analysis//346/210/246/346/263/225//350/217/234/343/200/205/346/262/263/346/265/201/342/226/2634/345/233/233/350/247/222.kif +1 -1
  165. data/lib/bioshogi/analysis//346/210/246/346/263/225//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 +3 -1
  166. data/lib/bioshogi/analysis//346/210/246/346/263/225//350/227/244/346/243/256/346/265/201/346/200/245/346/210/246/347/237/242/345/200/211.kif +2 -0
  167. data/lib/bioshogi/analysis//346/210/246/346/263/225//350/242/226/351/243/233/350/273/212.kif +7 -2
  168. data/lib/bioshogi/analysis//346/210/246/346/263/225//350/247/222/344/272/244/346/217/233/346/214/257/343/202/212/351/243/233/350/273/212.kif +3 -1
  169. data/lib/bioshogi/analysis//346/210/246/346/263/225//350/247/222/346/217/233/343/202/217/343/202/212/345/217/263/347/216/211.kif +2 -1
  170. data/lib/bioshogi/analysis//346/210/246/346/263/225//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 +8 -3
  171. data/lib/bioshogi/analysis//346/210/246/346/263/225//351/201/240/345/261/261/346/265/201.kif +3 -1
  172. data/lib/bioshogi/analysis//346/210/246/346/263/225//351/207/221/346/262/242/346/265/201.kif +1 -1
  173. data/lib/bioshogi/analysis//346/210/246/346/263/225//351/207/221/347/204/241/345/217/214/346/200/245/346/210/246.kif +2 -0
  174. data/lib/bioshogi/analysis//346/210/246/346/263/225//351/230/252/347/224/260/346/265/2012/346/211/213/347/233/256/342/226/2639/345/233/233/346/255/251.kif +1 -1
  175. data/lib/bioshogi/analysis//346/210/246/346/263/225//351/230/252/347/224/260/346/265/201/345/220/221/343/201/213/343/201/204/351/243/233/350/273/212.kif +2 -1
  176. data/lib/bioshogi/analysis//346/210/246/346/263/225//351/233/200/345/210/272/343/201/227.kif +6 -2
  177. data/lib/bioshogi/analysis//346/210/246/346/263/225//351/233/201/346/234/250/345/217/263/347/216/211.kif +6 -2
  178. data/lib/bioshogi/analysis//346/210/246/346/263/225//351/242/250/350/273/212.kif +4 -1
  179. data/lib/bioshogi/analysis//346/210/246/346/263/225//351/243/233/351/250/250/343/201/256/344/270/255/351/243/233/350/273/212/345/220/210/346/216/214/351/200/240/343/202/212.kif +2 -1
  180. data/lib/bioshogi/analysis//346/210/246/346/263/225//351/267/272/345/256/256/345/256/232/350/267/241.kif +2 -1
  181. data/lib/bioshogi/analysis//346/211/213/347/255/213//344/270/213/346/256/265/343/201/256/351/246/231.kif +26 -0
  182. data/lib/bioshogi/analysis//346/211/213/347/255/213//345/260/273/351/207/221.kif +28 -0
  183. data/lib/bioshogi/analysis//346/211/213/347/255/213//345/261/205/351/243/233/350/273/212/343/201/256/347/250/216/351/207/221.kif +15 -0
  184. data/lib/bioshogi/analysis//346/211/213/347/255/213//346/216/247/343/201/210/343/201/256/346/241/202.kif +23 -0
  185. data/lib/bioshogi/analysis//346/211/213/347/255/213//346/255/251/351/240/255/343/201/256/346/241/202.kif +2 -1
  186. data/lib/bioshogi/analysis//346/211/213/347/255/213//350/202/251/351/207/221.kif +21 -0
  187. data/lib/bioshogi/analysis//346/211/213/347/255/213//350/202/251/351/212/200.kif +21 -0
  188. data/lib/bioshogi/analysis//346/211/213/347/255/213//350/205/271/351/207/221.kif +25 -0
  189. data/lib/bioshogi/analysis//346/211/213/347/255/213//350/205/271/351/212/200.kif +2 -1
  190. data/lib/bioshogi/analysis//346/211/213/347/255/213//350/243/276/351/207/221.kif +33 -0
  191. data/lib/bioshogi/analysis//346/211/213/347/255/213//350/243/276/351/212/200.kif +21 -0
  192. data/lib/bioshogi/analysis//346/211/213/347/255/213//350/267/263/343/201/255/351/201/225/343/201/204/343/201/256/346/241/202.kif +27 -0
  193. data/lib/bioshogi/analysis//346/211/213/347/255/213//351/207/221/351/240/255/343/201/256/346/241/202.kif +30 -0
  194. data/lib/bioshogi/analysis//346/211/213/347/255/213//351/212/200/343/201/260/343/201/225/343/201/277.kif +1 -0
  195. data/lib/bioshogi/analysis//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 +2 -1
  196. data/lib/bioshogi/analysis//346/211/213/347/255/213//351/240/255/351/207/221.kif +21 -0
  197. data/lib/bioshogi/analysis//346/211/213/347/255/213//351/240/255/351/212/200.kif +21 -0
  198. data/lib/bioshogi/assets/images/color_theme_preview/is_color_theme_club24.png +0 -0
  199. data/lib/bioshogi/assets/images/color_theme_preview/is_color_theme_modern.png +0 -0
  200. data/lib/bioshogi/assets/images/color_theme_preview/is_color_theme_paper.png +0 -0
  201. data/lib/bioshogi/assets/images/color_theme_preview/is_color_theme_piyo.png +0 -0
  202. data/lib/bioshogi/assets/images/color_theme_preview/is_color_theme_real.png +0 -0
  203. data/lib/bioshogi/assets/images/color_theme_preview/is_color_theme_shape.png +0 -0
  204. data/lib/bioshogi/assets/images/piece/nureyon/BB0.png +0 -0
  205. data/lib/bioshogi/assets/images/piece/nureyon/BB1.png +0 -0
  206. data/lib/bioshogi/assets/images/piece/nureyon/BG0.png +0 -0
  207. data/lib/bioshogi/assets/images/piece/nureyon/BK0.png +0 -0
  208. data/lib/bioshogi/assets/images/piece/nureyon/BL0.png +0 -0
  209. data/lib/bioshogi/assets/images/piece/nureyon/BL1.png +0 -0
  210. data/lib/bioshogi/assets/images/piece/nureyon/BN0.png +0 -0
  211. data/lib/bioshogi/assets/images/piece/nureyon/BN1.png +0 -0
  212. data/lib/bioshogi/assets/images/piece/nureyon/BP0.png +0 -0
  213. data/lib/bioshogi/assets/images/piece/nureyon/BP1.png +0 -0
  214. data/lib/bioshogi/assets/images/piece/nureyon/BR0.png +0 -0
  215. data/lib/bioshogi/assets/images/piece/nureyon/BR1.png +0 -0
  216. data/lib/bioshogi/assets/images/piece/nureyon/BS0.png +0 -0
  217. data/lib/bioshogi/assets/images/piece/nureyon/BS1.png +0 -0
  218. data/lib/bioshogi/assets/images/piece/nureyon/README.org +20 -0
  219. data/lib/bioshogi/assets/images/piece/nureyon/WB0.png +0 -0
  220. data/lib/bioshogi/assets/images/piece/nureyon/WB1.png +0 -0
  221. data/lib/bioshogi/assets/images/piece/nureyon/WG0.png +0 -0
  222. data/lib/bioshogi/assets/images/piece/nureyon/WK0.png +0 -0
  223. data/lib/bioshogi/assets/images/piece/nureyon/WL0.png +0 -0
  224. data/lib/bioshogi/assets/images/piece/nureyon/WL1.png +0 -0
  225. data/lib/bioshogi/assets/images/piece/nureyon/WN0.png +0 -0
  226. data/lib/bioshogi/assets/images/piece/nureyon/WN1.png +0 -0
  227. data/lib/bioshogi/assets/images/piece/nureyon/WP0.png +0 -0
  228. data/lib/bioshogi/assets/images/piece/nureyon/WP1.png +0 -0
  229. data/lib/bioshogi/assets/images/piece/nureyon/WR0.png +0 -0
  230. data/lib/bioshogi/assets/images/piece/nureyon/WR1.png +0 -0
  231. data/lib/bioshogi/assets/images/piece/nureyon/WS0.png +0 -0
  232. data/lib/bioshogi/assets/images/piece/nureyon/WS1.png +0 -0
  233. data/lib/bioshogi/assets/images/piece/nureyon/convert.rb +43 -0
  234. data/lib/bioshogi/assets/images/piece/nureyon/original/BB0.svg +11 -0
  235. data/lib/bioshogi/assets/images/piece/nureyon/original/BB1.svg +11 -0
  236. data/lib/bioshogi/assets/images/piece/nureyon/original/BG0.svg +11 -0
  237. data/lib/bioshogi/assets/images/piece/nureyon/original/BK0.svg +11 -0
  238. data/lib/bioshogi/assets/images/piece/nureyon/original/BL0.svg +11 -0
  239. data/lib/bioshogi/assets/images/piece/nureyon/original/BL1.svg +11 -0
  240. data/lib/bioshogi/assets/images/piece/nureyon/original/BN0.svg +11 -0
  241. data/lib/bioshogi/assets/images/piece/nureyon/original/BN1.svg +11 -0
  242. data/lib/bioshogi/assets/images/piece/nureyon/original/BP0.svg +11 -0
  243. data/lib/bioshogi/assets/images/piece/nureyon/original/BP1.svg +11 -0
  244. data/lib/bioshogi/assets/images/piece/nureyon/original/BR0.svg +11 -0
  245. data/lib/bioshogi/assets/images/piece/nureyon/original/BR1.svg +11 -0
  246. data/lib/bioshogi/assets/images/piece/nureyon/original/BS0.svg +11 -0
  247. data/lib/bioshogi/assets/images/piece/nureyon/original/BS1.svg +11 -0
  248. data/lib/bioshogi/assets/images/piece/nureyon/original/BX0.svg +12 -0
  249. data/lib/bioshogi/assets/images/piece/nureyon/original/README.org +5 -0
  250. data/lib/bioshogi/assets/images/piece/nureyon/original/convert.sh +15 -0
  251. data/lib/bioshogi/assets/images/piece/nureyon/original/style.rb +26 -0
  252. data/lib/bioshogi/assets/images/piece/portella/BB0.png +0 -0
  253. data/lib/bioshogi/assets/images/piece/portella/BB1.png +0 -0
  254. data/lib/bioshogi/assets/images/piece/portella/BG0.png +0 -0
  255. data/lib/bioshogi/assets/images/piece/portella/BK0.png +0 -0
  256. data/lib/bioshogi/assets/images/piece/portella/BL0.png +0 -0
  257. data/lib/bioshogi/assets/images/piece/portella/BL1.png +0 -0
  258. data/lib/bioshogi/assets/images/piece/portella/BN0.png +0 -0
  259. data/lib/bioshogi/assets/images/piece/portella/BN1.png +0 -0
  260. data/lib/bioshogi/assets/images/piece/portella/BP0.png +0 -0
  261. data/lib/bioshogi/assets/images/piece/portella/BP1.png +0 -0
  262. data/lib/bioshogi/assets/images/piece/portella/BR0.png +0 -0
  263. data/lib/bioshogi/assets/images/piece/portella/BR1.png +0 -0
  264. data/lib/bioshogi/assets/images/piece/portella/BS0.png +0 -0
  265. data/lib/bioshogi/assets/images/piece/portella/BS1.png +0 -0
  266. data/lib/bioshogi/assets/images/piece/portella/WB0.png +0 -0
  267. data/lib/bioshogi/assets/images/piece/portella/WB1.png +0 -0
  268. data/lib/bioshogi/assets/images/piece/portella/WG0.png +0 -0
  269. data/lib/bioshogi/assets/images/piece/portella/WK0.png +0 -0
  270. data/lib/bioshogi/assets/images/piece/portella/WL0.png +0 -0
  271. data/lib/bioshogi/assets/images/piece/portella/WL1.png +0 -0
  272. data/lib/bioshogi/assets/images/piece/portella/WN0.png +0 -0
  273. data/lib/bioshogi/assets/images/piece/portella/WN1.png +0 -0
  274. data/lib/bioshogi/assets/images/piece/portella/WP0.png +0 -0
  275. data/lib/bioshogi/assets/images/piece/portella/WP1.png +0 -0
  276. data/lib/bioshogi/assets/images/piece/portella/WR0.png +0 -0
  277. data/lib/bioshogi/assets/images/piece/portella/WR1.png +0 -0
  278. data/lib/bioshogi/assets/images/piece/portella/WS0.png +0 -0
  279. data/lib/bioshogi/assets/images/piece/portella/WS1.png +0 -0
  280. data/lib/bioshogi/assets/images/piece/portella/convert.rb +89 -0
  281. data/lib/bioshogi/board/basic.rb +2 -1
  282. data/lib/bioshogi/container/core_methods.rb +4 -4
  283. data/lib/bioshogi/counter_hash.rb +34 -0
  284. data/lib/bioshogi/extreme_validator.rb +1 -1
  285. data/lib/bioshogi/formatter/animation/animation_mp4_builder.rb +17 -14
  286. data/lib/bioshogi/formatter/animation/ffmpeg_support.rb +14 -1
  287. data/lib/bioshogi/formatter/core.rb +9 -9
  288. data/lib/bioshogi/formatter/skill_embed.rb +45 -16
  289. data/lib/bioshogi/formatter/sugatayaki_validator.rb +1 -1
  290. data/lib/bioshogi/official_formatter.rb +1 -1
  291. data/lib/bioshogi/parser/base.rb +4 -4
  292. data/lib/bioshogi/parser/pi.rb +11 -0
  293. data/lib/bioshogi/piece.rb +16 -8
  294. data/lib/bioshogi/piller_cop.rb +47 -0
  295. data/lib/bioshogi/place.rb +4 -0
  296. data/lib/bioshogi/player/other_methods.rb +16 -33
  297. data/lib/bioshogi/player/piece_box_methods.rb +1 -1
  298. data/lib/bioshogi/player/soldier_methods.rb +10 -4
  299. data/lib/bioshogi/player.rb +1 -0
  300. data/lib/bioshogi/player_executor/base.rb +3 -2
  301. data/lib/bioshogi/screen_image/color_theme_info.rb +22 -7
  302. data/lib/bioshogi/screen_image/core_methods.rb +36 -22
  303. data/lib/bioshogi/screen_image/helper.rb +2 -2
  304. data/lib/bioshogi/screen_image/layer_methods.rb +6 -3
  305. data/lib/bioshogi/screen_image/nureyon_image_info.rb +43 -0
  306. data/lib/bioshogi/screen_image/piece_image_info.rb +26 -0
  307. data/lib/bioshogi/screen_image/soldier_methods.rb +15 -13
  308. data/lib/bioshogi/screen_image/soldier_model_methods.rb +14 -0
  309. data/lib/bioshogi/screen_image/stand.rb +5 -2
  310. data/lib/bioshogi/soldier/technique_matcher_methods.rb +6 -0
  311. data/lib/bioshogi/soldier.rb +1 -0
  312. data/lib/bioshogi/version.rb +1 -1
  313. data/lib/bioshogi.rb +2 -1
  314. metadata +167 -201
  315. data/lib/bioshogi/assets/audios/any.band/Alternatives/000/DisplayState.plist +0 -0
  316. data/lib/bioshogi/assets/audios/any.band/Alternatives/000/DisplayStateArchive +0 -0
  317. data/lib/bioshogi/assets/audios/any.band/Alternatives/000/MetaData.plist +0 -0
  318. data/lib/bioshogi/assets/audios/any.band/Alternatives/000/ProjectData +0 -0
  319. data/lib/bioshogi/assets/audios/any.band/Alternatives/000/WindowImage.jpg +0 -0
  320. data/lib/bioshogi/assets/audios/any.band/Media/Audio Files/Strategy.caf +0 -0
  321. data/lib/bioshogi/assets/audios/any.band/Resources/ProjectInformation.plist +0 -0
  322. data/lib/bioshogi/assets/audios/any.band/projectData +0 -3183
  323. data/lib/bioshogi/assets/audios/breakbeat_long.band/Alternatives/000/DisplayState.plist +0 -0
  324. data/lib/bioshogi/assets/audios/breakbeat_long.band/Alternatives/000/DisplayStateArchive +0 -0
  325. data/lib/bioshogi/assets/audios/breakbeat_long.band/Alternatives/000/MetaData.plist +0 -0
  326. data/lib/bioshogi/assets/audios/breakbeat_long.band/Alternatives/000/ProjectData +0 -0
  327. data/lib/bioshogi/assets/audios/breakbeat_long.band/Alternatives/000/WindowImage.jpg +0 -0
  328. data/lib/bioshogi/assets/audios/breakbeat_long.band/Resources/ProjectInformation.plist +0 -0
  329. data/lib/bioshogi/assets/audios/breakbeat_long.band/projectData +0 -3183
  330. data/lib/bioshogi/assets/audios/breakbeat_long_strip.band/Alternatives/000/DisplayState.plist +0 -0
  331. data/lib/bioshogi/assets/audios/breakbeat_long_strip.band/Alternatives/000/DisplayStateArchive +0 -0
  332. data/lib/bioshogi/assets/audios/breakbeat_long_strip.band/Alternatives/000/MetaData.plist +0 -0
  333. data/lib/bioshogi/assets/audios/breakbeat_long_strip.band/Alternatives/000/ProjectData +0 -0
  334. data/lib/bioshogi/assets/audios/breakbeat_long_strip.band/Alternatives/000/WindowImage.jpg +0 -0
  335. data/lib/bioshogi/assets/audios/breakbeat_long_strip.band/Media/Audio Files/Strategy.caf +0 -0
  336. data/lib/bioshogi/assets/audios/breakbeat_long_strip.band/Resources/ProjectInformation.plist +0 -0
  337. data/lib/bioshogi/assets/audios/breakbeat_long_strip.band/projectData +0 -3183
  338. data/lib/bioshogi/assets/audios/china_like.band/Alternatives/000/DisplayState.plist +0 -0
  339. data/lib/bioshogi/assets/audios/china_like.band/Alternatives/000/DisplayStateArchive +0 -0
  340. data/lib/bioshogi/assets/audios/china_like.band/Alternatives/000/MetaData.plist +0 -0
  341. data/lib/bioshogi/assets/audios/china_like.band/Alternatives/000/ProjectData +0 -0
  342. data/lib/bioshogi/assets/audios/china_like.band/Alternatives/000/WindowImage.jpg +0 -0
  343. data/lib/bioshogi/assets/audios/china_like.band/Resources/ProjectInformation.plist +0 -0
  344. data/lib/bioshogi/assets/audios/china_like.band/projectData +0 -3183
  345. data/lib/bioshogi/assets/audios/digit_blast_layers.band/Alternatives/000/DisplayState.plist +0 -0
  346. data/lib/bioshogi/assets/audios/digit_blast_layers.band/Alternatives/000/DisplayStateArchive +0 -0
  347. data/lib/bioshogi/assets/audios/digit_blast_layers.band/Alternatives/000/MetaData.plist +0 -0
  348. data/lib/bioshogi/assets/audios/digit_blast_layers.band/Alternatives/000/ProjectData +0 -0
  349. data/lib/bioshogi/assets/audios/digit_blast_layers.band/Alternatives/000/WindowImage.jpg +0 -0
  350. data/lib/bioshogi/assets/audios/digit_blast_layers.band/Resources/ProjectInformation.plist +0 -0
  351. data/lib/bioshogi/assets/audios/digit_blast_layers.band/projectData +0 -3183
  352. data/lib/bioshogi/assets/audios/foo.band/Alternatives/000/DisplayState.plist +0 -0
  353. data/lib/bioshogi/assets/audios/foo.band/Alternatives/000/DisplayStateArchive +0 -0
  354. data/lib/bioshogi/assets/audios/foo.band/Alternatives/000/MetaData.plist +0 -0
  355. data/lib/bioshogi/assets/audios/foo.band/Alternatives/000/ProjectData +0 -0
  356. data/lib/bioshogi/assets/audios/foo.band/Alternatives/000/WindowImage.jpg +0 -0
  357. data/lib/bioshogi/assets/audios/foo.band/Media/Audio Files/Strategy.caf +0 -0
  358. data/lib/bioshogi/assets/audios/foo.band/Resources/ProjectInformation.plist +0 -0
  359. data/lib/bioshogi/assets/audios/foo.band/projectData +0 -3183
  360. data/lib/bioshogi/assets/audios/headspin_long.band/Alternatives/000/DisplayState.plist +0 -0
  361. data/lib/bioshogi/assets/audios/headspin_long.band/Alternatives/000/DisplayStateArchive +0 -0
  362. data/lib/bioshogi/assets/audios/headspin_long.band/Alternatives/000/MetaData.plist +0 -0
  363. data/lib/bioshogi/assets/audios/headspin_long.band/Alternatives/000/ProjectData +0 -0
  364. data/lib/bioshogi/assets/audios/headspin_long.band/Alternatives/000/WindowImage.jpg +0 -0
  365. data/lib/bioshogi/assets/audios/headspin_long.band/Resources/ProjectInformation.plist +0 -0
  366. data/lib/bioshogi/assets/audios/headspin_long.band/projectData +0 -3183
  367. data/lib/bioshogi/assets/audios/loop_bgm_i.band/Alternatives/000/DisplayState.plist +0 -0
  368. data/lib/bioshogi/assets/audios/loop_bgm_i.band/Alternatives/000/DisplayStateArchive +0 -0
  369. data/lib/bioshogi/assets/audios/loop_bgm_i.band/Alternatives/000/MetaData.plist +0 -0
  370. data/lib/bioshogi/assets/audios/loop_bgm_i.band/Alternatives/000/ProjectData +0 -0
  371. data/lib/bioshogi/assets/audios/loop_bgm_i.band/Alternatives/000/WindowImage.jpg +0 -0
  372. data/lib/bioshogi/assets/audios/loop_bgm_i.band/Resources/ProjectInformation.plist +0 -0
  373. data/lib/bioshogi/assets/audios/loop_bgm_i.band/projectData +0 -3183
  374. data/lib/bioshogi/assets/audios/mastermind.band/Alternatives/000/DisplayState.plist +0 -0
  375. data/lib/bioshogi/assets/audios/mastermind.band/Alternatives/000/DisplayStateArchive +0 -0
  376. data/lib/bioshogi/assets/audios/mastermind.band/Alternatives/000/MetaData.plist +0 -0
  377. data/lib/bioshogi/assets/audios/mastermind.band/Alternatives/000/ProjectData +0 -0
  378. data/lib/bioshogi/assets/audios/mastermind.band/Alternatives/000/WindowImage.jpg +0 -0
  379. data/lib/bioshogi/assets/audios/mastermind.band/Resources/ProjectInformation.plist +0 -0
  380. data/lib/bioshogi/assets/audios/mastermind.band/projectData +0 -3183
  381. data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/Autosave/.dummy +0 -0
  382. data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/Autosave/2021-08-19 05:25:23Z.displayData +0 -0
  383. data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/Autosave/2021-08-19 05:25:23Z.eventData +0 -0
  384. data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/Autosave/2021-08-19 05:25:23Z.songData +0 -0
  385. data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/DisplayState.plist +0 -0
  386. data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/DisplayStateArchive +0 -0
  387. data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/MetaData.plist +0 -0
  388. data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/ProjectData +0 -0
  389. data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/WindowImage.jpg +0 -0
  390. data/lib/bioshogi/assets/audios/positive_think.band/Resources/ProjectInformation.plist +0 -0
  391. data/lib/bioshogi/assets/audios/positive_think.band/projectData +0 -3183
  392. data/lib/bioshogi/assets/audios/stg_like_type1.band/Alternatives/000/DisplayState.plist +0 -0
  393. data/lib/bioshogi/assets/audios/stg_like_type1.band/Alternatives/000/DisplayStateArchive +0 -0
  394. data/lib/bioshogi/assets/audios/stg_like_type1.band/Alternatives/000/MetaData.plist +0 -0
  395. data/lib/bioshogi/assets/audios/stg_like_type1.band/Alternatives/000/ProjectData +0 -0
  396. data/lib/bioshogi/assets/audios/stg_like_type1.band/Alternatives/000/WindowImage.jpg +0 -0
  397. data/lib/bioshogi/assets/audios/stg_like_type1.band/Resources/ProjectInformation.plist +0 -0
  398. data/lib/bioshogi/assets/audios/stg_like_type1.band/projectData +0 -3183
  399. data/lib/bioshogi/assets/audios/strategy.band/Alternatives/000/DisplayState.plist +0 -0
  400. data/lib/bioshogi/assets/audios/strategy.band/Alternatives/000/DisplayStateArchive +0 -0
  401. data/lib/bioshogi/assets/audios/strategy.band/Alternatives/000/MetaData.plist +0 -0
  402. data/lib/bioshogi/assets/audios/strategy.band/Alternatives/000/ProjectData +0 -0
  403. data/lib/bioshogi/assets/audios/strategy.band/Alternatives/000/WindowImage.jpg +0 -0
  404. data/lib/bioshogi/assets/audios/strategy.band/Media/Audio Files/Strategy.caf +0 -0
  405. data/lib/bioshogi/assets/audios/strategy.band/Resources/ProjectInformation.plist +0 -0
  406. data/lib/bioshogi/assets/audios/strategy.band/projectData +0 -3183
  407. data/lib/bioshogi/assets/audios/test1.band/Alternatives/000/DisplayState.plist +0 -0
  408. data/lib/bioshogi/assets/audios/test1.band/Alternatives/000/DisplayStateArchive +0 -0
  409. data/lib/bioshogi/assets/audios/test1.band/Alternatives/000/MetaData.plist +0 -0
  410. data/lib/bioshogi/assets/audios/test1.band/Alternatives/000/ProjectData +0 -0
  411. data/lib/bioshogi/assets/audios/test1.band/Alternatives/000/WindowImage.jpg +0 -0
  412. data/lib/bioshogi/assets/audios/test1.band/Resources/ProjectInformation.plist +0 -0
  413. data/lib/bioshogi/assets/audios/test1.band/projectData +0 -3183
  414. data/lib/bioshogi/assets/audios/test2.band/Alternatives/000/DisplayState.plist +0 -0
  415. data/lib/bioshogi/assets/audios/test2.band/Alternatives/000/DisplayStateArchive +0 -0
  416. data/lib/bioshogi/assets/audios/test2.band/Alternatives/000/MetaData.plist +0 -0
  417. data/lib/bioshogi/assets/audios/test2.band/Alternatives/000/ProjectData +0 -0
  418. data/lib/bioshogi/assets/audios/test2.band/Alternatives/000/WindowImage.jpg +0 -0
  419. data/lib/bioshogi/assets/audios/test2.band/Resources/ProjectInformation.plist +0 -0
  420. data/lib/bioshogi/assets/audios/test2.band/projectData +0 -3183
  421. data/lib/bioshogi/assets/fonts/MPLUSRounded1c-Black.ttf +0 -0
  422. data/lib/bioshogi/assets/fonts/MPLUSRounded1c-Bold.ttf +0 -0
  423. data/lib/bioshogi/assets/fonts/MPLUSRounded1c-ExtraBold.ttf +0 -0
  424. data/lib/bioshogi/assets/fonts/MPLUSRounded1c-Light.ttf +0 -0
  425. data/lib/bioshogi/assets/fonts/MPLUSRounded1c-Medium.ttf +0 -0
  426. data/lib/bioshogi/assets/fonts/MPLUSRounded1c-Regular.ttf +0 -0
  427. data/lib/bioshogi/assets/fonts/MPLUSRounded1c-Thin.ttf +0 -0
  428. data/lib/bioshogi/assets/fonts/NewTegomin-Regular.ttf +0 -0
  429. data/lib/bioshogi/assets/fonts/NotoSansJP-Black.otf +0 -0
  430. data/lib/bioshogi/assets/fonts/NotoSansJP-Bold.otf +0 -0
  431. data/lib/bioshogi/assets/fonts/NotoSansJP-Light.otf +0 -0
  432. data/lib/bioshogi/assets/fonts/NotoSansJP-Medium.otf +0 -0
  433. data/lib/bioshogi/assets/fonts/NotoSansJP-Regular.otf +0 -0
  434. data/lib/bioshogi/assets/fonts/NotoSansJP-Thin.otf +0 -0
  435. data/lib/bioshogi/assets/fonts/NotoSerifJP-Black.otf +0 -0
  436. data/lib/bioshogi/assets/fonts/NotoSerifJP-Bold.otf +0 -0
  437. data/lib/bioshogi/assets/fonts/NotoSerifJP-ExtraLight.otf +0 -0
  438. data/lib/bioshogi/assets/fonts/NotoSerifJP-Light.otf +0 -0
  439. data/lib/bioshogi/assets/fonts/NotoSerifJP-Medium.otf +0 -0
  440. data/lib/bioshogi/assets/fonts/NotoSerifJP-Regular.otf +0 -0
  441. data/lib/bioshogi/assets/fonts/NotoSerifJP-SemiBold.otf +0 -0
  442. data/lib/bioshogi/assets/fonts/YuseiMagic-Regular.ttf +0 -0
  443. data/lib/bioshogi/assets/images/piece/Portella/BB0.png +0 -0
  444. data/lib/bioshogi/assets/images/piece/Portella/BB1.png +0 -0
  445. data/lib/bioshogi/assets/images/piece/Portella/BG0.png +0 -0
  446. data/lib/bioshogi/assets/images/piece/Portella/BK0.png +0 -0
  447. data/lib/bioshogi/assets/images/piece/Portella/BL0.png +0 -0
  448. data/lib/bioshogi/assets/images/piece/Portella/BL1.png +0 -0
  449. data/lib/bioshogi/assets/images/piece/Portella/BN0.png +0 -0
  450. data/lib/bioshogi/assets/images/piece/Portella/BN1.png +0 -0
  451. data/lib/bioshogi/assets/images/piece/Portella/BP0.png +0 -0
  452. data/lib/bioshogi/assets/images/piece/Portella/BP1.png +0 -0
  453. data/lib/bioshogi/assets/images/piece/Portella/BR0.png +0 -0
  454. data/lib/bioshogi/assets/images/piece/Portella/BR1.png +0 -0
  455. data/lib/bioshogi/assets/images/piece/Portella/BS0.png +0 -0
  456. data/lib/bioshogi/assets/images/piece/Portella/BS1.png +0 -0
  457. data/lib/bioshogi/assets/images/piece/Portella/BX0.png +0 -0
  458. data/lib/bioshogi/assets/images/piece/Portella/WB0.png +0 -0
  459. data/lib/bioshogi/assets/images/piece/Portella/WB1.png +0 -0
  460. data/lib/bioshogi/assets/images/piece/Portella/WG0.png +0 -0
  461. data/lib/bioshogi/assets/images/piece/Portella/WK0.png +0 -0
  462. data/lib/bioshogi/assets/images/piece/Portella/WL0.png +0 -0
  463. data/lib/bioshogi/assets/images/piece/Portella/WL1.png +0 -0
  464. data/lib/bioshogi/assets/images/piece/Portella/WN0.png +0 -0
  465. data/lib/bioshogi/assets/images/piece/Portella/WN1.png +0 -0
  466. data/lib/bioshogi/assets/images/piece/Portella/WP0.png +0 -0
  467. data/lib/bioshogi/assets/images/piece/Portella/WP1.png +0 -0
  468. data/lib/bioshogi/assets/images/piece/Portella/WR0.png +0 -0
  469. data/lib/bioshogi/assets/images/piece/Portella/WR1.png +0 -0
  470. data/lib/bioshogi/assets/images/piece/Portella/WS0.png +0 -0
  471. data/lib/bioshogi/assets/images/piece/Portella/WS1.png +0 -0
  472. data/lib/bioshogi/assets/images/piece/Portella/WX0.png +0 -0
  473. data/lib/bioshogi/assets/images/piece/Portella/convert.sh +0 -32
  474. data/lib/bioshogi/board/piece_counts_methods.rb +0 -43
  475. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/README.org +0 -0
  476. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/0FU.png +0 -0
  477. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/0GI.png +0 -0
  478. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/0GY.png +0 -0
  479. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/0HI.png +0 -0
  480. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/0KA.png +0 -0
  481. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/0KE.png +0 -0
  482. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/0KI.png +0 -0
  483. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/0KI.svg +0 -0
  484. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/0KY.png +0 -0
  485. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/0NG.png +0 -0
  486. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/0NK.png +0 -0
  487. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/0NY.png +0 -0
  488. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/0OU.png +0 -0
  489. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/0RY.png +0 -0
  490. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/0TO.png +0 -0
  491. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/0UM.png +0 -0
  492. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/1FU.png +0 -0
  493. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/1GI.png +0 -0
  494. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/1GY.png +0 -0
  495. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/1HI.png +0 -0
  496. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/1KA.png +0 -0
  497. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/1KE.png +0 -0
  498. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/1KI.png +0 -0
  499. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/1KY.png +0 -0
  500. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/1NG.png +0 -0
  501. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/1NK.png +0 -0
  502. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/1NY.png +0 -0
  503. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/1OU.png +0 -0
  504. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/1RY.png +0 -0
  505. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/1TO.png +0 -0
  506. /data/lib/bioshogi/assets/images/piece/{Portella → portella}/original/1UM.png +0 -0
@@ -0,0 +1,89 @@
1
+ # convert backup/WG0.png -background none -gravity north -crop 249x245+0+11 +repage -extent 249x256 WG0.png
2
+
3
+ require "rmagick"
4
+
5
+ [
6
+ # black
7
+ { key: "0GY", output: "BK0", shift: 0, }, # 玉
8
+ { key: "0HI", output: "BR0", shift: 0, }, # 飛
9
+ { key: "0RY", output: "BR1", shift: 0, }, # 龍
10
+ { key: "0KA", output: "BB0", shift: 0, }, # 角
11
+ { key: "0UM", output: "BB1", shift: 0, }, # 馬
12
+ { key: "0KI", output: "BG0", shift: 0, }, # 金
13
+ { key: "0GI", output: "BS0", shift: 0, }, # 銀
14
+ { key: "0NG", output: "BS1", shift: 0, }, # 成銀
15
+ { key: "0KE", output: "BN0", shift: 0, }, # 桂
16
+ { key: "0NK", output: "BN1", shift: 0, }, # 成桂
17
+ { key: "0KY", output: "BL0", shift: 0, }, # 香
18
+ { key: "0NY", output: "BL1", shift: 0, }, # 成香
19
+ { key: "0FU", output: "BP0", shift: 0, }, # 歩
20
+ { key: "0TO", output: "BP1", shift: 0, }, # と
21
+ # white
22
+ { key: "1OU", output: "WK0", shift: 0, }, # 王
23
+ { key: "1HI", output: "WR0", shift: -2, }, # 飛
24
+ { key: "1RY", output: "WR1", shift: -2, }, # 龍
25
+ { key: "1KA", output: "WB0", shift: -2, }, # 角
26
+ { key: "1UM", output: "WB1", shift: -2, }, # 馬
27
+ { key: "1KI", output: "WG0", shift: -7, }, # 金
28
+ { key: "1GI", output: "WS0", shift: -8, }, # 銀
29
+ { key: "1NG", output: "WS1", shift: -8, }, # 成銀
30
+ { key: "1KE", output: "WN0", shift: -10, }, # 桂
31
+ { key: "1NK", output: "WN1", shift: -10, }, # 成桂
32
+ { key: "1KY", output: "WL0", shift: -11, }, # 香
33
+ { key: "1NY", output: "WL1", shift: -11, }, # 成香
34
+ { key: "1FU", output: "WP0", shift: -15, }, # 歩
35
+ { key: "1TO", output: "WP1", shift: -15, }, # と
36
+ ].each do |e|
37
+ in_file = "original/#{e[:key]}.png"
38
+ # system "identify #{in_file}"
39
+
40
+ image = Magick::Image.read(in_file).first
41
+ image.background_color = "transparent"
42
+ w = image.columns
43
+ h = image.rows
44
+
45
+ if e[:shift].negative?
46
+ shift = -e[:shift]
47
+ image = image.crop(0, shift, w, h - shift)
48
+ image = image.extent(w, h, 0, shift)
49
+ end
50
+
51
+ if e[:shift].positive?
52
+ shift = e[:shift]
53
+ image = image.crop(0, 0, w, h - shift)
54
+ image = image.extent(w, h, 0, -shift)
55
+ end
56
+
57
+ output = "#{e[:output] || e[:key]}.png"
58
+ image.write(output)
59
+ system "identify #{output}"
60
+ # system "open #{output}"
61
+ end
62
+ # >> BK0.png PNG 249x256 249x256+0+0 8-bit sRGB 21394B 0.000u 0:00.000
63
+ # >> BR0.png PNG 249x256 249x256+0+0 8-bit sRGB 21201B 0.000u 0:00.000
64
+ # >> BR1.png PNG 249x256 249x256+0+0 8-bit sRGB 21088B 0.000u 0:00.000
65
+ # >> BB0.png PNG 249x256 249x256+0+0 8-bit sRGB 20445B 0.000u 0:00.000
66
+ # >> BB1.png PNG 249x256 249x256+0+0 8-bit sRGB 21050B 0.000u 0:00.000
67
+ # >> BG0.png PNG 249x256 249x256+0+0 8-bit sRGB 18238B 0.000u 0:00.000
68
+ # >> BS0.png PNG 249x256 249x256+0+0 8-bit sRGB 19030B 0.000u 0:00.000
69
+ # >> BS1.png PNG 249x256 249x256+0+0 8-bit sRGB 18668B 0.000u 0:00.000
70
+ # >> BN0.png PNG 249x256 249x256+0+0 8-bit sRGB 18237B 0.000u 0:00.000
71
+ # >> BN1.png PNG 249x256 249x256+0+0 8-bit sRGB 17585B 0.000u 0:00.000
72
+ # >> BL0.png PNG 249x256 249x256+0+0 8-bit sRGB 17442B 0.000u 0:00.000
73
+ # >> BL1.png PNG 249x256 249x256+0+0 8-bit sRGB 16914B 0.000u 0:00.000
74
+ # >> BP0.png PNG 249x256 249x256+0+0 8-bit sRGB 15925B 0.000u 0:00.000
75
+ # >> BP1.png PNG 249x256 249x256+0+0 8-bit sRGB 14981B 0.000u 0:00.000
76
+ # >> WK0.png PNG 249x256 249x256+0+0 8-bit sRGB 22284B 0.000u 0:00.000
77
+ # >> WR0.png PNG 249x256 249x258+0+2 8-bit sRGB 23687B 0.000u 0:00.000
78
+ # >> WR1.png PNG 249x256 249x258+0+2 8-bit sRGB 22756B 0.000u 0:00.000
79
+ # >> WB0.png PNG 249x256 249x258+0+2 8-bit sRGB 22615B 0.000u 0:00.000
80
+ # >> WB1.png PNG 249x256 249x258+0+2 8-bit sRGB 22748B 0.000u 0:00.000
81
+ # >> WG0.png PNG 249x256 249x263+0+7 8-bit sRGB 20611B 0.000u 0:00.000
82
+ # >> WS0.png PNG 249x256 249x264+0+8 8-bit sRGB 20354B 0.000u 0:00.000
83
+ # >> WS1.png PNG 249x256 249x264+0+8 8-bit sRGB 20174B 0.000u 0:00.000
84
+ # >> WN0.png PNG 249x256 249x266+0+10 8-bit sRGB 19168B 0.000u 0:00.000
85
+ # >> WN1.png PNG 249x256 249x266+0+10 8-bit sRGB 18829B 0.000u 0:00.000
86
+ # >> WL0.png PNG 249x256 249x267+0+11 8-bit sRGB 18242B 0.000u 0:00.000
87
+ # >> WL1.png PNG 249x256 249x267+0+11 8-bit sRGB 18471B 0.000u 0:00.000
88
+ # >> WP0.png PNG 249x256 249x272+0+15 8-bit sRGB 17312B 0.000u 0:00.000
89
+ # >> WP1.png PNG 249x256 249x272+0+15 8-bit sRGB 15967B 0.000u 0:00.000
@@ -18,7 +18,8 @@ module Bioshogi
18
18
  include TechniqueMatcherMethods
19
19
 
20
20
  prepend Analysis::BoardPillerMethods
21
- prepend PieceCountsMethods
21
+ prepend Analysis::BoardPieceCountsMethods
22
+ prepend Analysis::CoreSoldierPlaceMethods
22
23
  end
23
24
  end
24
25
  end
@@ -10,10 +10,10 @@ module Bioshogi
10
10
 
11
11
  def params
12
12
  @params ||= {
13
- :analyzer_enable => false,
14
- :analyzer_technique_enable => false,
15
- :candidate_enable => true,
16
- :validate_enable => true,
13
+ :analysis_feature => false,
14
+ :analysis_technique_feature => false,
15
+ :ki2_function => true,
16
+ :validate_feature => true,
17
17
  :board_class => Board,
18
18
  }
19
19
  end
@@ -0,0 +1,34 @@
1
+ # frozen-string-literal: true
2
+ #
3
+ # h = CounterHash.new
4
+ # h[:x] # => 0
5
+ # h.increment(:x) # => 1
6
+ # h.keys # => [:x]
7
+ # h.decrement(:x) # => 0
8
+ # h.keys # => []
9
+ # h.count # => 0
10
+ #
11
+ module Bioshogi
12
+ class CounterHash < Hash
13
+ def initialize
14
+ super(0)
15
+ end
16
+
17
+ def increment(key)
18
+ self[key] += 1
19
+ end
20
+
21
+ def decrement(key)
22
+ self[key] -= 1
23
+ zero_then_delete(key)
24
+ end
25
+
26
+ private
27
+
28
+ def zero_then_delete(key)
29
+ if self[key].zero?
30
+ delete(key)
31
+ end
32
+ end
33
+ end
34
+ end
@@ -10,7 +10,7 @@ module Bioshogi
10
10
  end
11
11
 
12
12
  def call
13
- # Bioshogi.config[:analyzer_enable] = false
13
+ # Bioshogi.config[:analysis_feature] = false
14
14
 
15
15
  error_body.delete rescue nil
16
16
  result = Hash.new(0)
@@ -101,28 +101,36 @@ module Bioshogi
101
101
  @screen_image_renderer = ScreenImage.renderer(@container, params)
102
102
 
103
103
  if factory_method_key == "is_factory_method_rmagick"
104
- @progress_cop = ProgressCop.new(1 + 1 + @formatter.pi.move_infos.size + 3 + 7, &params[:progress_callback])
104
+ @progress_cop = ProgressCop.new(begin_pages + 1 + @formatter.pi.move_infos.size + end_pages + 7, &params[:progress_callback])
105
105
 
106
106
  begin
107
107
  list = Magick::ImageList.new
108
108
 
109
109
  if v = params[:cover_text].presence
110
- @progress_cop.next_step("表紙描画")
111
- tob("表紙描画") { list << CoverImage.renderer(text: v, **params.slice(:bottom_text, :width, :height)).render }
110
+ cover_image = CoverImage.renderer(text: v, **params.slice(:bottom_text, :width, :height)).render
111
+ begin_pages.times do |i|
112
+ @progress_cop.next_step("表紙描画 #{i}/#{begin_pages}")
113
+ tob("表紙描画 #{i}/#{begin_pages}") { list << cover_image.copy }
114
+ end
112
115
  end
113
116
 
114
117
  @progress_cop.next_step("初期配置")
115
118
  list << @screen_image_renderer.next_build
119
+
120
+ # 駒の動き
116
121
  @formatter.pi.move_infos.each.with_index do |e, i|
117
122
  @progress_cop.next_step("(#{i}/#{@formatter.pi.move_infos.size}) #{e[:input]}")
118
123
  @container.execute(e[:input])
119
124
  list << @screen_image_renderer.next_build
120
125
  logger.info { "move: #{i} / #{@formatter.pi.move_infos.size}" } if i.modulo(10).zero?
121
126
  end
127
+
128
+ # 終了図
122
129
  end_pages.times do |i|
123
130
  @progress_cop.next_step("終了図 #{i}/#{end_pages}")
124
131
  tob("終了図 #{i}/#{end_pages}") { list << @screen_image_renderer.last_rendered_image.copy }
125
132
  end
133
+
126
134
  @progress_cop.next_step("mp4 生成")
127
135
  heavy_tob(:write) do
128
136
  list.write("_output0.mp4") # staging ではここで例外も出さずに落ちることがある
@@ -143,23 +151,18 @@ module Bioshogi
143
151
  end
144
152
 
145
153
  if factory_method_key == "is_factory_method_ffmpeg"
146
- logger.info { "[TRACE] #{__FILE__}:#{__LINE__}" }
147
- @progress_cop = ProgressCop.new(1 + 1 + @formatter.pi.move_infos.size + end_pages + 1 + 6, &params[:progress_callback])
154
+ @progress_cop = ProgressCop.new(begin_pages + 1 + @formatter.pi.move_infos.size + end_pages + 1 + 6, &params[:progress_callback])
148
155
 
149
- logger.info { "[TRACE] #{__FILE__}:#{__LINE__}" }
150
156
  if v = params[:cover_text].presence
151
- logger.info { "[TRACE] #{__FILE__}:#{__LINE__}" }
152
- @progress_cop.next_step("表紙描画")
153
- logger.info { "[TRACE] #{__FILE__}:#{__LINE__}" }
154
- tob("表紙描画") { CoverImage.renderer(text: v, **params.slice(:bottom_text, :width, :height)).render.write(sfg.next) }
155
- logger.info { "[TRACE] #{__FILE__}:#{__LINE__}" }
157
+ cover_image = CoverImage.renderer(text: v, **params.slice(:bottom_text, :width, :height)).render
158
+ begin_pages.times do |i|
159
+ @progress_cop.next_step("表紙描画 #{i}/#{begin_pages}")
160
+ tob("表紙描画 #{i}/#{begin_pages}") { cover_image.write(sfg.next) }
161
+ end
156
162
  end
157
163
 
158
- logger.info { "[TRACE] #{__FILE__}:#{__LINE__}" }
159
164
  @progress_cop.next_step("初期配置")
160
- logger.info { "[TRACE] #{__FILE__}:#{__LINE__}" }
161
165
  tob("初期配置") { @screen_image_renderer.next_build.write(sfg.next) }
162
- logger.info { "[TRACE] #{__FILE__}:#{__LINE__}" }
163
166
 
164
167
  @formatter.pi.move_infos.each.with_index do |e, i|
165
168
  @progress_cop.next_step("(#{i}/#{@formatter.pi.move_infos.size}) #{e[:input]}")
@@ -15,8 +15,13 @@ module Bioshogi
15
15
  super.merge({
16
16
  # 全体
17
17
  :page_duration => 1.0, # 1手N秒 10000/60 = 166.666666667 なので 0.0166666666667 を指定すると 60 FPS になる
18
- :end_duration => 0, # 終了図をN秒表示する
18
+
19
+ :begin_pages => 1, # 表紙を表示するフレーム数。空なら begin_duration / page_duration
20
+ :begin_duration => nil, # 表紙をN秒表示する (こちらを有効にするには同時に begin_pages を nil すること)
21
+
19
22
  :end_pages => nil, # 終了図追加フレーム数。空なら end_duration / page_duration
23
+ :end_duration => 0, # 終了図をN秒表示する
24
+
20
25
  :progress_callback => nil, # 進捗通知用
21
26
  :cover_text => nil, # 表紙(nilなら作らない)
22
27
  :bottom_text => nil, # 表紙の右下に小さく表示する1行
@@ -64,6 +69,14 @@ module Bioshogi
64
69
  end
65
70
  end
66
71
 
72
+ def begin_pages
73
+ if v = params[:begin_pages]
74
+ v.to_i
75
+ else
76
+ params[:begin_duration].fdiv(page_duration).ceil
77
+ end
78
+ end
79
+
67
80
  # 最後の局面を追加で足す回数
68
81
  # これを設定しても最終的な秒数は不明なため基本指定せず、指定した end_duration から算出した方がよい
69
82
  # |------------------+------------------------+-----------+-----+----------------|
@@ -76,10 +76,10 @@ module Bioshogi
76
76
  def container_new
77
77
  container_class.new.tap do |e|
78
78
  e.params.update(@parser_options.slice(*[
79
- :analyzer_enable,
80
- :analyzer_technique_enable,
81
- :candidate_enable,
82
- :validate_enable,
79
+ :analysis_feature,
80
+ :analysis_technique_feature,
81
+ :ki2_function,
82
+ :validate_feature,
83
83
  :validate_double_pawn_skip,
84
84
  :validate_warp_skip,
85
85
  ]))
@@ -90,10 +90,10 @@ module Bioshogi
90
90
  def container_for_image
91
91
  container = Container::Basic.new
92
92
  container.params.update({
93
- :analyzer_enable => false,
94
- :analyzer_technique_enable => false,
95
- :candidate_enable => false,
96
- :validate_enable => false,
93
+ :analysis_feature => false,
94
+ :analysis_technique_feature => false,
95
+ :ki2_function => false,
96
+ :validate_feature => false,
97
97
  })
98
98
  container_init(container) # FIXME: これ、必要ない SFEN を生成したりして遅い
99
99
  container
@@ -163,7 +163,7 @@ module Bioshogi
163
163
 
164
164
  def container_run_all(container)
165
165
  Runner.new(self, container).call
166
- if @parser_options[:analyzer_enable]
166
+ if @parser_options[:analysis_feature]
167
167
  SkillEmbed.new(self, container).call
168
168
  StyleEmbed.new(self, container).call
169
169
  end
@@ -15,6 +15,9 @@ module Bioshogi
15
15
 
16
16
  def call
17
17
  miyakodume_check
18
+ tsurushikei_check
19
+ settintsume_check
20
+
18
21
  meijin_judgement # 力戦より前
19
22
  rikisen_judgement
20
23
 
@@ -88,21 +91,15 @@ module Bioshogi
88
91
  end
89
92
 
90
93
  def miyakodume_check
91
- if last_action_params = @xparser.pi.last_action_params
92
- if last_action_key = last_action_params[:last_action_key]
93
- if last_action_info = LastActionInfo[last_action_key]
94
- if last_action_info.key == :TSUMI
95
- if soldier = @container.board["55"]
96
- if soldier.piece.key == :king
97
- tag = Analysis::NoteInfo["都詰め"]
98
- if @container.lose_player.location == soldier.location
99
- @container.win_player.skill_set.list_push(tag)
100
- # 最後の手にも入れておく
101
- if hand_log = @container.hand_logs.last
102
- hand_log.skill_set.list_push(tag)
103
- end
104
- end
105
- end
94
+ if @xparser.pi.saigoha_tsumi_p
95
+ if soldier = @container.board["55"]
96
+ if soldier.piece.key == :king
97
+ if @container.lose_player.location == soldier.location
98
+ tag = Analysis::NoteInfo["都詰め"]
99
+ @container.win_player.skill_set.list_push(tag)
100
+ # 最後の手にも入れておく
101
+ if hand_log = @container.hand_logs.last
102
+ hand_log.skill_set.list_push(tag)
106
103
  end
107
104
  end
108
105
  end
@@ -110,6 +107,38 @@ module Bioshogi
110
107
  end
111
108
  end
112
109
 
110
+ def settintsume_check
111
+ if @xparser.pi.saigoha_tsumi_p
112
+ found = ["11", "91", "19", "99"].any? do |e|
113
+ if soldier = @container.board[e]
114
+ if soldier.piece.key == :king
115
+ @container.lose_player.location == soldier.location
116
+ end
117
+ end
118
+ end
119
+ if found
120
+ tag = Analysis::NoteInfo["雪隠詰め"]
121
+ @container.win_player.skill_set.list_push(tag)
122
+ # 最後の手にも入れておく
123
+ if hand_log = @container.hand_logs.last
124
+ hand_log.skill_set.list_push(tag)
125
+ end
126
+ end
127
+ end
128
+ end
129
+
130
+ def tsurushikei_check
131
+ if @xparser.pi.saigoha_tsumi_p
132
+ if hand_log = @container.hand_logs.last
133
+ tag = Analysis::NoteInfo["吊るし桂"]
134
+ if hand_log.soldier.piece.key == :knight
135
+ @container.win_player.skill_set.list_push(tag) # 勝者に入れておく
136
+ hand_log.skill_set.list_push(tag) # 最後の手にも入れておく
137
+ end
138
+ end
139
+ end
140
+ end
141
+
113
142
  def ainyugyoku_judgement
114
143
  if @container.players.all? { |e| e.skill_set.has_skill?(Analysis::NoteInfo["入玉"]) }
115
144
  @container.players.each do |player|
@@ -181,7 +210,7 @@ module Bioshogi
181
210
  if @container.turn_info.display_turn >= MIN_TURN
182
211
  if win_side_location
183
212
  player = @container.player_at(win_side_location)
184
- if player.stronger_piece_have_count.zero? # 最後の状態でも全ブッチ状態なら
213
+ if player.strong_piece_have_count.zero? # 最後の状態でも全ブッチ状態なら
185
214
  if player.skill_set.has_skill?(Analysis::NoteInfo["大駒全ブッチ"]) # 途中、大駒全ブッチしいて (←これがないと 相入玉.kif でも入ってしまう)
186
215
  player.skill_set.list_push(Analysis::NoteInfo["背水の陣"])
187
216
  end
@@ -40,7 +40,7 @@ module Bioshogi
40
40
  unless anaguma_formation? # 相手が穴熊状態か?
41
41
  return
42
42
  end
43
- # unless stronger_piece_completed? # 大駒コンプリートしている? → overwhelming_score? の方が汎用的
43
+ # unless strong_piece_completed? # 大駒コンプリートしている? → overwhelming_score? の方が汎用的
44
44
  # return
45
45
  # end
46
46
  unless win_player.overwhelming_score? # 自分が圧倒的な戦力を持っているか?
@@ -22,7 +22,7 @@ module Bioshogi
22
22
  @hand_log = hand_log
23
23
 
24
24
  unless candidate_soldiers
25
- raise BioshogiError, "candidate_enable オプションが有効になっていないため KI2 の特殊な移動表記を作れません"
25
+ raise BioshogiError, "ki2_function オプションが有効になっていないため KI2 の特殊な移動表記を作れません"
26
26
  end
27
27
  end
28
28
 
@@ -25,11 +25,11 @@ module Bioshogi
25
25
  # skip: 棋譜には記さない
26
26
  # false: 例外を出す(デフォルト)
27
27
  :typical_error_case => false,
28
- :analyzer_enable => true,
29
- :analyzer_technique_enable => true,
30
- :candidate_enable => true, # ki2にしないのであれば指定するとかなり速くなる
28
+ :analysis_feature => true,
29
+ :analysis_technique_feature => true,
30
+ :ki2_function => true, # ki2にしないのであれば指定するとかなり速くなる
31
31
 
32
- :validate_enable => true, # 将棋ウォーズの棋譜なら指定すると少し速くなる
32
+ :validate_feature => true, # 将棋ウォーズの棋譜なら指定すると少し速くなる
33
33
  :validate_double_pawn_skip => false, # 二歩を無視するか?
34
34
  :validate_warp_skip => false, # 角ワープを無視するか?
35
35
  }
@@ -51,6 +51,17 @@ module Bioshogi
51
51
  end
52
52
  end
53
53
  end
54
+
55
+ # 詰みまで指したか?
56
+ def saigoha_tsumi_p
57
+ if last_action_params
58
+ if last_action_key = last_action_params[:last_action_key]
59
+ if last_action_info = Formatter::LastActionInfo[last_action_key]
60
+ last_action_info.key == :TSUMI
61
+ end
62
+ end
63
+ end
64
+ end
54
65
  end
55
66
  end
56
67
  end
@@ -97,14 +97,14 @@ module Bioshogi
97
97
 
98
98
  include ApplicationMemoryRecord
99
99
  memory_record [
100
- { key: :king, name: "玉", basic_alias: "王", promoted_name: nil, promoted_formal_sheet_name: nil, other_matched_promoted_names: nil, sfen_char: "K", promotable: false, always_alive: true, stronger: false, dengaku_target: true, tatakare_target: true, maesusumeru: true, },
101
- { key: :rook, name: "飛", basic_alias: nil, promoted_name: "龍", promoted_formal_sheet_name: nil, other_matched_promoted_names: "竜", sfen_char: "R", promotable: true, always_alive: true, stronger: true, dengaku_target: true, tatakare_target: true, maesusumeru: true, },
102
- { key: :bishop, name: "角", basic_alias: nil, promoted_name: "馬", promoted_formal_sheet_name: nil, other_matched_promoted_names: nil, sfen_char: "B", promotable: true, always_alive: true, stronger: true, dengaku_target: true, tatakare_target: false, maesusumeru: false, },
103
- { key: :gold, name: "金", basic_alias: nil, promoted_name: nil, promoted_formal_sheet_name: nil, other_matched_promoted_names: nil, sfen_char: "G", promotable: false, always_alive: true, stronger: false, dengaku_target: false, tatakare_target: true, maesusumeru: true, },
104
- { key: :silver, name: "銀", basic_alias: nil, promoted_name: "全", promoted_formal_sheet_name: "成銀", other_matched_promoted_names: nil, sfen_char: "S", promotable: true, always_alive: true, stronger: false, dengaku_target: false, tatakare_target: true, maesusumeru: true, },
105
- { key: :knight, name: "桂", basic_alias: nil, promoted_name: "圭", promoted_formal_sheet_name: "成桂", other_matched_promoted_names: "今", sfen_char: "N", promotable: true, always_alive: false, stronger: false, dengaku_target: false, tatakare_target: false, maesusumeru: false, },
106
- { key: :lance, name: "香", basic_alias: nil, promoted_name: "杏", promoted_formal_sheet_name: "成香", other_matched_promoted_names: "仝", sfen_char: "L", promotable: true, always_alive: false, stronger: false, dengaku_target: false, tatakare_target: false, maesusumeru: true, },
107
- { key: :pawn, name: "歩", basic_alias: nil, promoted_name: "と", promoted_formal_sheet_name: nil, other_matched_promoted_names: nil, sfen_char: "P", promotable: true, always_alive: false, stronger: false, dengaku_target: false, tatakare_target: false, maesusumeru: true, },
100
+ { key: :king, name: "玉", basic_alias: "王", promoted_name: nil, promoted_formal_sheet_name: nil, other_matched_promoted_names: nil, sfen_char: "K", promotable: false, always_alive: true, strong: false, core_piece: true, dengaku_target: true, tatakare_target: true, maesusumeru: true, },
101
+ { key: :rook, name: "飛", basic_alias: nil, promoted_name: "龍", promoted_formal_sheet_name: nil, other_matched_promoted_names: "竜", sfen_char: "R", promotable: true, always_alive: true, strong: true, core_piece: true, dengaku_target: true, tatakare_target: true, maesusumeru: true, },
102
+ { key: :bishop, name: "角", basic_alias: nil, promoted_name: "馬", promoted_formal_sheet_name: nil, other_matched_promoted_names: nil, sfen_char: "B", promotable: true, always_alive: true, strong: true, core_piece: true, dengaku_target: true, tatakare_target: false, maesusumeru: false, },
103
+ { key: :gold, name: "金", basic_alias: nil, promoted_name: nil, promoted_formal_sheet_name: nil, other_matched_promoted_names: nil, sfen_char: "G", promotable: false, always_alive: true, strong: false, core_piece: false, dengaku_target: false, tatakare_target: true, maesusumeru: true, },
104
+ { key: :silver, name: "銀", basic_alias: nil, promoted_name: "全", promoted_formal_sheet_name: "成銀", other_matched_promoted_names: nil, sfen_char: "S", promotable: true, always_alive: true, strong: false, core_piece: false, dengaku_target: false, tatakare_target: true, maesusumeru: true, },
105
+ { key: :knight, name: "桂", basic_alias: nil, promoted_name: "圭", promoted_formal_sheet_name: "成桂", other_matched_promoted_names: "今", sfen_char: "N", promotable: true, always_alive: false, strong: false, core_piece: false, dengaku_target: false, tatakare_target: false, maesusumeru: false, },
106
+ { key: :lance, name: "香", basic_alias: nil, promoted_name: "杏", promoted_formal_sheet_name: "成香", other_matched_promoted_names: "仝", sfen_char: "L", promotable: true, always_alive: false, strong: false, core_piece: false, dengaku_target: false, tatakare_target: false, maesusumeru: true, },
107
+ { key: :pawn, name: "歩", basic_alias: nil, promoted_name: "と", promoted_formal_sheet_name: nil, other_matched_promoted_names: nil, sfen_char: "P", promotable: true, always_alive: false, strong: false, core_piece: false, dengaku_target: false, tatakare_target: false, maesusumeru: true, },
108
108
  ]
109
109
 
110
110
  class << self
@@ -129,6 +129,10 @@ module Bioshogi
129
129
  def promoted_group
130
130
  @promoted_group ||= inject({}) { |a, e| a.merge(e.promoted_names.collect { |key| [key, e] }.to_h) }
131
131
  end
132
+
133
+ def strong_pieces
134
+ @strong_pieces ||= find_all(&:strong)
135
+ end
132
136
  end
133
137
 
134
138
  def inspect
@@ -143,6 +147,10 @@ module Bioshogi
143
147
  promotable
144
148
  end
145
149
 
150
+ def core_piece?
151
+ core_piece
152
+ end
153
+
146
154
  concerning :NameMethods do
147
155
  class_methods do
148
156
  def all_names
@@ -0,0 +1,47 @@
1
+ # frozen-string-literal: true
2
+ #
3
+ # 駒柱をなるべく高速に判定する
4
+ #
5
+ module Bioshogi
6
+ class PillerCop
7
+ attr_reader :counts
8
+ attr_accessor :active
9
+
10
+ def initialize
11
+ reset
12
+ end
13
+
14
+ def active?
15
+ @active
16
+ end
17
+
18
+ def reset
19
+ @counts = Array.new(Dimension::Column.dimension_size, 0)
20
+ @active = false
21
+ end
22
+
23
+ def set(place)
24
+ index = place.column.value
25
+ count = @counts[index] + 1
26
+ if count > Dimension::Row.dimension_size
27
+ raise MustNotHappen, "#{place.column.hankaku_number}の列に#{count}個目の駒を配置しようとしています。棋譜を二重に読ませようとしていませんか?"
28
+ end
29
+ @counts[index] = count
30
+ if count == Dimension::Row.dimension_size
31
+ @active = true
32
+ end
33
+ end
34
+
35
+ def remove(place)
36
+ index = place.column.value
37
+ count = @counts[index] - 1
38
+ if count.negative?
39
+ raise MustNotHappen, "#{place.column.hankaku_number}の列の駒の数がマイナスになろうとしていています"
40
+ end
41
+ @counts[index] = count
42
+ if count == Dimension::Row.dimension_size - 1
43
+ @active = false
44
+ end
45
+ end
46
+ end
47
+ end
@@ -64,6 +64,10 @@ module Bioshogi
64
64
  lookup(value)
65
65
  end
66
66
 
67
+ def zero
68
+ fetch([0, 0])
69
+ end
70
+
67
71
  def cache_clear
68
72
  if @cache
69
73
  @cache.each_value do |hv|
@@ -3,48 +3,31 @@
3
3
  module Bioshogi
4
4
  class Player
5
5
  module OtherMethods
6
- attr_writer :king_moved_counter
7
- attr_accessor :king_place
8
- attr_accessor :king_first_moved_turn # 玉が最初に動いた手数
9
- attr_accessor :death_counter # 駒が死んだ数
10
-
11
- def king_moved_counter
12
- @king_moved_counter ||= 0
13
- end
14
-
15
- def king_place
16
- @king_place ||= king_soldier&.place
17
- end
18
-
19
- def king_place_update
20
- @king_place = king_soldier&.place
21
- end
22
-
23
- def used_piece_counts
24
- @used_piece_counts ||= Hash.new(0)
25
- end
6
+ STRONG_PIECE_ALL_COUNT = Location.count * Piece.strong_pieces.count
26
7
 
27
8
  ################################################################################
28
9
 
29
10
  # 大駒コンプリートしている?
30
- def stronger_piece_completed?
31
- stronger_piece_have_count >= 4
11
+ def strong_piece_completed?
12
+ strong_piece_have_count >= STRONG_PIECE_ALL_COUNT
32
13
  end
33
14
 
34
15
  # 大駒の数
35
- def stronger_piece_have_count
36
- count = 0
37
-
38
- # 持駒の大駒
39
- count += piece_box[:rook] || 0
40
- count += piece_box[:bishop] || 0
16
+ def strong_piece_have_count
17
+ Piece.strong_pieces.sum do |e|
18
+ piece_box.fetch(e.key, 0) + board.specific_piece_count_for(location.key, e.key)
19
+ end
20
+ end
41
21
 
42
- # 盤上の大駒
43
- key = location.key
44
- count += board.piece_count_of(key, :rook)
45
- count += board.piece_count_of(key, :bishop)
22
+ ################################################################################
46
23
 
47
- count
24
+ def zengoma?
25
+ if board.location_piece_counts[opponent_player.location.key] == 1 # 盤上の相手の駒が1つ
26
+ if opponent_player.piece_box.empty? # 相手の持駒がない
27
+ location = opponent_player.location # 相手の側
28
+ board.soldiers.one? { |e| e.piece.key == :king && e.location == location } # 相手の残りの駒が玉か? (最後に重い処理を持ってくる)
29
+ end
30
+ end
48
31
  end
49
32
 
50
33
  ################################################################################
@@ -9,7 +9,7 @@ module Bioshogi
9
9
  @piece_box ||= PieceBox.new
10
10
  end
11
11
 
12
- def pieces_add(str = "歩9角飛香2桂2銀2金2玉")
12
+ def pieces_add(str = PieceBox::ONE_SIDE_PIECES)
13
13
  piece_box.add(Piece.s_to_h(str))
14
14
  end
15
15