Este é o primeiro post de uma série sobre como eu construo meus jogos de raciocínio lógico para publicação diária no Cruzadinha.com.br. A série completa pode ser acessada neste link.
Cruzadinhas

Utilizo os seguintes recursos para criar jogos de cruzadinhas
- Builder do Crosserville
- Lista de palavras com 11 letras do Dicio
- Lista de palavras com 5 letras do Dicio
- Dicionário de Cruzadinhas do Cruzadinha.com.br
- FSolver.pt
- Lista de todas as palavras da língua portuguesa do IME-USP
- Listas temáticas curadas por mim (temas variados)
- Dicionário Priberam (pesquisa de definições)
- Brave Search (pesquisa geral quando o Priberam não satisfaz)
- Google Search (busca por nomes e iniciais)
Construo todas as minhas cruzadinhas no Crosserville. Primeiro eu preencho o grid, depois eu crio as dicas.
Dependendo do tipo de jogo eu escolho uma palavra para iniciar a construição. Se eu estiver construindo um jogo de 11×11 escolho uma palavra com 11 letras, se for um jogo 5×5, escolho uma palavra de 5 letras. Ambas vem da lista de 1000 palavras do dicio. Aqui vai um adendo importante: O Dicio conta hífen como um caractere, o que eu pessoalmente considero equivocado, especialmente para construção de cruzadinhas.
O jogo 5×5 é mais simples, preencho a grelha sem me apegar muito às palavras que coloco nela, meu objetivo é criar um jogo 5×5 interessante, mesmo que não seja simétrico. Já os jogos 11×11 eu crio com a flag de “Rotational Symmetry” ligada. Quando a criação emperra eu desativo essa flag e construo a grelha de forma assimétrica. Mas como eu criei a estrutura básica com simetria, mesmo que o jogo não seja estritamente simétrico, ele tem formato agradável.
Uso BASTANTE o Dicionário de Cruzadinhas e o F-Solver para encontrar palavras que se encaixem no meu grid. O Dicionário de Cruzadinhas tem minha lista curada de abreviações e iniciais de pessoas notáveis com 2 letras. O FSolver tem mais termos e mostra termos sem definição que podem ou não significar alguma coisa.
Uso o Dicionário de Cruzadinhas para verificar dicas para termos já utilizados em jogos anteriores.
Uso o Priberam para encontrar definições de termos para usar nas dicas. Caso eu não goste das definições apresentadas pelo Priberam, redijo uma definição minha ou pesquiso no Brave Search e em último caso no Google.
Depois de preencher o grid, de escrever as dicas, leio todos os termos e suas dicas correspondentes. Marco dicas não diretas com um sinal de interrogação. O que são dicas não diretas? São dicas que não vão direto ao ponto, não são definições ou não apontam diretamente para o resultado. Exemplo: para o termo “EVA” a dica é “Primeira ?”, sendo eva a primeira mulher da história, é possível deduzir a resposta após uma ou 2 letras preenchidas (espero).
Se eu não tenho palavras repetidas e não encontrei erros de grafia ou gramaticais, exporto o jogo para .puz.

Faço upload do arquivo .puz no meu banco de dados de Cruzadinhas. Depois agendo o jogo para a próxima data disponível.

Com o agendamento, o jogo será distribuído a partir da meia-noite (BRT) da data programada. Não é necessário editar o player do site ou realizar qualquer alteração na página do jogo. A API faz a distinção entre jogos 5×5 e 11×11 de modo que não haja conflito nas publicações.

Por fim, faço upload da cruzadinha no Dicionário de Cruzadinhas. O site atualiza automaticamente após cada upload e os arquivos são servidos de forma estática. Isso agiliza a pesquisa de termos e melhora a experiência do usuário.
Comentários sobre arquitetura dos sites
Gosto bastante do workflow. Eu poderia fazer um upload único das cruzadinhas no meu banco de dados de cruzadinhas e a partir dele criar insumos para o Dicionário de Cruzadinhas. Porém, mantendo o banco de termos e dicas e o banco de cruzadinhas separados, eu posso utilizar jogos de terceiros para construir o dicionário sem correr o risco de publicar o jogo de alguém sem dar crédito.
Atualmente tenho o campo “origem” na tabela de dicas. Mas umavez que todas as dicas são minhas – por enquanto – não vejo porque me preocupar com isso – por enquanto.