Skip to content

駒フェイズ直後に相手の囲み駒・石を除去するよう修正#25

Open
rehakomoon wants to merge 1 commit into
Shoggoss:mainfrom
rehakomoon:main
Open

駒フェイズ直後に相手の囲み駒・石を除去するよう修正#25
rehakomoon wants to merge 1 commit into
Shoggoss:mainfrom
rehakomoon:main

Conversation

@rehakomoon
Copy link
Copy Markdown

// Claude Codeで実装

従来の one_turnplay_piece_phase → place_stone → resolve_after_stone_phase
の順で進み、駒フェイズと石フェイズの間に囲み除去が走りません。そのため、駒フェイズの着手で相手の石を四方から囲み、同ターンでそのマスへ自分の石を打つ手順でエラー「…のマスは既に埋まっています」が発生していました。

具体的な再現棋譜(40手目 △5六ビ5五 で発火):

  ▲7六ナ4四 △6二金5五 ▲5五ナ4六 △1四ナ4二 ▲6八ク5八 △1一キ7五
  ▲9五ポ9七 △2二銀7六 ▲5六ポ8五 △4四ポ2四 ▲3六ナ右6四 △6四ポ3五
  ▲7四ナ1六 △4三ク5二 ▲5五ナ右3六 △3六ビ   ▲7六ナ5五 △4五ポ5四
  ▲5七ナ4八 △6一ナ   ▲1九キ6六 △7二ル7六 ▲9三ナ4四 △8二銀3四
  ▲8一ナ8四 △4六ポ9三 ▲4六ポ2五 △4六ク4三 ▲9三ナ7一 △5七ク9二
  ▲7四ナ2六 △45ビ9六 ▲8二ナ4六 △4八ク6五 ▲4八金7四 △5六ビ4七
  ▲4七ビ   △6七ビ4五 ▲6一ナ8二 △5六ビ5五
  • src/index.ts : one_turn 内、play_piece_phase の直後に「相手の囲まれた駒・石の除去」呼び出しを追加
  • src/after_stone_phase.ts : 既存の remove_surrounded_enitities_from_board_and_add_to_hand_if_necessaryexport 化し、受け取り型を StonePhasePlayed から構造的部分型 { board, hand_of_black, hand_of_white } に緩和(PiecePhasePlayed でも呼べるようにするため。ロジックは不変)
  • src/tests/place_stone.test.ts : 最小再現の回帰テストを追加

Per the official rule (shogoss-comprehensive-rules.md §4):
「駒フェーズの後に,すぐに相手の石・駒の囲みを判定し囲まれていれば
除去される(自分の駒は除去されない).」

Previously `one_turn` went straight from `play_piece_phase` to
`place_stone`, so if a piece move surrounded an opponent's stone, the
stone was still on the board when `place_stone` ran, and placing a
stone on the (supposedly-now-empty) square failed with
「マスは既に埋まっています」.

Insert the opponent-removal step between the two phases, reusing the
existing helper (signature loosened from `StonePhasePlayed` to a
structural `{ board, hand_of_black, hand_of_white }`).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant