Οδηγός

Πηγαίος κώδικας ντόμινο: κανόνες, αντίπαλοι υπολογιστή και 58 δοκιμές

Τι περιέχει το πακέτο Pip Club Dominoes, ποιους κανόνες παίζει, πού αλλάζουν τα κείμενα και τα πλακίδια, και τι αφήνει έξω.

Γραφικό του Pip Club Dominoes: ένα ρακούν, μια αλεπού και μια μαύρη γάτα με φούτερ χαμογελούν γύρω από ένα στρογγυλό τραπέζι με τρία πλακίδια ντόμινο στο ηλιοβασίλεμα.

Ο πηγαίος κώδικας ντόμινο φαίνεται απλός μέχρι να ελέγξετε τις ακραίες περιπτώσεις. Ποιος ανοίγει όταν κανείς δεν έχει διπλό; Τι γίνεται όταν το απόθεμα αδειάσει και οι δύο παίκτες περνούν; Πώς υπολογίζεται το σκορ στο τέλος ενός μπλοκαρισμένου γύρου; Ένα πρότυπο που απαντά σε αυτές τις ερωτήσεις με κώδικα και τις αποδεικνύει με δοκιμές αξίζει περισσότερο από ένα με ωραιότερα πλακίδια. Το Pip Club Dominoes, το πρότυπο ντόμινο διπλού έξι μας, έχει 58 αυτοματοποιημένες δοκιμές που καλύπτουν τους κανόνες, τον αντίπαλο υπολογιστή, τη διάταξη του τραπεζιού, την αποθήκευση και τις 14 μεταφράσεις.

Αυτός ο οδηγός εξηγεί ποιους κανόνες παίζει το παιχνίδι, πώς είναι οργανωμένο το πακέτο, τι μπορείτε να αλλάξετε με επεξεργαστή κειμένου και τι χρειάζεται νέο build, πώς να το φιλοξενήσετε και τι επιτρέπει η άδεια. Τα ονόματα αρχείων προέρχονται από τον εικονογραφημένο οδηγό αγοραστή που συνοδεύει το στοιχείο.

Ένα πράγμα να ξέρετε πριν από όλα: το Pip Club παίζεται απέναντι στον υπολογιστή. Δεν έχει διαδικτυακή λειτουργία ούτε λειτουργία δύο παικτών σε μία συσκευή.

Οι κανόνες που παίζει αυτός ο πηγαίος κώδικας ντόμινο

Οι κανόνες είναι το σημείο όπου τα πρότυπα ντόμινο διαφέρουν περισσότερο, οπότε ελέγξτε τους με όσα περιμένουν οι παίκτες σας. Το Pip Club παίζει το κλασικό παιχνίδι με πλακίδια διπλού έξι, έναν παίκτη απέναντι σε έναν αντίπαλο υπολογιστή.

  • 28 πλακίδια από το 0 έως το 6. Κάθε παίκτης παίρνει 7, και τα υπόλοιπα 14 μένουν στο boneyard (το απόθεμα).
  • Ανοίγει το υψηλότερο διπλό. Χωρίς διπλά, ανοίγει το υψηλότερο σύνολο, και σε ισοπαλία το υψηλότερο μισό.
  • Το τραπέζι έχει πάντα δύο άκρα, το A και το B. Ένα πλακίδιο πρέπει να ταιριάζει σε ένα άκρο, και το μηδέν ταιριάζει με το μηδέν.
  • Τα διπλά μπορούν να μπουν σταυρωτά, αλλά ποτέ δεν διακλαδώνονται και ποτέ δεν δίνουν επιπλέον σειρά.
  • Χωρίς ταίριασμα, τραβάτε ένα πλακίδιο κάθε φορά μέχρι να μπορείτε να παίξετε. Με άδειο το boneyard και χωρίς ταίριασμα, περνάτε.
  • Domino: όποιος αδειάσει το χέρι του σκοράρει το σύνολο που μένει στο χέρι του αντιπάλου.
  • Lock: δύο διαδοχικές πάσες με άδειο boneyard κλειδώνουν το τραπέζι. Ο μικρότερος σύνολος κερδίζει τη διαφορά, και τα ίσα σύνολα είναι ισοπαλία.

Ο Quick Round (γρήγορος γύρος) τελειώνει μετά από έναν γύρο. Το Points Match (αγώνας πόντων) παίζει γύρους μέχρι κάποιος να φτάσει τους 50 ή 100 πόντους. Η καμπάνια έχει 9 αναμετρήσεις σε 3 κεφάλαια, ένα για κάθε στέκι, και κάθε νίκη κερδίζει μια σφραγίδα.

Τι περιέχει το πακέτο

Οι παίκτες αντιμετωπίζουν τρεις αντιπάλους υπολογιστή με δική τους προσωπικότητα: τον Rico, το ρακούν DJ, τον Faísca, την αλεπού skater, και τον Nix, τη γάτα καλλιτέχνη, καθένας σε Easy, Normal ή Hard (εύκολο, κανονικό, δύσκολο). Τα πλακίδια που μπορούν να παιχτούν λάμπουν, το τραπέζι δείχνει πού θα προσγειωθεί ένα πλακίδιο, και μια υπόδειξη προτείνει κίνηση. Υπάρχουν τρία στέκια (Rooftop, Skate Park και Midnight Arcade), έξι συλλέξιμα σετ πλακιδίων, σφραγίδες καμπάνιας και στατιστικά. Λειτουργούν ποντίκι, αφή και πληκτρολόγιο.

  • game/: το έτοιμο για φιλοξενία build, με index.html, pip.config.js, modules/, lib/, assets/ και licenses/.
  • game/lib/phaser.js: Phaser 3.90.0, αναγνώσιμο, με άδεια MIT.
  • source/: το επεξεργάσιμο TypeScript, τα γραφικά, η μουσική, οι μεταφράσεις και οι αυτοματοποιημένες δοκιμές.
  • documentation/index.html και DOCUMENTATION.html: ο οδηγός αγοραστή σε 14 γλώσσες, που ανοίγει offline.
  • THIRD-PARTY-LICENSES/: σημειώσεις για το Phaser και τη γραμματοσειρά Barlow Condensed.

Τα γραφικά και η μουσική είναι πρωτότυπα στοιχεία του προϊόντος, που αδειοδοτούνται στον αγοραστή μαζί με το στοιχείο. Η διεπαφή έρχεται σε 14 γλώσσες και ακολουθεί τη γλώσσα του περιηγητή· δεν υπάρχει ηχογραφημένη φωνή, οπότε κάθε γραμμή των αντιπάλων ακολουθεί τη γλώσσα που επιλέχθηκε.

Δείτε το Pip Club Dominoes: demo, οδηγό και τιμή

Αλλαγή χωρίς build: το pip.config.js

Δίπλα στο index.html βρίσκεται το pip.config.js. Ανοίξτε το σε οποιονδήποτε επεξεργαστή κειμένου, αλλάξτε μια τιμή, ανεβάστε το αρχείο και φορτώστε ξανά τη σελίδα. Εκεί βρίσκονται τρεις ρυθμίσεις.

  • title: ο τίτλος της καρτέλας του περιηγητή.
  • saveKey: το όνομα κάτω από το οποίο αποθηκεύεται η πρόοδος. Η προεπιλογή είναι pip-club.
  • defaultLanguage: η αρχική γλώσσα. Αν μείνει κενή, το παιχνίδι ακολουθεί τον περιηγητή.

Κρατήστε το saveKey αμετάβλητο σε ζωντανό site. Ένα διαφορετικό κλειδί κάνει το παιχνίδι να αγνοεί την υπάρχουσα πρόοδο και να ξεκινά νέα αποθήκευση, κάτι χρήσιμο για δεύτερο αντίγραφο και επώδυνο για ενημέρωση.

Πού βρίσκονται τα κείμενα, τα γραφικά και τα πλακίδια στον πηγαίο κώδικα

  • Κείμενα και μεταφράσεις: source/src/ui/i18n.ts και source/src/ui/locales/.
  • Γραφικά χαρακτήρων, σκηνές και λογότυπο: source/src/assets/club/.
  • Μουσική: source/src/assets/music/.
  • Χρώματα πλακιδίων: source/src/art/palette.ts και source/src/art/tileArt.ts.
  • Δοκιμές: source/tests/.

Μια τυπική δουλειά επωνυμίας πηγαίνει με αυτή τη σειρά: το λογότυπο και τα σκηνικά γραφικά στο assets/club/, μετά η παλέτα των πλακιδίων, και μετά το κείμενο στις τοπικές εκδόσεις. Το white label επιτρέπεται, οπότε η επωνυμία σας μπορεί να αντικαταστήσει τη δική μας. Η αλλαγή του τρόπου που παίζει ο υπολογιστής ή ενός κανόνα είναι βαθύτερη δουλειά· τρέξτε τις δοκιμές πριν και μετά, γιατί καλύπτουν και τα δύο.

Αν χτίζετε έναν μικρό κατάλογο επιτραπέζιων παιχνιδιών, δύο άλλα πρότυπα μας ταιριάζουν δίπλα σε αυτό.

Ludo Cats: Ludo με γατάκια, υπολογιστής σε τρία επίπεδα ή φίλοι σε μία συσκευή

Boba Club: solitaire Klondike με καμπάνια 12 μοιρασμάτων

Νέο build μετά την επεξεργασία του TypeScript

Ο φάκελος game/ είναι ήδη χτισμένος, οπότε η εγκατάσταση του παιχνιδιού δεν χρειάζεται Node.js. Το χρειάζεστε μόνο μετά από αλλαγή στον πηγαίο κώδικα.

  1. Εγκαταστήστε Node.js 22.12 ή νεότερο (ο οδηγός δοκιμάστηκε με 22.23). Το npm έρχεται μαζί του.
  2. Ανοίξτε τερματικό στο source/, όπου βρίσκονται τα package.json και package-lock.json.
  3. Τρέξτε npm ci. Εγκαθιστά τις ακριβείς κλειδωμένες εκδόσεις των Phaser, Vite, Vitest και TypeScript.
  4. Τρέξτε npm test (58 δοκιμές) και npm run typecheck. Διορθώστε τα σφάλματα πριν χτίσετε.
  5. Τρέξτε npm run build. Το αποτέλεσμα είναι ο φάκελος source/dist-static/, με index.html, modules/, lib/, assets/ και licenses/.
  6. Κρατήστε αντίγραφο ασφαλείας του φιλοξενούμενου παιχνιδιού, και μετά ανεβάστε τα περιεχόμενα του dist-static/ ακριβώς όπως το game/.

Ο οδηγός προειδοποιεί ενάντια στα npm audit fix και npm update, επειδή αλλάζουν τις δοκιμασμένες εκδόσεις. Αν εμφανιστεί πρόβλημα πακέτου, επαναφέρετε το ζεύγος package.json και package-lock.json που παραδίδεται.

Φιλοξενία στον ιστότοπό σας

Ανεβάστε μόνο τα περιεχόμενα του game/, ώστε το index.html να βρίσκεται κατευθείαν στον φάκελο-στόχο, για παράδειγμα public_html/games/pip-club/. Κρατήστε δίπλα του τα assets/, lib/, modules/, licenses/ και pip.config.js, και τα κεφαλαία-πεζά γράμματα των ονομάτων όπως είναι. Μην ανεβάζετε το source/, το documentation/ ή το ZIP.

  • Κάθε στατική φιλοξενία HTTP(S) δουλεύει, σε οποιονδήποτε υποφάκελο οποιουδήποτε domain, επειδή το παιχνίδι χρησιμοποιεί σχετικές διαδρομές.
  • Δεν χρειάζεται βάση δεδομένων, PHP ή υπηρεσία Node.js για να παίξει.
  • Το άνοιγμα του index.html από τον υπολογιστή σας (file://) δεν υποστηρίζεται.
  • Ο διακομιστής πρέπει να σερβίρει .js, .webp, .woff2 και .mp3 με κανονικούς τύπους.
  • Το παιχνίδι δεν κάνει κλήσεις σε αναλυτικά στοιχεία, κατάταξη, πληρωμές ή διαφήμιση.

Οι αποθηκεύσεις μένουν στον περιηγητή του παίκτη, σε IndexedDB ή localStorage, και δεν συγχρονίζονται μεταξύ συσκευών. Για ενημέρωση, ανεβάστε το νέο game/ πάνω από το παλιό, κρατήστε το pip.config.js και το saveKey του, και καθαρίστε τα αποθηκευμένα αρχεία της προσωρινής μνήμης αντί για τα δεδομένα του site αν παλιά έκδοση εμφανίζεται ακόμη.

Τι δεν περιλαμβάνεται, και η άδεια

Η έκδοση δεν έχει λειτουργία δύο παικτών online ή τοπικά, ούτε cloud αποθηκεύσεις, διαδικτυακή κατάταξη, αγορές με πραγματικά χρήματα ή SDK διαφήμισης. Οι εγγενείς εφαρμογές, η φιλοξενία και η προσαρμοσμένη ανάπτυξη είναι επίσης εκτός πακέτου. Η προσθήκη διαφημίσεων, καταστήματος ή συγχρονισμού είναι δουλειά προγραμματιστή που χρειάζεται δικούς σας λογαριασμούς και εγκρίσεις.

Το Pip Club κοστίζει 49 $, που γίνεται 41,65 $ με την προωθητική προσφορά Black Friday έως 30 Νοεμβρίου 2026· ισχύει έκπτωση πακέτου 5% έως 20% όταν αγοράζετε δύο ή περισσότερα πρότυπα μαζί. Η άδεια είναι μόνιμη και μη αποκλειστική, για ένα τελικό προϊόν, δικό σας ή ενός πελάτη. Μπορείτε να αλλάξετε τον κώδικα, τα γραφικά και τον ήχο, να βάλετε την επωνυμία σας και να αφήσετε τους παίκτες να παίζουν δωρεάν ή με διαφημίσεις, αλλά δεν μπορείτε να μεταπωλήσετε το πρότυπο ή τον κώδικά του μόνα τους. Η υποστήριξη διαρκεί έξι μήνες, ή δώδεκα με την επέκταση· ό,τι πέραν της εγκατάστασης και της διόρθωσης σφαλμάτων προσφέρεται χωριστά.

Διαβάστε τους όρους άδειας και υποστήριξης

Συχνές ερωτήσεις

Ο πηγαίος κώδικας ντόμινο είναι TypeScript ή JavaScript;

Ο πηγαίος κώδικας είναι αναγνώσιμο, μη συμπιεσμένο TypeScript. Ο φάκελος game/ έτοιμος για φιλοξενία είναι το χτισμένο JavaScript, οπότε χρειάζεστε εργαλεία TypeScript μόνο για να αλλάξετε το παιχνίδι.

Μπορούν δύο άτομα να παίξουν μεταξύ τους;

Όχι. Οι παίκτες αντιμετωπίζουν τους αντιπάλους υπολογιστή σε μία συσκευή. Δεν υπάρχει λειτουργία δύο παικτών online ή τοπικά.

Ποια παραλλαγή ντόμινο παίζει;

Κλασικό διπλού έξι, ένας απέναντι σε έναν, με τράβηγμα από το boneyard, πάσες και κανόνα lock. Το Domino σκοράρει το υπόλοιπο σύνολο του αντιπάλου, και ένα κλειδωμένο τραπέζι πηγαίνει σε αυτόν με το μικρότερο σύνολο.

Τι μπορώ να αλλάξω χωρίς build;

Το pip.config.js ορίζει τον τίτλο του περιηγητή, το κλειδί αποθήκευσης και την αρχική γλώσσα. Οι κανόνες, τα γραφικά, τα κείμενα και η μουσική αλλάζουν στον πηγαίο κώδικα και χρειάζονται build.

Λειτουργεί offline;

Δεν καλεί εξωτερικές υπηρεσίες, αλλά δεν είναι εφαρμογή που εγκαθίσταται για χρήση offline. Οι παίκτες χρειάζονται πρόσβαση στη διεύθυνσή σας για να το φορτώσουν.

Είναι αυτή η βάση ντόμινο που χρειάζεστε;

Το Pip Club ταιριάζει σε ιστότοπο ή portal που θέλει κλασικό επιτραπέζιο παιχνίδι για όλες τις ηλικίες, σε στούντιο που φτιάχνει επωνυμημένο παιχνίδι ντόμινο για έναν πελάτη, και σε προγραμματιστή που θέλει αναγνώσιμο TypeScript με αντίπαλο υπολογιστή και πραγματικές δοκιμές μονάδων. Δεν ταιριάζει σε έργο που χρειάζεται να παίζουν οι άνθρωποι μεταξύ τους, online ή σε μία οθόνη· αυτό είναι προσαρμοσμένη εργασία από την αρχή.

Παίξτε το demo του Pip Club και αγοράστε την άδεια

Χρειάζεστε άλλο σύνολο κανόνων ή αρκετές άδειες; Ζητήστε προσφορά