Guia

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.

Arte do Pip Club Dominoes: um guaxinim, uma raposa e uma gata preta de moletom sorriem em volta de uma mesa redonda com três pedras de dominó ao pôr do sol.

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.

  1. Instale o Node.js 22.12 ou mais novo (o manual foi testado com o 22.23). O npm vem junto.
  2. Abra um terminal em source/, onde estão o package.json e o package-lock.json.
  3. Rode npm ci. Ele instala as versões travadas de Phaser, Vite, Vitest e TypeScript.
  4. Rode npm test (58 testes) e npm run typecheck. Resolva os erros antes do build.
  5. Rode npm run build. O resultado sai em source/dist-static/, com index.html, modules/, lib/, assets/ e licenses/.
  6. 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