M6: plånbok, biljetter, telefon och minispel

2026-10-24 09:47:36 +02:00
parent 4db89253d3
commit 7dc5743861

44
Home.md

@@ -16,7 +16,7 @@ till rätt resmål.
| [`doc/roadmap.md`](../src/branch/master/doc/roadmap.md) | Teknikval, katalogstruktur, milstolpar M0–M12 |
| [`doc/mal-och-tester.md`](../src/branch/master/doc/mal-och-tester.md) | Projektmål, teststrategi, checklistor |
## Så fungerar spelet (läget efter M5)
## Så fungerar spelet (läget efter M6)
**Menyn** listar banorna i `resources/data/levels/` med resmål. Pilar/WASD
väljer, Enter startar, Esc avslutar. Gamepad fungerar också.
@@ -97,9 +97,35 @@ tåget inne syns vagnen bortom kanten och du kliver på med Enter.
![Perrongen](/brasse/metro-puzzle-jp/raw/branch/master/doc/img/platform.png)
Rätt tåg tar dig till resmålet; fel tåg ger "Fel tåg!" och banan är förlorad.
Resultatet visar tid, steg, spärrpassager och kortsaldo. R spelar om,
Enter/Esc går till menyn.
**På tåget** passerar stationerna en i taget med 次は-utrop. Kliv av med
Enter vid ditt resmål – namnen är på japanska och renderas genom din
kunskap, så HUD-hinten med resmålets tecken (nivå 1) är guld värd. Kliver du
av fel eller åker förbi är banan förlorad, och på fel tåg finns resmålet inte
ens på linjen.
![Tågresan](/brasse/metro-puzzle-jp/raw/branch/master/doc/img/ride.png)
**Pengarna.** Du har ett IC-kort och kontanter. Spärren och kiosken drar
från kortet. Tar det slut går du till automaten (T) och fyller på: hitta
チャージ bland knapparna (fel knapp kostar en straffsekund), välj belopp och
håll Enter för att mata in sedlarna.
![Påfyllning](/brasse/metro-puzzle-jp/raw/branch/master/doc/img/topup.png)
På svårare banor kräver spärren en **pappersbiljett** i stället. Automaten
visar en taxetavla med resmål på japanska – köp rätt resmål, annars släpper
inte tåget på dig. Lägger du kortet **i telefonen** (P i menyn) går du
snabbare, men ibland måste du skanna igen i spärren, och dör batteriet
måste du köpa biljett.
![Biljettautomaten](/brasse/metro-puzzle-jp/raw/branch/master/doc/img/ticket.png)
**Fulla tåg** kräver att du tränger dig på: tryck Enter när markören är i det
gröna fältet. Två bom och tåget går utan dig.
Resultatet visar tid mot par, stjärnor, utforskat, spenderat, missade tåg och
sällskapets försörjning. R spelar om, L öppnar ordlistan, Enter/Esc går till
menyn.
![Resultat](/brasse/metro-puzzle-jp/raw/branch/master/doc/img/result.png)
@@ -124,7 +150,8 @@ repot gör det. Nya vyer: lägg till i listan i `tools/shots/main.go`.
```
cmd/metro-puzzle-jp programstart, flaggor
internal/game Ebitengine: scener (meny → bana → resultat), rendering, input
internal/sim ren spellogik: rörelse, kollision, kamera, banomgång (tåg, spärrar, kort, hjälp, stjärnor), sällskap (mätare, händelser, följare), dimma/minikarta
internal/sim ren spellogik: rörelse, kollision, kamera, banomgång (tåg, spärrar, plånbok, hjälp, stjärnor, minispel), sällskap, dimma/minikarta
internal/minigame påfyllning, biljettköp, trängsel, tågresa – seedade tillståndsmaskiner
internal/lang japanska: ordbok, tokenisering, kunskap, delvis översättning, engelska-andel
internal/level banformat (JSON), validering, BFS-lösbarhet
internal/res hittar resources/ (env → bredvid binären → uppåt från cwd)
@@ -161,6 +188,13 @@ resources/ sprites/ sound/ text/ data/ – skeppas bredvid binäre
framsteg. Enkelt, deterministiskt och kolliderar aldrig.
- **Händelserna skalar med sällskapet** genom intervallet `45 s / antal`, så
att "fler i lämmeltåget = svårare" är en enda tydlig formel som testas.
- **Minispelen är rena tillståndsmaskiner** (`internal/minigame`) med ett
gemensamt gränssnitt (Update/Done/Success) och all slump från del-seeds.
Därför kan hela bana 002 – fel biljett, rätt biljett, spärr, trängsel,
resa – spelas igenom i ett vanligt `go test`.
- **Biljetten kontrolleras vid tåget, inte i spärren.** Spärren släpper
igenom alla med biljett (som i verkligheten); först vid tåget avslöjas om
resmålet var rätt. Pusslet sitter alltså i taxetavlan på japanska.
- **Dimman mäts i steg, inte i avstånd.** Att avslöja tre *gångsteg* runt
spelaren (plus gränsande väggar) gör att labyrinten förblir en labyrint på
minikartan; en cirkel skulle avslöja parallella gångar genom väggen.