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:
@@ -208,3 +208,43 @@ func TestCharClasses(t *testing.T) {
|
||||
t.Fatal("HasKana/IsJapanese")
|
||||
}
|
||||
}
|
||||
|
||||
func TestProgressLearnsAfterEnoughReads(t *testing.T) {
|
||||
k := NewKnowledge()
|
||||
for i := 1; i < ProgressToLearn; i++ {
|
||||
if k.AddProgress("改札") || k.ProgressOf("改札") != i || k.Knows("改札") {
|
||||
t.Fatalf("efter %d framsteg: progress=%d known=%v", i, k.ProgressOf("改札"), k.Knows("改札"))
|
||||
}
|
||||
}
|
||||
if !k.AddProgress("改札") || !k.Knows("改札") || k.ProgressOf("改札") != 0 {
|
||||
t.Fatal("tredje framsteget ska lära ordet och nollställa framstegen")
|
||||
}
|
||||
if k.AddProgress("改札") {
|
||||
t.Fatal("kända ord får inga framsteg")
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuyWordsWithPoints(t *testing.T) {
|
||||
d := testDict()
|
||||
k := NewKnowledge()
|
||||
e1, e3 := d.Lookup("改札"), d.Lookup("新宿駅") // tier 1 resp. 3
|
||||
if WordCost(e1) != 1 || WordCost(e3) != 3 {
|
||||
t.Fatal("kostnad = tier")
|
||||
}
|
||||
if k.CanBuy(e1) || k.Buy(e1) {
|
||||
t.Fatal("utan poäng ska inget gå att köpa")
|
||||
}
|
||||
if got := k.Award(3); got != 3*PointsPerStar || k.Points != got {
|
||||
t.Fatalf("Award = %d, points=%d", got, k.Points)
|
||||
}
|
||||
k.Progress["新宿駅"] = 2
|
||||
if !k.Buy(e3) || !k.Knows("新宿駅") || k.Points != 0 || k.ProgressOf("新宿駅") != 0 {
|
||||
t.Fatalf("köp misslyckades: points=%d known=%v", k.Points, k.Knows("新宿駅"))
|
||||
}
|
||||
if k.CanBuy(e3) {
|
||||
t.Fatal("redan känt ord ska inte gå att köpa")
|
||||
}
|
||||
if k.Award(-2) != 0 || k.Points != 0 {
|
||||
t.Fatal("negativa stjärnor ger inget")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user