KODRUTAN – radiolek för JOTA
============================
Fyra grupper, fyra hemliga språk, en frekvens.


1. SAMMANFATTNING
-----------------
Fyra grupper (Bertil Niklas, Filip David, Gustav Rudolf och Martin Kalle) sänder
på samma radiofrekvens, så alla hör allt. Varje grupp har en egen kodnyckel:
samma 100 ord i ett rutnät 10×10, men på olika platser. Bara rätt mottagare kan
förstå ett meddelande.

Ett meddelande är alltid två ord. De är två hörn i en rektangel i mottagarens
nyckel, och rektangelns två andra hörn är det avkodade meddelandet.

Varje uppdrag går som en kedja genom tre grupper:
  A skickar UPPDRAG till B → B skickar ett nytt UPPDRAG till C →
  C skickar SVAR till B → B kodar om och skickar RESULTAT till A.

A räknar ihop rad- och kolumnnummer för de två avkodade orden. Summan pekar ut
lösenordet i en lösenordstabell med 40 ord. Lösenordet lämnas till spelledaren.

Målet är att alla grupper tillsammans får fram 12 lösenord (tre per grupp) på
90 minuter. Det är ett samarbete: ingen grupp klarar sina uppdrag själv.
Fel lösenord ger 5 minuters väntan.

Passar Äventyrare (ca 12–15 år).


2. SNABBSTART FÖR SPELLEDAREN
-----------------------------
Före spelet:
  • Skriv ut Spelledarparm.pdf och de fyra gruppaketen (Grupp_*.pdf).
  • Kontrollera att alla papper har samma omgångsnummer i sidfoten.
  • Klipp isär uppdragskorten (sista sidorna i pärmen) och sortera dem per
    grupp i ordning 1, 2, 3.
  • Ställ in radiostationerna på samma frekvens, med en licensierad operatör
    vid varje station.
  • Placera grupperna så att de bara hör varandra via radio.
  • Ha statustavlan (Del 3 i pärmen), en penna och en klocka redo.

Start:
  • Dela ut ett gruppaket till varje grupp.
  • Läs upp Del 1 i pärmen och gå igenom exemplet tillsammans.
  • Dela ut uppdragskort 1 till alla grupper och starta klockan (90 min).

Under spelet:
  • När en grupp lämnar ett lösenord säger du bara "rätt" eller "fel".
  • Rätt: bocka av på statustavlan och ge gruppen nästa kort direkt.
  • Fel: gruppen väntar 5 minuter innan de får försöka igen med samma kort.
  • Kör någon fast: använd ledtrådstrappan och felsökningen i Del 2.

Slut:
  • Stoppa efter 90 minuter (eller när alla 12 lösenord är klara).
  • Låt gärna grupperna jämföra sina nycklar efteråt.


3. INNEHÅLL I MAPPEN
--------------------
  Spelledarparm.pdf          Allt spelledaren behöver, inklusive facit och uppdragskort
  Grupp_BN_Bertil_Niklas.pdf Gruppaket (ett per grupp)
  Grupp_FD_Filip_David.pdf
  Grupp_GR_Gustav_Rudolf.pdf
  Grupp_MK_Martin_Kalle.pdf
  Kontrollrapport.pdf        Den automatiska kontrollen av omgången
  generator/                 Program som skapar nya omgångar (nya nycklar och uppdrag)
  simulator/                 Program som spelar upp hela leken på datorn

PDF:erna i huvudmappen är omgång 1000. Det står i sidfoten på varje sida.


4. SPELLEDARPÄRMEN (Spelledarparm.pdf)
--------------------------------------
  Del 0  Översikt, utskriftslista, checklista för förberedelser och en
         ruta om reglerna för kodad trafik på amatörbanden.
  Del 1  Text att läsa upp för deltagarna, följd av exemplet steg för steg.
  Del 2  HEMLIGT. Tidsplan, regler för utdelning av kort och straff,
         vanliga fel och hur du hjälper, och ledtrådstrappan.
  Del 3  HEMLIGT. Facit:
           - statustavla med summa, lösenord och tider
           - lösenordstabellen med de 12 rätta lösenorden markerade
           - alla 12 kedjor steg för steg
           - alla lockrader
           - alla fyra nycklar och tabeller
  Bilaga Uppdragskort att klippa ut, en sida per grupp.

Snabbkontroll vid fel lösenord: koordinatsumman för de två ord gruppen HÖRDE är
alltid densamma som för de avkodade orden. Stämmer de hörda orden med facit men
lösenordet är fel, är det ett räkne- eller avkodningsfel.


5. GRUPPAKETEN (Grupp_*.pdf, 12 sidor var)
------------------------------------------
  • Instruktioner, med ett talmanus för när gruppen blir anropad.
  • Exempel steg för steg: avkodning, mellanled, omkodning,
    "ett steg åt höger" och uträkning av lösenordet.
  • Kodnyckel (HEMLIG för gruppen).
  • Uppgiftstabell (HEMLIG): 6 riktiga rader och 6 lockrader. Inga lösenord.
  • Lösenordstabell: 40 numrerade ord, samma för alla grupper.
  • Talmanus för 12 sändningar med tomma fält att fylla i och läsa rakt av.
  • Loggblad.

Uppdragskorten ingår inte i gruppaketen. Spelledaren delar ut dem ett i taget.


6. KONTROLLRAPPORTEN (Kontrollrapport.pdf)
------------------------------------------
Visar att omgången har kontrollerats automatiskt, ungefär 290 kontroller:
  • alla sändningar går att avkoda hos rätt mottagare
  • ingen avlyssnad sändning ger träff i någon annan grupps tabell
  • alla 12 kedjor har spelats igenom och ger rätt lösenord
  • alla summor och därmed alla lösenord är olika
  • kortordningen ger jämn belastning (i varje omgång är varje grupp
    mellanled en gång och svarar en gång)
Rapporten innehåller facit och ska inte delas ut.


7. GENERATORN (generator/kodrutan_generera.py)
----------------------------------------------
Skapar en helt ny omgång med samma 100 ord: nya nycklar, kedjor, tabeller,
lockrader, kortordning, lösenord och exempel. Alla PDF:er skapas på nytt.

Installera:   pip install reportlab
Kör:          python kodrutan_generera.py --seed 1234
              python kodrutan_generera.py                 (slumpar ett seed och skriver ut det)
              python kodrutan_generera.py --seed 1234 --no-pdf   (bara game.json)
              python kodrutan_generera.py --seed 1000     (återskapar omgången i huvudmappen)

Resultatet hamnar i mappen omgang_<seed>/ (eller den mapp du anger med --out).

  • Samma seed ger alltid exakt samma omgång. Anteckna seedet. Det står också i
    sidfoten på alla papper och i game.json.
  • Efter körningen skrivs ett "fingeravtryck" ut. Det är en kontrollsumma av
    speldatan: samma seed ger samma fingeravtryck.
  • Mappen fonts/ innehåller typsnittet DejaVu Sans, som är fritt att dela (se
    LICENSE-DejaVu.txt). Låt den ligga bredvid skriptet, så blir å, ä, ö och
    symbolerna rätt på alla datorer.
  • Spara game.json för omgångar du vill kunna återskapa senare. Det är inte
    garanterat att samma seed ger samma resultat i alla Python-versioner.


8. SIMULATORN (simulator/kodrutan_sim.py)
-----------------------------------------
Spelar upp hela leken på datorn. Varje grupp och spelledaren körs i en egen
tråd. Radiokanalen skyddas av ett lås, så bara en grupp i taget kan sända, och
de som väntar står i kö.

Installera:   pip install PySide6
Kör:          python kodrutan_sim.py                      (fönster)
              python kodrutan_sim.py --headless --speed 600   (utan fönster, bara sammanfattning)
              python kodrutan_sim.py --game ../generator/omgang_1234/game.json

I fönstret syns:
  • varje grupps status, kort och nyckel, med senaste avkodning markerad
  • vem som sänder och vem som står i kö
  • det som sägs i radion
  • statustavlan och en löpande logg

Inställningar (i fönstret eller som flaggor):
  --speed     speltid per verklig sekund (20 = 90 minuter på 4,5 minuter)
  --mishear   risk att ett ord hörs fel; fångas när mottagaren upprepar orden
  --calcerr   risk för räknefel på summan; ger fel lösenord och 5 minuters straff
  --seed      samma seed ger i stort sett samma förlopp
  --log       namn på loggfilen

Loggfilen (kodrutan_sim_<datum_tid>.log) innehåller allt som händer:
  • kortutdelning och hur kortens koder är kodade
  • köande och låsning av radiokanalen
  • all radiotrafik och alla felhörningar
  • avkodningar med rad och kolumn, uppslag i tabellen, steg och omkodningar
  • summaräkning, lösenord och straff
  • kontroll mot facit för varje sändning
  • vad övriga grupper får fram när de avlyssnar

Grupperna i simulatorn använder bara det de har på papper. Simulatorn är därför
också ett test av spelmaterialet. exempel_logg.log är en färdig körning och
skarmbild.png visar fönstret.

Tiderna för att avkoda, räkna och gå till spelledaren är uppskattningar. De
finns som en tabell (T) överst i koden och kan justeras.


9. SPELDATAN (game.json)
------------------------
Innehåller hela omgången: nycklar, kedjor, tabeller, lösenordstabell, exempel,
seed och kontrollogg. Filen skapas av generatorn och läses av simulatorn.
game.json i simulator-mappen hör till omgång 1000, alltså de utskrivna PDF:erna.
game.json innehåller facit och ska behandlas som hemlig.


10. ATT TÄNKA PÅ
----------------
  • Kodad trafik på amatörbanden: reglerna förbjuder i regel meddelanden som
    kodas för att dölja innebörden. I leken finns alla nycklar öppet hos
    spelledaren. Kontrollera ändå med PTS eller SSA innan ni kör, eller kör den
    kodade delen på PMR446. Detta är inte juridisk rådgivning.
  • Provspela gärna en kedja med ledarna innan.
  • Blanda aldrig papper från olika omgångar. Kontrollera omgångsnumret i
    sidfoten.
  • Programmen är testade i Linux. Kör en gång på din egen dator före JOTA.
