Signalworks
Os jogos salvos ficam apenas neste navegador.
Sobre o jogo
Signalworks é um quebra-cabeça de programação. Cada nível dá a você um chip com uma porta de entrada, IN, com uma fila de números, e uma porta de saída, OUT, que espera uma sequência específica. No meio há um editor de texto e uma linguagem assembly bem pequena: você escreve o programa que transforma uma coisa na outra. Quando o que sai é igual ao esperado, o nível passa e o jogo registra quantos ciclos o seu programa levou.
Passar é só metade. Um ciclo é uma instrução executada, e dois programas que dão a mesma resposta podem levar números de ciclos bem diferentes, então cada nível convida você a voltar e achar um caminho mais curto. É essa a parte em torno da qual o jogo foi feito.
Jogando aqui
Clique em Play e o primeiro nível aparece: um valor espera em IN e você precisa mandá-lo para OUT. Digite o programa na caixa Program e aperte Run para ver o sinal atravessar a placa, ou Step para avançar uma instrução por vez enquanto os painéis Trace e Registers mostram a instrução em execução, o acumulador, o contador de programa, o número de ciclos e as duas portas. Erros no programa aparecem listados sob o editor, com o número da linha.
A linguagem é pequena de propósito. MOV copia um valor de uma origem para um destino (por exemplo MOV IN OUT), ADD e SUB fazem contas com o acumulador, JMP, JEZ e JNZ pulam para um rótulo (sempre, se o acumulador for zero, ou se não for) e NOP não faz nada. O programa volta ao começo depois da última linha, então um laço curto continua até a entrada acabar.
São 8 níveis, de passar um valor direto até somar, subtrair, manter um total acumulado, dobrar, pular zeros e parar num zero terminador. O seu melhor número de ciclos em cada nível fica guardado no navegador. O botão de compartilhar copia um link que abre o mesmo nível com a sua pontuação como meta a bater.
O jogo está em inglês (textos dos níveis e dos botões).
Controles
| Entrada | Ação |
|---|---|
| Teclado | escrever o programa no editor |
| Run | executar o programa, uma instrução por passo |
| Step | executar uma instrução |
| Reset | voltar ao início da execução |
| Levels | abrir a lista de níveis |
| Botão Sound | ligar ou desligar o som |
Algumas coisas que valem saber
Comece pelo menor programa. Os primeiros níveis pedem uma ou duas linhas. Cada nível acrescenta uma única ideia, então construa sobre o que o anterior ensinou.
Rótulos marcam destinos de salto. Escreva um nome seguido de dois-pontos numa linha própria, como loop:, e depois JNZ loop para voltar a ele.
Menos linhas nem sempre é menos ciclos. Um laço economiza linhas, mas custa um salto a cada volta; para uma entrada curta, a versão em linha reta pode ser mais rápida.
Sem conta, sem envio de dados. Tudo roda no seu navegador e as pontuações ficam no seu aparelho.
Créditos e licença
Signalworks foi feito por Charlie Krug e é publicado sob a licença MIT. O jogo é servido como o autor o publicou, compilado do fonte do repositório dele, com algumas mudanças nossas: as fontes web que vinham do Google foram trocadas pelas mesmas duas fontes, JetBrains Mono e Space Grotesk, incluídas com o jogo (SIL Open Font License 1.1), e os links do rodapé e a menção a outros jogos foram removidos, para que nada seja requisitado de outros sites. O fonte desta build, o nosso patch e o script de build ficam hospedados junto do jogo, e os textos das licenças estão linkados nesta página.