Código-fonte de jogo de dominó: regras, adversários da CPU e 58 testes
O que vem no pacote do Pip Club Dominoes, que regras ele segue, onde mudar textos e pedras e o que fica de fora.

Um código-fonte de jogo de dominó parece simples até você olhar os casos de canto. Quem sai quando ninguém tem carroça? O que acontece quando o monte acaba e os dois passam? Como se conta o ponto numa rodada trancada? Um template que responde isso no código, e prova com testes, vale mais do que um com pedras mais bonitas. O Pip Club Dominoes, nosso template de duplo-seis, vem com 58 testes automáticos que cobrem as regras, o adversário do computador, o desenho da mesa, o save e as 14 traduções.
Este guia explica que regras o jogo segue, como o pacote está organizado, o que muda com um editor de texto e o que precisa de build, como hospedar e o que a licença permite. Os nomes de arquivo vêm do manual ilustrado que acompanha o item.
Antes de tudo, um aviso: o Pip Club é jogado contra o computador. Não tem modo online nem modo de dois jogadores no mesmo aparelho.
As regras deste código-fonte de jogo de dominó
É nas regras que os templates de dominó mais diferem, então compare com o que o seu público espera. O Pip Club joga o dominó clássico de duplo-seis com compra, um jogador contra um adversário do computador.
- 28 pedras de 0 a 6. Cada jogador recebe 7 e as outras 14 ficam no monte.
- Sai a carroça mais alta. Sem carroças, sai a pedra de maior soma, e no empate, a de maior metade.
- A mesa sempre tem duas pontas, A e B. A pedra precisa casar com uma ponta, e branco casa com branco.
- Carroças podem ficar atravessadas, mas nunca abrem novas pontas e nunca dão jogada extra.
- Sem pedra que encaixe, compre uma por vez até poder jogar. Com o monte vazio e sem jogada, passe.
- Batida: quem esvazia a mão marca a soma das pedras que sobraram na mão do adversário.
- Tranca: dois passes seguidos com o monte vazio trancam a mesa. A menor soma ganha a diferença, e somas iguais empatam.
A Partida Rápida acaba depois de uma rodada. A Partida por Pontos joga rodadas até alguém chegar a 50 ou 100. A campanha tem 9 encontros em 3 capítulos, um por ponto de encontro, e cada vitória rende um selo.
O que vem no pacote
O jogador enfrenta três adversários do computador com personalidade própria: Rico, o guaxinim DJ, Faísca, a raposa skatista, e Nix, a gata artista, cada um no Fácil, Normal ou Difícil. As pedras que encaixam brilham, a mesa mostra onde a pedra vai cair e uma dica sugere a jogada. São três pontos de encontro (Rooftop, Skate Park e Midnight Arcade), seis conjuntos de pedras colecionáveis, selos da campanha e estatísticas. Funciona com mouse, toque e teclado.
- game/: a versão pronta para hospedar, com index.html, pip.config.js, modules/, lib/, assets/ e licenses/.
- game/lib/phaser.js: Phaser 3.90.0, legível, sob licença MIT.
- source/: o TypeScript editável, arte, música, traduções e os testes automáticos.
- documentation/index.html e DOCUMENTATION.html: o manual do comprador em 14 idiomas, que abre sem internet.
- THIRD-PARTY-LICENSES/: avisos de licença do Phaser e da fonte Barlow Condensed.
Arte e música são originais do produto e licenciadas ao comprador junto com o item. A interface vem em 14 idiomas e segue o idioma do navegador; não há voz gravada, então cada fala dos adversários aparece no idioma escolhido.
Ver o Pip Club Dominoes: demo, manual e preço
Mudar sem build: o pip.config.js
Ao lado do index.html fica o pip.config.js. Abra em qualquer editor de texto, mude um valor, envie o arquivo e recarregue. São três ajustes.
- title: o título da aba do navegador.
- saveKey: o nome com que o save é gravado. O padrão é pip-club.
- defaultLanguage: o idioma inicial. Vazio, o jogo segue o navegador.
Não mude o saveKey num site no ar. Uma chave diferente faz o jogo ignorar o progresso existente e começar um save novo, o que é útil para uma segunda cópia e péssimo numa atualização.
Onde ficam textos, arte e pedras no código
- Textos e traduções: source/src/ui/i18n.ts e source/src/ui/locales/.
- Arte dos personagens, cenários e logotipo: source/src/assets/club/.
- Música: source/src/assets/music/.
- Cores das pedras: source/src/art/palette.ts e source/src/art/tileArt.ts.
- Testes: source/tests/.
Um trabalho de marca costuma seguir esta ordem: logotipo e arte dos cenários em assets/club/, depois a paleta das pedras, depois os textos nos locales. White label é permitido, então a sua marca pode substituir a nossa. Mudar o jeito de jogar do computador ou uma regra é um trabalho mais fundo; rode os testes antes e depois, porque eles cobrem as duas coisas.
Se você está montando um pequeno catálogo de jogos de mesa, outros dois templates nossos combinam com este.
Ludo Cats: ludo com gatinhos, CPU em três níveis ou amigos no mesmo aparelho
Boba Club: paciência Klondike com campanha de 12 jogos
Gerando o build depois de editar o TypeScript
A pasta game/ já vem pronta, então instalar o jogo não exige Node.js. Ele só é necessário depois de mudar o código.
- Instale o Node.js 22.12 ou mais novo (o manual foi testado com o 22.23). O npm vem junto.
- Abra um terminal em source/, onde estão o package.json e o package-lock.json.
- Rode npm ci. Ele instala as versões travadas de Phaser, Vite, Vitest e TypeScript.
- Rode npm test (58 testes) e npm run typecheck. Resolva os erros antes do build.
- Rode npm run build. O resultado sai em source/dist-static/, com index.html, modules/, lib/, assets/ e licenses/.
- Faça backup do jogo hospedado e envie o conteúdo de dist-static/ do mesmo jeito que game/.
O manual desaconselha npm audit fix e npm update, porque mudam as versões testadas. Se aparecer problema de pacote, restaure o par package.json e package-lock.json que veio no ZIP.
Hospedando no seu site
Envie só o conteúdo de game/, para o index.html ficar direto na pasta de destino, por exemplo public_html/games/pip-club/. Mantenha assets/, lib/, modules/, licenses/ e pip.config.js ao lado dele e preserve maiúsculas e minúsculas de cada nome. Não envie source/, documentation/ nem o ZIP.
- Qualquer hospedagem estática HTTP(S) serve, em qualquer subpasta de qualquer domínio, porque o jogo usa caminhos relativos.
- Não precisa de banco de dados, PHP nem serviço Node.js para jogar.
- Abrir o index.html do computador (file://) não é suportado.
- O servidor precisa servir .js, .webp, .woff2 e .mp3 com os tipos normais.
- O jogo não faz chamadas de analytics, ranking, pagamento ou anúncios.
O save fica no navegador do jogador, em IndexedDB ou localStorage, e não sincroniza entre aparelhos. Para atualizar, envie o novo game/ por cima do antigo, mantenha o pip.config.js e o saveKey, e limpe os arquivos em cache, não os dados do site, se a versão antiga continuar aparecendo.
O que não vem, e a licença
A edição não tem modo de dois jogadores, online ou local, nem save na nuvem, ranking online, compras com dinheiro real ou SDK de anúncios. Apps nativos, hospedagem e desenvolvimento sob medida também ficam de fora. Colocar anúncios, loja ou sincronização é trabalho de desenvolvimento com contas e aprovações suas.
O Pip Club custa US$ 49 de tabela, que vira US$ 41,65 com a promoção de Black Friday até 30 de novembro de 2026; o desconto de pacote, de 5% a 20%, vale quando você compra dois ou mais templates juntos. A licença é perpétua e não exclusiva, para um produto final, seu ou de um cliente. Você pode mudar código, arte e áudio, colocar a sua marca e deixar o jogador entrar de graça ou com anúncios, mas não pode revender o template ou o código sozinhos. O suporte dura seis meses, ou doze com a extensão; o que passar de instalação e correção de defeitos é orçado.
Ler os termos de licença e suporte
Perguntas frequentes sobre o código do Pip Club
O código-fonte do jogo de dominó é em TypeScript ou JavaScript?
O código é TypeScript legível, sem minificação. A pasta game/, pronta para hospedar, é o JavaScript compilado, então você só precisa das ferramentas de TypeScript para mudar o jogo.
Duas pessoas podem jogar uma contra a outra?
Não. O jogador enfrenta os adversários do computador no mesmo aparelho. Não há modo de dois jogadores, online ou local.
Qual variante de dominó ele joga?
Duplo-seis clássico, um contra um, com compra no monte, passe e regra de tranca. A batida marca a soma que sobrou na mão do adversário, e a mesa trancada vai para a menor soma.
O que dá para mudar sem build?
O pip.config.js define o título da aba, a chave do save e o idioma inicial. Regras, arte, textos e música mudam no código e precisam de build.
Funciona sem internet?
Ele não chama serviços externos, mas não é um app offline instalável. O jogador precisa acessar o seu endereço para carregar o jogo.
É a base de dominó que você precisa?
O Pip Club serve para site ou portal que quer um jogo de mesa clássico para todas as idades, para estúdio que monta um dominó com a marca de um cliente e para quem quer TypeScript legível com adversário do computador e testes de verdade. Não serve para um projeto em que pessoas joguem entre si, online ou na mesma tela; isso é trabalho sob medida desde o começo.
Jogar a demo do Pip Club e comprar a licença
Precisa de outra regra ou de várias licenças? Peça orçamento
