M0: skelett, byggkedja och dokumentation för JP Subway Pussel
- Go 1.27 + Ebitengine v2.10, intern upplösning 320x180 med heltalsskalning - internal/res (resursuppslag), internal/rng (seedad slump), internal/level (banformat, validering, BFS-lösbarhet) med tester; internal/archtest kontrollerar att bara presentationslagret beror på Ebitengine - tools/build: debug -> build/debug/, release -> build/release/<os>-<arch>/ med resources/ bredvid binären; Windows korsbyggs utan C-verktyg - VS Code tasks (build/test/release) och launch (dlv) - Första banan 001-flygplatsen, sv/en-texter, skyltordbok, placeholder-sprite - doc/: spelbeskrivning (renskriven), mål och tester, roadmap med teknikval (M0–M12), plan.md; README med bygg- och beroendeinformation Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
22
resources/data/README.md
Normal file
22
resources/data/README.md
Normal file
@@ -0,0 +1,22 @@
|
||||
# resources/data – speldata
|
||||
|
||||
Banor, items, skills och annan data som spelet läser vid start. Allt är JSON.
|
||||
|
||||
- `levels/<id>.json` – en bana per fil. `id` i filen **måste** vara lika med
|
||||
filnamnet utan `.json`. Testet `internal/level.TestAllShippedLevels` kör
|
||||
igenom alla banor här och faller om någon inte parsar eller inte går att klara.
|
||||
|
||||
## Rutnätets tecken
|
||||
|
||||
| Tecken | Betydelse |
|
||||
|--------|-----------|
|
||||
| `#` | vägg |
|
||||
| `.` | golv |
|
||||
| `S` | start (exakt en) |
|
||||
| `P` | perrong med tåg |
|
||||
| `p` | perrong med fel tåg |
|
||||
| `G` | spärr (kräver kort/biljett) |
|
||||
| `T` | biljett-/påfyllningsautomat |
|
||||
| `i` | skylt |
|
||||
|
||||
Varje rad måste vara lika lång. Se `internal/level/level.go` för formatet.
|
||||
35
resources/data/levels/001-flygplatsen.json
Normal file
35
resources/data/levels/001-flygplatsen.json
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"id": "001-flygplatsen",
|
||||
"name": { "sv": "Flygplatsen", "en": "The Airport", "ja": "空港" },
|
||||
"difficulty": 1,
|
||||
"destination": { "ja": "新宿", "romaji": "Shinjuku", "sv": "Shinjuku", "en": "Shinjuku" },
|
||||
"timeLimitSec": 0,
|
||||
"grid": [
|
||||
"####################",
|
||||
"#S.....#.....i.....#",
|
||||
"#.###.##.###.#.###.#",
|
||||
"#...#....#...#...#.#",
|
||||
"###.######.#####.#.#",
|
||||
"#...#....#.....#.#.#",
|
||||
"#.###.##.#####.#.#.#",
|
||||
"#.....#T.......#...#",
|
||||
"#.#####.#########.##",
|
||||
"#....GG......i..GG.#",
|
||||
"#..p.....##......P.#",
|
||||
"####################"
|
||||
],
|
||||
"trains": [
|
||||
{
|
||||
"platform": "P",
|
||||
"line": { "ja": "成田エクスプレス", "romaji": "Narita Ekusupuresu", "en": "Narita Express" },
|
||||
"destination": { "ja": "新宿", "romaji": "Shinjuku", "en": "Shinjuku" },
|
||||
"correct": true
|
||||
},
|
||||
{
|
||||
"platform": "p",
|
||||
"line": { "ja": "京成本線", "romaji": "Keisei Honsen", "en": "Keisei Main Line" },
|
||||
"destination": { "ja": "京成上野", "romaji": "Keisei-Ueno", "en": "Keisei-Ueno" },
|
||||
"correct": false
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user