Inlärning (framsteg, stjärnor, ordlista) och M4: lämmeltåget
All checks were successful
release / build-release (push) Successful in 1m49s
All checks were successful
release / build-release (push) Successful in 1m49s
Inlärning enligt Björns regler: - lang.Knowledge: framsteg per ord (3 läsningar = känt), språkpoäng, köp av valfria ord (kostnad = tier), Award per stjärna - sim.Run: RunOptions med seed; stjärnor 1–3 mot par (parSec eller kortaste vägen × 0,5 s + 20 s); ≥2 stjärnor lär resmålets ord; att stanna på skylt/perrong ger seedad 35 % chans till framsteg per okänt ord - game: ordlista (L) med kända ord, framsteg och kostnad; stjärnor, poäng och inlärt resmål på resultatskärmen; framstegsnotis; flaggor -points/-seed M4 lämmeltåget: - sim.Party: medlemmar med mat/dryck/toa-mätare, behov under tröskel, seedade händelser var 45 s / antal (toa, törst, hunger, distraktion), fartstraff, toalett (W, 3 s/person) och kiosk (K, 150 ¥/person), följare på ledarens spår - level: rutor W och K, party och parSec i bandatan; banor med sällskap måste ha toalett och kiosk (testas); 001 har 2, 002 har 3 i sällskapet - game: följare med färgton, behovsmarkering över huvudet, mätarpanel, facilitetsrutor med förlopp; genart ritar toalett och kiosk - skriptläget: move stannar exakt på målrutan även när farten inte är bildruteexakt (sällskapets fartstraff), stall-skydd mot väggar - docs/README/wiki/spelbeskrivning uppdaterade Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -147,6 +147,9 @@ func TestAllShippedLevels(t *testing.T) {
|
||||
t.Errorf("tåg %d saknar spårnummer", i)
|
||||
}
|
||||
}
|
||||
if l.Party > 1 && (len(l.Find(Toilet)) == 0 || len(l.Find(Kiosk)) == 0) {
|
||||
t.Errorf("banor med sällskap behöver minst en toalett (W) och en kiosk (K)")
|
||||
}
|
||||
for _, sg := range l.Signs {
|
||||
if sg.Text["sv"] == "" || sg.Text["en"] == "" {
|
||||
t.Errorf("skylt (%d,%d) saknar sv/en-text", sg.X, sg.Y)
|
||||
@@ -265,3 +268,23 @@ func TestUngatedPlatforms(t *testing.T) {
|
||||
t.Fatal("banan ska vara lösbar med spärren passerbar")
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartyAndParDefaults(t *testing.T) {
|
||||
l := mustParse(t, sample)
|
||||
if l.Party != 1 || l.ParSec != 0 {
|
||||
t.Fatalf("party=%d par=%d", l.Party, l.ParSec)
|
||||
}
|
||||
if _, err := Parse([]byte(strings.Replace(sample, `"difficulty": 1`, `"difficulty": 1, "party": 9`, 1))); err == nil {
|
||||
t.Fatal("för stort sällskap ska ge fel")
|
||||
}
|
||||
if l.CorrectPlatform() != (Point{5, 1}) {
|
||||
t.Fatalf("CorrectPlatform = %v", l.CorrectPlatform())
|
||||
}
|
||||
if got := l.Trains[0].BoardText(); got != "番線 A B方面" {
|
||||
t.Fatalf("BoardText = %q", got)
|
||||
}
|
||||
l2 := mustParse(t, strings.Replace(sample, `"#S..#P#"`, `"#SW.KP#"`, 1))
|
||||
if l2.At(2, 1) != Toilet || l2.At(4, 1) != Kiosk || !l2.Solvable() {
|
||||
t.Fatal("W och K ska vara passerbara rutor")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user