From 137dacef7cfd71cf098633b4be6a562dea2f8279 Mon Sep 17 00:00:00 2001 From: "masahiro.kasatani" Date: Mon, 30 Mar 2026 23:08:42 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E3=82=B9=E3=83=86=E3=83=BC?= =?UTF-8?q?=E3=82=B81-3=E3=81=AE=E3=83=9E=E3=83=83=E3=83=97=E3=82=92?= =?UTF-8?q?=E5=AD=A6=E7=BF=92=E3=83=86=E3=83=BC=E3=83=9E=E3=81=AB=E5=90=88?= =?UTF-8?q?=E3=82=8F=E3=81=9B=E3=81=A6=E5=86=8D=E8=A8=AD=E8=A8=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - map01 (Basic Movement): 部屋と通路の構造で h/j/k/l を全方向使う設計 - map02 (Word Motion): リンゴを単語状のクラスターに配置し w/e/b を活用する設計 - map03 (Line & File Motion): 上下端に密集・左右端に行リンゴを配置し gg/G/0/$ を活用する設計 - wantApples を新マップに合わせて更新 (170 → 139) Co-Authored-By: Claude Sonnet 4.6 --- state/files/stage/map01.txt | 28 ++++++++++++++-------------- state/files/stage/map02.txt | 28 ++++++++++++++-------------- state/files/stage/map03.txt | 28 ++++++++++++++-------------- state/map_test.go | 2 +- 4 files changed, 43 insertions(+), 43 deletions(-) diff --git a/state/files/stage/map01.txt b/state/files/stage/map01.txt index da1a402..001c946 100644 --- a/state/files/stage/map01.txt +++ b/state/files/stage/map01.txt @@ -1,15 +1,15 @@ +++++++++++++++++++++++++++++ -+ oooo o oooo + -+ oooo ooo oooo + -+ ooooH ooooooo oooo + -+ ooooooooooo + -+ oooooo!!!oooooo + -+ oooo!ooooooooo!oooo + -+ oooooo!ooooPoooo!oooooo + -+ oooo!ooooooooo!oooo + -+ oooooo!!!oooooo + -+ ooooooooooo + -+ oooo ooooooo Hoooo + -+ oooo ooo oooo + -+ oooo o oooo + -+++++++++++++++++++++++++++++ \ No newline at end of file ++ooooooo ooooooooo ooooo+ ++o o o o o o+ ++o H o o o o o+ ++o o ooooooooo o o+ ++ooooooo ooooo+ ++ + ++ooooooooooo P ooooooooooo+ ++ + ++ooooooo ooooo+ ++o o ooooooooo o o+ ++o o o o o o+ ++o oHo o o o o+ ++ooooooo ooooooooo ooooo+ ++++++++++++++++++++++++++++++ diff --git a/state/files/stage/map02.txt b/state/files/stage/map02.txt index 96c9fdf..dc7ee1d 100644 --- a/state/files/stage/map02.txt +++ b/state/files/stage/map02.txt @@ -1,15 +1,15 @@ +++++++++++++++++++++++++++++ -+ o ! ooooo ooooo ! o + -+ooo !oooooo oooooo! ooo+ -+ o !!oooo oooo!! o + -+ooooHooo ooo oooo+ -+oo ooo !!!!! ooo oo+ -+oooo o! XoooX !o oooo+ -+!!!! !XoooPoooX! !!!!+ -+oooo o! XoooX !o oooo+ -+oo ooo !!!!! ooo oo+ -+ooooGooo oooHoooo+ -+ o !!oooo oooo!! o + -+ooo ! ooooo ooooo ! ooo+ -+ o ! ooooo ooooo ! o + -+++++++++++++++++++++++++++++ \ No newline at end of file ++ ooo ooooo ooo oooo + ++ ooo ooooo ooo oooo + ++ + ++ oooo ooo ooooo oooo + ++ oooo ooo ooooo oooo + ++H G+ ++ ooo P ooo + ++G H+ ++ oooo ooo ooooo oooo + ++ oooo ooo ooooo oooo + ++ + ++ ooo ooooo ooo oooo + ++ ooo ooooo ooo oooo + ++++++++++++++++++++++++++++++ diff --git a/state/files/stage/map03.txt b/state/files/stage/map03.txt index 23fc53d..0c91c54 100644 --- a/state/files/stage/map03.txt +++ b/state/files/stage/map03.txt @@ -1,15 +1,15 @@ +++++++++++++++++++++++++++++ -+XoooooooooooX!XoooooooooooX+ -+o H o!o G o+ -+X ooooXoooo o!o ooooXoooo X+ -+o ooooXoooo X!X ooooXoooo o+ -+o P o!o o+ -+XoooooooooooX!XoooooooooooX+ -+!!!!!!!!!!!!!!!!!!!!!!!!!!!+ -+XoooooooooooX!XoooooooooooX+ -+o o!o o+ -+o ooooXoooo X!X ooooXoooo o+ -+X ooooXoooo o!o ooooXoooo X+ -+o G o!o H o+ -+XoooooooooooX!XoooooooooooX+ -+++++++++++++++++++++++++++++ \ No newline at end of file ++ooooooooooooooooooooooooooo+ ++oooo oooo+ ++ooo H ooo+ ++oo oo+ ++o o+ ++o o+ ++o P o+ ++o o+ ++o o+ ++oo oo+ ++ooo G ooo+ ++oooo oooo+ ++ooooooooooooooooooooooooooo+ ++++++++++++++++++++++++++++++ diff --git a/state/map_test.go b/state/map_test.go index 139d97c..c4516f2 100644 --- a/state/map_test.go +++ b/state/map_test.go @@ -99,7 +99,7 @@ func TestLoadGrid_Map01(t *testing.T) { } } } - const wantApples = 170 + const wantApples = 139 if appleCount != wantApples { t.Errorf("apple count = %d, want %d", appleCount, wantApples) } From b6d5431ff2d6eac53024745f58ee82e2edc55a71 Mon Sep 17 00:00:00 2001 From: "masahiro.kasatani" Date: Tue, 31 Mar 2026 09:56:01 +0900 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20map01=E3=81=AB=E3=83=8F=E3=83=B3?= =?UTF-8?q?=E3=82=BF=E3=83=BC=E3=82=921=E4=BD=93=E8=BF=BD=E5=8A=A0?= =?UTF-8?q?=EF=BC=88=E8=A8=883=E4=BD=93=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 右上エリア(col=25, row=3)に3体目を配置。 H1(左上)・H3(右上)が同一行で両側から、H2(左下)が下から迫る包囲形になる。 テストのハンター数・敵数期待値を2→3に更新。 Co-Authored-By: Claude Sonnet 4.6 --- state/files/stage/map01.txt | 2 +- state/gamestate_test.go | 6 +++--- state/map_test.go | 6 +++--- state/stage_test.go | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/state/files/stage/map01.txt b/state/files/stage/map01.txt index 001c946..5aa462e 100644 --- a/state/files/stage/map01.txt +++ b/state/files/stage/map01.txt @@ -1,7 +1,7 @@ +++++++++++++++++++++++++++++ +ooooooo ooooooooo ooooo+ +o o o o o o+ -+o H o o o o o+ ++o H o o o o H o+ +o o ooooooooo o o+ +ooooooo ooooo+ + + diff --git a/state/gamestate_test.go b/state/gamestate_test.go index 91117e1..f44d58e 100644 --- a/state/gamestate_test.go +++ b/state/gamestate_test.go @@ -47,9 +47,9 @@ func TestNewGameStateEnemiesSpawned(t *testing.T) { if err != nil { t.Fatalf("NewGameState failed: %v", err) } - // map01.txt には2体のハンターがいる - if len(gs.Enemies) != 2 { - t.Errorf("want 2 enemies, got %d", len(gs.Enemies)) + // map01.txt には3体のハンターがいる + if len(gs.Enemies) != 3 { + t.Errorf("want 3 enemies, got %d", len(gs.Enemies)) } } diff --git a/state/map_test.go b/state/map_test.go index c4516f2..7c0a1a9 100644 --- a/state/map_test.go +++ b/state/map_test.go @@ -115,9 +115,9 @@ func TestLoadGrid_Map01(t *testing.T) { t.Errorf("player spawn cell should be CellSpace") } - // ハンターが2体いることを確認 - if len(spawns.Hunters) != 2 { - t.Errorf("hunter count = %d, want 2", len(spawns.Hunters)) + // ハンターが3体いることを確認 + if len(spawns.Hunters) != 3 { + t.Errorf("hunter count = %d, want 3", len(spawns.Hunters)) } // ハンター座標のセルが CellSpace になっていることを確認 diff --git a/state/stage_test.go b/state/stage_test.go index 9b9464a..a9b5ec2 100644 --- a/state/stage_test.go +++ b/state/stage_test.go @@ -101,8 +101,8 @@ func TestStageLoad(t *testing.T) { } // map01.txt のハンター数 - if len(spawns.Hunters) != 2 { - t.Errorf("want 2 hunters, got %d", len(spawns.Hunters)) + if len(spawns.Hunters) != 3 { + t.Errorf("want 3 hunters, got %d", len(spawns.Hunters)) } }