card game

This commit is contained in:
2026-05-31 14:39:45 -05:00
parent 5cc62433bd
commit 6abe253547
18 changed files with 2713 additions and 20 deletions

74
card-game/README.md Normal file
View File

@@ -0,0 +1,74 @@
# TROX Druckpaket & Generator-Skripte
Alles für Prototyp und Serie bei The Game Crafter (TGC) bzw. ähnlichen Portalen.
## Suit-Codes (NEU, englische Logik)
| Suit | Code | Rolle | Symbol |
|---|---|---|---|
| Red | **R** | Permanenter TRUMPF | Crown |
| Yellow | **Y** | Standard | Sun |
| Green | **G** | Standard | Leaf |
| Black | **B** | Standard | Gear |
Kartencodes auf den Karten z.B. `TK-Y4` (Yellow 4), `TK-G7` (Green 7), `TK-R17`, `TK-B12` (Black 12).
## Was ist drin
| Datei / Ordner | Inhalt |
|---|---|
| `trox_card.js` | **Gemeinsames Modul** die EINE Kartenzeichnung. Wird von cards + box genutzt |
| `generate_cards.js` | 80 Kartenvorderseiten (TGC + Original) |
| `generate_back.js` | gemeinsame Rückseite (TGC + Original) |
| `generate_box.js` | Tuckbox: Front mit ECHTEN TROX-Karten (aus trox_card.js) + Box-Netz |
| `generate_scorepad.js` | Scorepad als **PDF** Format/Ausrichtung/Layout/Spielerzahl frei wählbar |
| `make_rules.js` | **Node.js**-Skript der PDF-Anleitung (pdfkit) |
| `svg_to_png.js` | SVG -> PNG Konverter für den TGC-Upload |
| `TROX_Rules_Extended_EN.pdf` | Erweiterte Anleitung mit 3-Spieler-Beispielen |
| `karten_export_tgc/` | 80 Karten + Rückseite, **825x1125 px** (TGC-konform, mit Bleed) |
| `karten_export_original/` | dieselben in **694x1069 px** (Originalmaß) |
| `box_export/` | `trox_box_front.svg` + `trox_box_wrap.svg` |
| `scorepad_export/` | mehrere **PDF**-Varianten (Letter/A4, portrait/landscape, versch. Layouts) |
## Architektur (wichtig)
`trox_card.js` ist die **einzige Quelle** des Kartendesigns:
- `buildCardSVG(colorName, num, opts)` -> komplette Karten-SVG (von generate_cards.js)
- `miniCardGroup(colorName, num, cx, cy, breite, rotation)` -> dieselbe Karte als skalierte Gruppe (von generate_box.js für den Fächer)
Dadurch sind die Karten auf der Box **garantiert identisch** mit den echten Spielkarten nur skaliert und gefächert. Wer das Design ändert (Farben, Symbole, Schrift), ändert NUR `trox_card.js`, und Karten + Box bleiben synchron.
## Skripte ausführen
```bash
npm install pdfkit # einmalig, für make_rules.js
node generate_cards.js # both (TGC + Original) oder: tgc | original
node generate_back.js # both oder: tgc | original
node generate_box.js # both (front + wrap) oder: front | wrap [scale]
node generate_scorepad.js # PDF, both 2x3 6 Spieler [fmt] [orientation] [cols] [rows] [players] [margin]
node make_rules.js # erzeugt die PDF-Anleitung
```
## Druck-Workflow für The Game Crafter
1. **Produkt:** Karten = *Poker Card* (825x1125). Box für 80 Karten = *Poker Tuck Box (90 cards)*.
2. **SVG -> PNG** (TGC nimmt KEIN SVG):
```bash
npm install sharp
node svg_to_png.js karten_export_tgc
node svg_to_png.js box_export
```
3. **Hochladen:** PNGs der 80 Karten + Rückseite in den Deck-Uploader.
4. **Box:** offizielles Stanz-Template der "Poker Tuck Box (90 cards)" von TGC laden und in `generate_box.js` die Konstanten `PANEL_W`, `PANEL_H`, `SPINE`, `FLAP` daran angleichen. Faltlinien (gestrichelt) VOR dem Upload entfernen.
### TGC-Specs (bestätigt)
- **300 DPI**, **nur RGB** (CMYK wird abgelehnt).
- **Bleed** 1/8" (≈37 px), **Safe Zone** 1/4" (75 px) vom Rand.
## Anpassen
- **Kartendesign (Farben/Symbole/Schrift):** nur `trox_card.js`.
- **Welche Karten im Box-Fächer:** `cardFan()` in `generate_box.js` (die vier `miniCardGroup(...)`-Aufrufe).
- **Größe der Box-Karten:** `CARD_SCALE` oben in `generate_box.js` (Standard 0.30) ODER per CLI: `node generate_box.js front 0.26`. Eine Auto-Fit-Sicherung verkleinert den Fächer automatisch, falls er aus dem goldenen Rahmen ragen würde. Weitere Fächer-Regler: `FAN_SPREAD`, `FAN_ARC`, `FAN_TILT`, `FAN_CY`.
- **Scorepad-Layout:** voll parametrisierbar per CLI `node generate_scorepad.js [format] [cols] [rows] [players] [margin_in]`. Weniger Cards/Seite = größere, besser lesbare Cards (Schrift skaliert mit). Beispiel gegen zu kleinen Druck: `node generate_scorepad.js letter 1 2 6 0.5` (2 große Cards, 0.5" Rand). Defaults stehen im CONFIG-Block oben im Skript.
- **Anleitung:** `make_rules.js`, klar in Abschnitte gegliedert.
## Offene Designfrage (für dich)
Im Beispiel B summieren sich die Gebote auf genau die Stichzahl dann können theoretisch alle treffen.
Viele Stichspiele verbieten das ("Screw-the-Dealer"). In der Anleitung ist das als
**optionale Variante "Exact Tension" (Abschnitt 8)** eingebaut. Entscheide, ob das deine Standardregel wird.