test(worldgen): 村庄断言改为 3×3 区块总量(跨区块建筑统计)

This commit is contained in:
NianGao Dev
2026-08-15 23:29:07 +08:00
parent c82bf994be
commit 2f71900e37
2688 changed files with 533994 additions and 11 deletions

View File

@@ -103,20 +103,25 @@ func TestVillage(t *testing.T) {
continue
}
cx, cz := floorDiv32(vx, 16), floorDiv32(vz, 16)
ch := g.Generate(cx, cz)
// 建筑跨区块(世界生成.md §4):统计中心 3×3 区块的木板/圆石总量
plankCnt, cobbleCnt := 0, 0
snap := ch.Snapshot()
for i := 0; i < 16*16*256; i++ {
switch snap[i].ID() {
case planks:
plankCnt++
case cobble:
cobbleCnt++
for dcx := int32(-1); dcx <= 1; dcx++ {
for dcz := int32(-1); dcz <= 1; dcz++ {
ch := g.Generate(cx+dcx, cz+dcz)
snap := ch.Snapshot()
for i := 0; i < 16*16*256; i++ {
switch snap[i].ID() {
case planks:
plankCnt++
case cobble:
cobbleCnt++
}
}
}
}
// 建筑跨区块:中心区块至少包含水井(圆石)与部分房屋(木板)
if plankCnt < 10 || cobbleCnt == 0 {
t.Fatalf("村庄区块 (%d,%d) 建筑过少: 木板 %d 圆石 %d", cx, cz, plankCnt, cobbleCnt)
// 3 间房屋(每间约 70+ 木板)+ 水井(8 圆石)
if plankCnt < 150 || cobbleCnt < 8 {
t.Fatalf("村庄 (%d,%d) 建筑过少: 木板 %d 圆石 %d", cx, cz, plankCnt, cobbleCnt)
}
found++
}