Broncode dominospel: regels, computertegenstanders en 58 tests
Wat het Pip Club Dominoes-pakket bevat, welke regels het speelt, waar je teksten en stenen wijzigt en wat het niet bevat.

Broncode van een dominospel lijkt eenvoudig tot je de randgevallen controleert. Wie opent als niemand een dubbele heeft? Wat gebeurt er als de pot leeg is en beide spelers passen? Hoe werkt de score aan het eind van een geblokkeerde ronde? Een template dat die vragen in code beantwoordt en dat met tests bewijst, is meer waard dan een template met mooiere stenen. Pip Club Dominoes, ons dubbel-zes-template, bevat 58 geautomatiseerde tests die de regels, de computertegenstander, de tafelindeling, het opslaan en de 14 vertalingen dekken.
Deze gids legt uit welke regels het spel speelt, hoe het pakket is ingedeeld, wat je met een teksteditor kunt wijzigen en wat een build nodig heeft, hoe je het host en wat de licentie toestaat. Bestandsnamen komen uit de geïllustreerde kopersgids die bij het item zit.
Eén ding om eerst te weten: Pip Club wordt tegen de computer gespeeld. Het heeft geen online modus en geen tweespelermodus op één apparaat.
De regels van deze broncode voor een dominospel
Regels zijn waar dominotemplates het meest verschillen, dus controleer ze tegen wat je spelers verwachten. Pip Club speelt een klassiek dubbel-zes-stenenspel, één speler tegen één computertegenstander.
- 28 stenen van 0 tot 6. Elke speler krijgt er 7, de andere 14 blijven in de pot.
- De hoogste dubbele steen opent. Zonder dubbele steen opent het hoogste totaal, en bij gelijkspel de hoogste helft.
- De tafel heeft altijd twee uiteinden, A en B. Een steen moet op een uiteinde passen, en nul past op nul.
- Dubbele stenen mogen dwars liggen, maar ze splitsen de tafel nooit en geven nooit een extra beurt.
- Zonder passende steen trek je één steen tegelijk tot je kunt spelen. Met een lege pot en geen passende steen pas je.
- Domino: wie zijn hand leegspeelt, scoort het totaal dat in de hand van de tegenstander overblijft.
- Slot: twee keer achter elkaar passen met een lege pot sluit de tafel af. Het lagere totaal wint het verschil, en gelijke totalen zijn gelijkspel.
Een Snelle ronde eindigt na één ronde. Een Puntenduel speelt rondes tot iemand 50 of 100 bereikt. De campagne heeft 9 ontmoetingen in 3 hoofdstukken, één per hangplek, en elke overwinning levert een zegel op.
Wat in het pakket zit
Spelers staan tegenover drie computertegenstanders met een eigen karakter: Rico, de DJ-wasbeer, Faísca, de skatevos, en Nix, de kunstenaarskat, elk op Makkelijk, Normaal of Moeilijk. Speelbare stenen gloeien, de tafel toont waar een steen zal landen, en een hint stelt een zet voor. Er zijn drie hangplekken (Rooftop, Skate Park en Midnight Arcade), zes verzamelbare steensets, campagnezegels en statistieken. Muis, touch en toetsenbord werken allemaal.
- game/: de klaar-om-te-hosten build, met index.html, pip.config.js, modules/, lib/, assets/ en licenses/.
- game/lib/phaser.js: Phaser 3.90.0, leesbaar, onder de MIT-licentie.
- source/: de bewerkbare TypeScript, het beeld, de muziek, de vertalingen en de geautomatiseerde tests.
- documentation/index.html en DOCUMENTATION.html: de kopersgids in 14 talen, die offline opent.
- THIRD-PARTY-LICENSES/: vermeldingen voor Phaser en het lettertype Barlow Condensed.
Beeld en muziek zijn originele onderdelen van het product, bij het item aan de koper in licentie gegeven. De interface komt in 14 talen en volgt de browsertaal; er is geen opgenomen stem, dus elke regel van de tegenstander volgt de gekozen taal.
Bekijk Pip Club Dominoes: demo, gids en prijs
Wijzig zonder build: pip.config.js
Naast index.html staat pip.config.js. Open het in een willekeurige teksteditor, wijzig een waarde, upload het bestand en laad de pagina opnieuw. Er staan drie instellingen in.
- title: de titel van het browsertabblad.
- saveKey: de naam waaronder de opslag wordt bewaard. De standaard is pip-club.
- defaultLanguage: de starttaal. Blijft die leeg, dan volgt het spel de browser.
Houd saveKey ongewijzigd op een live site. Een andere sleutel zorgt dat het spel bestaande voortgang negeert en een nieuwe opslag start; dat is handig voor een tweede kopie en vervelend bij een update.
Waar teksten, beeld en stenen in de broncode staan
- Teksten en vertalingen: source/src/ui/i18n.ts en source/src/ui/locales/.
- Personagebeeld, scènes en het logo: source/src/assets/club/.
- Muziek: source/src/assets/music/.
- Kleuren van stenen: source/src/art/palette.ts en source/src/art/tileArt.ts.
- Tests: source/tests/.
Een typische brandingklus gaat in deze volgorde: het logo en het scènebeeld in assets/club/, dan het stenenpalet, dan de tekst in de locales. White label is toegestaan, dus je merk kan het onze vervangen. De zet of een regel van de computer wijzigen is een diepere klus; draai de tests vóór en na, want die dekken beide.
Bouw je een kleine catalogus van tafelspellen, dan passen twee andere templates van ons naast deze.
Ludo Cats: Ludo met katjes, CPU op drie niveaus of vrienden op één apparaat
Boba Club: Klondike-solitaire met een campagne van 12 verdelingen
Opnieuw bouwen na het bewerken van de TypeScript
De map game/ is al gebouwd, dus het installeren van het spel heeft geen Node.js nodig. Je hebt het alleen nodig na het wijzigen van de broncode.
- Installeer Node.js 22.12 of nieuwer (de gids is getest met 22.23). npm komt er vanzelf bij.
- Open een terminal in source/, waar package.json en package-lock.json staan.
- Draai npm ci. Dat installeert de exact vastgelegde versies van Phaser, Vite, Vitest en TypeScript.
- Draai npm test (58 tests) en npm run typecheck. Los fouten op vóór je bouwt.
- Draai npm run build. De uitvoer is source/dist-static/, met index.html, modules/, lib/, assets/ en licenses/.
- Maak een back-up van het gehoste spel, en upload daarna de inhoud van dist-static/ precies zoals game/.
De gids waarschuwt tegen npm audit fix en npm update, omdat die de geteste versies wijzigen. Als er een pakketprobleem optreedt, zet dan het meegeleverde paar package.json en package-lock.json terug.
Hosten op je site
Upload alleen de inhoud van game/, zodat index.html direct in de doelmap staat, bijvoorbeeld public_html/games/pip-club/. Houd assets/, lib/, modules/, licenses/ en pip.config.js ernaast en houd de hoofdletters van elke naam intact. Upload niet source/, documentation/ of de zip.
- Elke statische HTTP(S)-host werkt, in elke submap van elk domein, omdat het spel relatieve paden gebruikt.
- Er is geen database, PHP- of Node.js-service nodig om te spelen.
- Index.html openen vanaf je computer (file://) wordt niet ondersteund.
- De host moet .js, .webp, .woff2 en .mp3 met de gewone bestandstypen serveren.
- Het spel doet geen analytics-, ranglijst-, betaal- of advertentieoproepen.
Opslag blijft in de browser van de speler, in IndexedDB of localStorage, en synchroniseert niet tussen apparaten. Om bij te werken upload je de nieuwe game/ over de oude, behoud je pip.config.js en de saveKey, en wis je de gecachte bestanden in plaats van de sitegegevens als de oude versie nog getoond wordt.
Wat het niet bevat, en de licentie
De editie heeft geen online of lokale tweespelermodus, geen cloudopslag, geen online ranglijst, geen betalingen met echt geld en geen advertentie-SDK. Native apps, hosting en maatwerkontwikkeling vallen ook buiten het pakket. Advertenties, een winkel of synchronisatie toevoegen is ontwikkelwerk dat je eigen accounts en goedkeuringen vraagt.
De lijstprijs van Pip Club is $49, wat $41,65 wordt met de Black Friday-actie tot en met 30 november 2026; een bundelkorting van 5% tot 20% geldt wanneer je twee of meer templates samen koopt. De licentie is eeuwigdurend en niet-exclusief, voor één eindproduct, van jou of van één klant. Je mag de code, het beeld en de audio wijzigen, je merk erop zetten en spelers gratis of met advertenties laten spelen, maar je mag het template of de code ervan niet op zichzelf doorverkopen. Support duurt zes maanden, of twaalf met de verlenging; alles wat verder gaat dan installeren en het oplossen van defecten wordt apart geoffreerd.
Lees de licentie- en supportvoorwaarden
Veelgestelde vragen
Is de broncode van het dominospel TypeScript of JavaScript?
De broncode is leesbare, niet-geminificeerde TypeScript. De klaar-om-te-hosten map game/ is de gebouwde JavaScript, dus je hebt alleen TypeScript-tools nodig om het spel te wijzigen.
Kunnen twee mensen tegen elkaar spelen?
Nee. Spelers staan tegenover de computertegenstanders op één apparaat. Er is geen online of lokale tweespelermodus.
Welke dominovariant speelt het?
Klassiek dubbel-zes, één tegen één, met trekken uit de pot, passen en een slotregel. Domino scoort het overgebleven totaal van de tegenstander, en een afgesloten tafel gaat naar het lagere totaal.
Wat kan ik wijzigen zonder opnieuw te bouwen?
pip.config.js stelt de browsertitel, de opslagsleutel en de starttaal in. Regels, beeld, teksten en muziek worden in de broncode gewijzigd en vragen om een nieuwe build.
Werkt het offline?
Het roept geen externe diensten aan, maar het is geen installeerbare offline app. Spelers moeten je webadres kunnen bereiken om het te laden.
Is dit de dominobasis die je nodig hebt?
Pip Club past bij een site of portal die een klassiek tafelspel voor alle leeftijden wil, bij een studio die een gebrand dominospel voor één klant bouwt, en bij een ontwikkelaar die leesbare TypeScript wil met een computertegenstander en echte unittests. Het past niet bij een project waarin mensen tegen elkaar moeten spelen, online of op één scherm; dat is vanaf het begin maatwerk.
Speel de Pip Club-demo en koop de licentie
Een andere regelset of meerdere licenties nodig? Vraag een offerte
