Cube Composer

Os jogos salvos ficam apenas neste navegador.

Sobre o jogo

Cube Composer é um quebra-cabeça sobre montar pequenos programas com funções, sem escrever uma linha de código. Cada fase começa com algumas colunas de cubos coloridos desenhadas em 3D isométrico, e um objetivo no canto mostra a forma que elas devem ganhar. Embaixo do tabuleiro ficam duas caixas: as funções que você pode usar e o seu programa.

Cada função transforma o tabuleiro inteiro de uma vez. "map amarelo para vermelho" pinta de vermelho todos os cubos amarelos; outro map pode trocar um cubo por uma pilha de dois; "reject" tira todas as colunas que combinam com um padrão; "stack" põe um cubo em cima de cada coluna; algumas fases trazem funções mais estranhas, como juntar colunas da mesma altura. Clique numa função para pô-la no fim do programa e o tabuleiro muda na hora, com cada etapa desenhada para você ver o que o programa já faz. A fase está resolvida quando a última etapa é igual ao objetivo.

A ordem é tudo, porque cada função age sobre o resultado da anterior, exatamente como a composição de funções numa linguagem de programação. As vinte e cinco fases estão divididas em seis capítulos, de uma introdução que explica a ideia a quebra-cabeças difíceis que exigem cada função no lugar certo. David Peter escreveu o jogo em 2015 em PureScript, uma linguagem funcional que é compilada para JavaScript.

Jogando aqui

Clique em Play. A página do jogo aparece reduzida para caber na largura do player e rola para cima e para baixo dentro dele quando uma fase tem uma lista longa de funções. A fase atual e o programa que você montou em cada fase ficam salvos neste navegador. Também dá para ir a qualquer fase pela lista "Choose level". O jogo está em inglês.

Esta é a build que o autor publica no site dele, com a página alterada para que nada seja carregado de outros sites: a fonte Roboto Condensed é servida daqui, e o script de estatísticas e o botão de estrelas do GitHub saíram. O jogo em si não mudou. Funciona com mouse ou em tela de toque.

Controles

Comando Ação
Clicar numa função da caixa da esquerda pô-la no fim do programa
Clicar numa função do programa tirá-la
Arrastar no programa mudar a ordem das funções
R reiniciar a fase
N ou seta para a direita próxima fase
P ou seta para a esquerda fase anterior

Algumas dicas

Acompanhe as etapas. O tabuleiro mostra cada resultado intermediário, dos cubos iniciais ao final, então dá para ver exatamente onde um programa erra.

Pense de trás para a frente. Olhe o objetivo e pergunte qual função poderia tê-lo produzido, e depois qual função poderia ter produzido aquilo.

Teste as duas ordens. Duas funções que parecem independentes muitas vezes dão resultados diferentes quando trocadas; arrastar é mais rápido do que pensar em tudo.

Nem toda função é necessária. Algumas fases oferecem mais funções do que a solução usa.

Créditos e licença

Cube Composer foi criado por David Peter e é distribuído sob a licença MIT, publicada no repositório dele no GitHub. O jogo inclui a biblioteca Sortable (MIT) e as bibliotecas padrão do PureScript (MIT e BSD), e a página usa a fonte Roboto Condensed (SIL Open Font License). Os textos das licenças e o código-fonte estão linkados nesta página.