Source code game domino: luật chơi, đối thủ máy và 58 bài kiểm thử
Gói Pip Club Dominoes có gì, chơi theo luật nào, sửa văn bản và quân domino ở đâu, và những gì không có trong gói.

Source code game domino trông đơn giản cho đến khi bạn xét các trường hợp đặc biệt. Ai đi trước khi không ai cầm quân đôi? Chuyện gì xảy ra khi hết quân bốc và cả hai người đều bỏ lượt? Điểm được tính thế nào khi ván bị chặn? Một mẫu game trả lời những câu đó bằng code và chứng minh bằng kiểm thử đáng giá hơn một mẫu chỉ có quân domino đẹp hơn. Pip Club Dominoes, mẫu double-six của chúng tôi, đi kèm 58 bài kiểm thử tự động bao quát luật chơi, đối thủ máy, bố cục bàn, việc lưu dữ liệu và 14 bản dịch.
Bài viết này giải thích game chơi theo luật nào, gói được sắp xếp ra sao, sửa được gì bằng trình soạn thảo văn bản và gì cần build lại, cách host và giấy phép cho phép những gì. Tên file lấy từ tài liệu minh họa dành cho người mua đi kèm sản phẩm.
Một điều cần biết trước tiên: Pip Club là game chơi với máy. Không có chế độ trực tuyến và không có chế độ hai người chơi trên một thiết bị.
Luật chơi trong source code game domino này
Luật chơi là chỗ các mẫu game domino khác nhau nhiều nhất, nên hãy đối chiếu với những gì người chơi của bạn quen. Pip Club chơi kiểu block double-six cổ điển, một người chơi đấu với một đối thủ máy.
- 28 quân từ 0 đến 6. Mỗi người nhận 7 quân, 14 quân còn lại nằm trong nọc bốc.
- Quân đôi cao nhất đi trước. Nếu không ai có quân đôi, quân có tổng cao nhất đi trước; nếu bằng nhau, xét nửa cao nhất.
- Bàn luôn có hai đầu, A và B. Quân đánh ra phải khớp một đầu, và 0 khớp với 0.
- Quân đôi có thể đặt ngang, nhưng không bao giờ tạo nhánh và không cho thêm lượt.
- Không có quân khớp thì bốc từng quân một cho đến khi đánh được. Hết nọc bốc mà vẫn không khớp thì bỏ lượt.
- Domino: ai đánh hết bài trước được cộng tổng điểm còn lại trên tay đối thủ.
- Chặn: hai lần bỏ lượt liên tiếp khi nọc bốc đã hết sẽ chặn bàn. Người có tổng thấp hơn thắng phần chênh lệch; tổng bằng nhau thì hòa.
Quick Round kết thúc sau một ván. Points Match chơi nhiều ván cho đến khi có người đạt 50 hoặc 100 điểm. Chiến dịch gồm 9 trận trong 3 chương, mỗi chương một địa điểm, và mỗi trận thắng được một con dấu.
Gói gồm những gì
Người chơi đối đầu ba đối thủ máy với cá tính riêng: Rico chú gấu mèo DJ, Faísca cô cáo trượt ván và Nix chú mèo họa sĩ, mỗi đối thủ có mức Easy, Normal hoặc Hard. Quân đánh được sẽ phát sáng, bàn chơi hiển thị trước vị trí quân sẽ đặt, và có gợi ý nước đi. Có ba địa điểm (Rooftop, Skate Park và Midnight Arcade), sáu bộ quân sưu tầm, con dấu chiến dịch và thống kê. Chơi được bằng chuột, cảm ứng và bàn phím.
- game/: bản build sẵn sàng host, gồm index.html, pip.config.js, modules/, lib/, assets/ và licenses/.
- game/lib/phaser.js: Phaser 3.90.0, dễ đọc, theo giấy phép MIT.
- source/: TypeScript có thể chỉnh sửa, hình ảnh, nhạc, bản dịch và các bài kiểm thử tự động.
- documentation/index.html và DOCUMENTATION.html: tài liệu cho người mua bằng 14 ngôn ngữ, mở được khi không có mạng.
- THIRD-PARTY-LICENSES/: thông báo giấy phép của Phaser và phông Barlow Condensed.
Hình ảnh và nhạc là tài sản gốc của sản phẩm, được cấp phép cho người mua cùng với sản phẩm. Giao diện có 14 ngôn ngữ và tự theo ngôn ngữ trình duyệt; game không có giọng thu âm, nên mọi câu thoại của đối thủ hiển thị theo ngôn ngữ đã chọn.
Xem Pip Club Dominoes: demo, tài liệu và giá
Sửa không cần build lại: pip.config.js
Cạnh index.html là pip.config.js. Mở nó bằng bất kỳ trình soạn thảo văn bản nào, đổi một giá trị, tải file lên và tải lại trang. Ở đó có ba thiết lập.
- title: tiêu đề tab trình duyệt.
- saveKey: tên dùng để lưu dữ liệu. Mặc định là pip-club.
- defaultLanguage: ngôn ngữ khởi đầu. Để trống thì game theo ngôn ngữ trình duyệt.
Giữ nguyên saveKey trên trang đang chạy. Một khóa khác khiến game bỏ qua tiến trình hiện có và tạo bản lưu mới, hữu ích cho bản sao thứ hai nhưng rất phiền khi cập nhật.
Văn bản, hình ảnh và quân domino nằm ở đâu trong mã nguồn
- Văn bản và bản dịch: source/src/ui/i18n.ts và source/src/ui/locales/.
- Hình nhân vật, cảnh và logo: source/src/assets/club/.
- Nhạc: source/src/assets/music/.
- Màu quân domino: source/src/art/palette.ts và source/src/art/tileArt.ts.
- Kiểm thử: source/tests/.
Một việc gắn thương hiệu điển hình đi theo thứ tự: logo và hình cảnh trong assets/club/, rồi bảng màu quân, rồi câu chữ trong locales. Được phép white label, thương hiệu của bạn có thể thay thế của chúng tôi. Thay đổi cách máy chơi hoặc một luật là việc sâu hơn; hãy chạy kiểm thử trước và sau, vì chúng bao quát cả hai.
Nếu bạn đang xây một danh mục nhỏ các game bàn cờ, hai mẫu khác của chúng tôi rất hợp để đặt cạnh mẫu này.
Ludo Cats: cờ Ludo với mèo con, đấu máy ba cấp độ hoặc chơi cùng bạn bè trên một thiết bị
Boba Club: solitaire Klondike với chiến dịch 12 ván
Build lại sau khi sửa TypeScript
Thư mục game/ đã được build sẵn, nên cài game không cần Node.js. Bạn chỉ cần nó sau khi sửa mã nguồn.
- Cài Node.js 22.12 trở lên (tài liệu được kiểm tra với 22.23). npm đi kèm theo.
- Mở terminal trong source/, nơi có package.json và package-lock.json.
- Chạy npm ci. Lệnh này cài đúng các phiên bản đã khóa của Phaser, Vite, Vitest và TypeScript.
- Chạy npm test (58 bài kiểm thử) và npm run typecheck. Sửa lỗi trước khi build.
- Chạy npm run build. Kết quả là source/dist-static/, gồm index.html, modules/, lib/, assets/ và licenses/.
- Sao lưu game đang host, rồi tải nội dung dist-static/ lên y như game/.
Tài liệu khuyên không dùng npm audit fix và npm update, vì chúng thay đổi các phiên bản đã kiểm thử. Nếu gặp sự cố gói, hãy khôi phục cặp package.json và package-lock.json đi kèm.
Host game trên trang của bạn
Chỉ tải nội dung của game/ lên, để index.html nằm ngay trong thư mục đích, ví dụ public_html/games/pip-club/. Giữ assets/, lib/, modules/, licenses/ và pip.config.js bên cạnh và giữ đúng chữ hoa chữ thường của mọi tên. Không tải lên source/, documentation/ hay file ZIP.
- Mọi host tĩnh HTTP(S) đều chạy được, trong bất kỳ thư mục con nào của bất kỳ tên miền nào, vì game dùng đường dẫn tương đối.
- Không cần cơ sở dữ liệu, PHP hay dịch vụ Node.js để chơi.
- Không hỗ trợ mở index.html từ máy tính (file://).
- Host phải trả .js, .webp, .woff2 và .mp3 với kiểu thông thường.
- Game không gọi dịch vụ phân tích, xếp hạng, thanh toán hay quảng cáo nào.
Dữ liệu lưu nằm trong trình duyệt của người chơi, ở IndexedDB hoặc localStorage, và không đồng bộ giữa các thiết bị. Để cập nhật, tải game/ mới đè lên bản cũ, giữ pip.config.js và saveKey của nó; nếu vẫn thấy bản cũ, hãy xóa file trong bộ nhớ đệm chứ không xóa dữ liệu trang web.
Những gì không có trong gói, và giấy phép
Bản này không có chế độ hai người chơi trực tuyến hay cục bộ, không lưu đám mây, không có bảng xếp hạng trực tuyến, không có mua hàng bằng tiền thật và không có SDK quảng cáo. Ứng dụng native, hosting và phát triển theo yêu cầu cũng nằm ngoài gói. Thêm quảng cáo, cửa hàng hay đồng bộ là việc của lập trình viên, cần tài khoản và phê duyệt của chính bạn.
Pip Club có giá niêm yết 49 USD, còn 41,65 USD với khuyến mãi Black Friday đến hết ngày 30/11/2026; giảm giá combo từ 5% đến 20% áp dụng khi bạn mua từ hai mẫu trở lên cùng lúc. Giấy phép vĩnh viễn và không độc quyền, cho một sản phẩm cuối cùng của bạn hoặc của một khách hàng. Bạn được sửa code, hình ảnh và âm thanh, gắn thương hiệu của mình, cho người chơi chơi miễn phí hoặc có quảng cáo, nhưng không được bán lại riêng mẫu game hay code của nó. Hỗ trợ kéo dài sáu tháng, hoặc mười hai tháng khi gia hạn; mọi việc ngoài cài đặt và sửa lỗi đều được báo giá.
Đọc điều khoản giấy phép và hỗ trợ
Câu hỏi thường gặp
Source code game domino viết bằng TypeScript hay JavaScript?
Mã nguồn là TypeScript dễ đọc, không nén. Thư mục game/ sẵn sàng host là JavaScript đã build, nên bạn chỉ cần công cụ TypeScript khi muốn sửa game.
Hai người có chơi với nhau được không?
Không. Người chơi đấu với các đối thủ máy trên một thiết bị. Không có chế độ hai người chơi trực tuyến hay cục bộ.
Game chơi biến thể domino nào?
Double-six cổ điển, một đấu một, có bốc quân từ nọc, bỏ lượt và luật chặn. Domino được cộng tổng điểm còn lại của đối thủ, còn khi bàn bị chặn thì người có tổng thấp hơn thắng.
Tôi sửa được gì mà không cần build lại?
pip.config.js đặt tiêu đề trình duyệt, khóa lưu và ngôn ngữ khởi đầu. Luật chơi, hình ảnh, văn bản và nhạc được sửa trong mã nguồn và cần build lại.
Game có chạy ngoại tuyến không?
Game không gọi dịch vụ bên ngoài nào, nhưng không phải ứng dụng ngoại tuyến cài đặt được. Người chơi cần truy cập địa chỉ web của bạn để tải game.
Đây có phải nền tảng domino bạn cần?
Pip Club phù hợp với trang web hoặc cổng game muốn có một game bàn cổ điển cho mọi lứa tuổi, studio làm game domino mang thương hiệu cho một khách hàng, và lập trình viên muốn có TypeScript dễ đọc với đối thủ máy và unit test thực sự. Nó không phù hợp với dự án cần người chơi đấu với nhau, dù trực tuyến hay trên cùng màn hình; đó là việc phát triển riêng ngay từ đầu.
