M9: navigeringslägen, linjenät och terminal
All checks were successful
release / build-release (push) Successful in 1m34s

internal/nav med resources/data/network.json (76 stationer, 11 linjer,
Yamanote som ringlinje). Tåg bedöms från lineId + terminus mot banans
station/to: rätt, fel håll, för långt bort (fler än 12 stationer) eller
ingen trafik; correct räknas ut för nätkopplade banor, 1-4 rätta tåg.
Tågresan visar linjens riktiga stationer. Nya förlustorsaker "Fel håll"
och "För långt bort". Listläge (nästa tåg nere till vänster) och
skyltläge (+50 % poäng) växlas med N på bankartan och sparas; -mode.
Terminalen: biljettautomaten visar linjetavlan på nätbanor. Perronger
P p Q q R r. Bana 006 Ikebukuro med fyra perronger. Banorna 001-005
kopplade till nätet. Skript: waitover och pick calm; poängraden
radbryts; skärmdumpar uppdaterade.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
2026-10-24 13:07:36 +02:00
parent de61568e44
commit f762f9554e
53 changed files with 3041 additions and 122 deletions

View File

@@ -0,0 +1,177 @@
{
"clutter": 1,
"crowd": 1,
"destination": {
"en": "Shinjuku",
"ja": "新宿",
"romaji": "Shinjuku",
"sv": "Shinjuku"
},
"difficulty": 4,
"fareYen": 180,
"grid": [
"#################################",
"#S#...#........i..#.............#",
"#.#.#.#.#######.#.#.###########.#",
"#...#.#....T#...#.#.......#..W#.#",
"#####.#######.###.#.#####.#.###.#",
"#...#...#.....#...#.....#.#...#.#",
"#.#.###.#.#####.#####.#.#.###.#.#",
"#.#.#...#.#.....#...#K#.#.....#.#",
"#.#.#.###.#.#####.#.###.#####.#.#",
"#...#.....#......i#...#.....#.#.#",
"#.###############.###.#.#####.#.#",
"#.#.........#..i..#...#.......#.#",
"#.#.#.#####.#.#.###.#.#####.###.#",
"#...#.....#...#.....#.....#.#...#",
"#.#######.#.###########.#.###.#.#",
"#.#.....#...#.....#.....#...#.#.#",
"#.#.###.#####.###.#.#######.#.###",
"#...#.#...#...#...#...#...#.#...#",
"#####.###G#.###.#####.#.###.###G#",
"#pG.....GqG.#...GQG...#.......GP#",
"#################################"
],
"id": "006-ikebukuro",
"kind": "main",
"maxMissedTrains": 2,
"name": {
"en": "Ikebukuro Station",
"ja": "池袋駅",
"sv": "Ikebukuro station"
},
"noise": 1,
"order": 6,
"party": 3,
"rideStops": 5,
"shop": [
"suit",
"rail_pass",
"onigiri_box"
],
"signs": [
{
"text": {
"en": "Ikebukuro Station. Track 6 Yamanote Line for Shinjuku: south-east. Tracks 1 and 2 Saikyo Line: south. Track 11 Marunouchi Line for Ogikubo: south-west.",
"ja": "池袋駅 6番線 山手線 新宿方面 → 南東 1番線・2番線 埼京線 → 南 11番線 丸ノ内線 荻窪方面 → 南西",
"sv": "Ikebukuro station. Spår 6 Yamanote-linjen mot Shinjuku: sydost. Spår 1 och 2 Saikyo-linjen: söderut. Spår 11 Marunouchi-linjen mot Ogikubo: sydväst."
},
"x": 15,
"y": 1,
"z": 0
},
{
"text": {
"en": "\u003c- Track 2 Saikyo Line for Omiya Track 1 Saikyo Line for Osaki -\u003e",
"ja": "← 2番線 埼京線 大宮方面 1番線 埼京線 大崎方面 →",
"sv": "\u003c- Spår 2 Saikyo-linjen mot Omiya Spår 1 Saikyo-linjen mot Osaki -\u003e"
},
"x": 17,
"y": 9,
"z": 0
},
{
"text": {
"en": "Track 6 Yamanote Line for Shinjuku: the gate in the south-east corner. Line map at the ticket machine.",
"ja": "6番線 山手線 新宿方面 → 南東口 改札 路線図 → 券売機",
"sv": "Spår 6 Yamanote-linjen mot Shinjuku: spärren i sydöstra hörnet. Linjekarta finns vid automaten."
},
"x": 15,
"y": 11,
"z": 0
}
],
"station": "ikebukuro",
"timeLimitSec": 480,
"to": "shinjuku",
"trains": [
{
"cars": 4,
"destination": {
"en": "Shinjuku",
"ja": "新宿",
"romaji": "Shinjuku"
},
"line": {
"en": "Yamanote Line",
"ja": "山手線",
"romaji": "Yamanote-sen"
},
"lineId": "yamanote",
"platform": "P",
"schedule": {
"dwellSec": 9,
"intervalSec": 30,
"offsetSec": 8
},
"terminus": "shinjuku",
"track": "6"
},
{
"cars": 3,
"destination": {
"en": "Omiya",
"ja": "大宮",
"romaji": "Omiya"
},
"line": {
"en": "Saikyo Line",
"ja": "埼京線",
"romaji": "Saikyo-sen"
},
"lineId": "saikyo",
"platform": "p",
"schedule": {
"dwellSec": 8,
"intervalSec": 34,
"offsetSec": 14
},
"terminus": "omiya",
"track": "2"
},
{
"cars": 3,
"destination": {
"en": "Osaki",
"ja": "大崎",
"romaji": "Osaki"
},
"line": {
"en": "Saikyo Line",
"ja": "埼京線",
"romaji": "Saikyo-sen"
},
"lineId": "saikyo",
"platform": "Q",
"schedule": {
"dwellSec": 8,
"intervalSec": 34,
"offsetSec": 20
},
"terminus": "osaki",
"track": "1"
},
{
"cars": 3,
"destination": {
"en": "Ogikubo",
"ja": "荻窪",
"romaji": "Ogikubo"
},
"line": {
"en": "Marunouchi Line",
"ja": "丸ノ内線",
"romaji": "Marunouchi-sen"
},
"lineId": "marunouchi",
"platform": "q",
"schedule": {
"dwellSec": 8,
"intervalSec": 28,
"offsetSec": 4
},
"terminus": "ogikubo",
"track": "11"
}
]
}