Elevator Saga
Os jogos salvos ficam apenas neste navegador.
Sobre o jogo
Elevator Saga é um jogo que se joga escrevendo código. A metade de cima da tela é um prédio visto de lado, com andares, botões de chamada e um ou mais elevadores; bonequinhos aparecem nos andares, apertam para subir ou descer e esperam. A metade de baixo é um editor de código. Nada se mexe sozinho: os elevadores vão para onde o seu JavaScript mandar.
O seu programa é um objeto com duas funções. init roda uma vez no começo do
desafio e recebe os elevadores e os andares, para você ligar funções a
eventos como um elevador ficar parado, um passageiro apertar um botão dentro
dele ou alguém chamá-lo de um andar. update roda a cada instante, se você
quiser um controle mais fino. Cada elevador tem uma fila de andares a visitar,
um fator de carga que diz quão cheio ele está e algumas outras propriedades
descritas na documentação embutida.
São dezenove desafios. O primeiro pede para levar quinze pessoas entre três andares em um minuto com um único elevador, e o código inicial quase consegue. Os seguintes trazem mais andares, elevadores de tamanhos diferentes e novas condições: manter a espera de todo mundo abaixo de um limite, ou levar uma multidão usando só um número fixo de viagens. O último é uma demonstração sem fim que apenas roda o seu código. Magnus Wolffelt lançou o jogo em 2015, e ele continua um exercício querido entre programadores.
Jogando aqui
Clique em Play. A página do jogo é larga, então o player a mostra reduzida; o botão Full screen, no canto, mostra no tamanho real, o que deixa o código bem mais fácil de ler. Edite o código e aperte Apply para começar o desafio atual com ele. Quando um desafio é vencido, um link leva ao próximo. O código é salvo neste navegador um instante depois que você para de digitar, então continua lá na próxima visita; Reset volta ao código inicial simples, e Undo reset traz o seu de volta.
Os links Help e Documentation abrem o manual do próprio jogo, com a lista completa de funções e eventos, dentro do player; "Back to the game" volta. O jogo está em inglês. Esta é a versão publicada pelo autor, sem o script de estatísticas e sem o link para os testes, e com a fonte Oswald servida por este site. Escrever código pede um teclado físico, então o jogo é para computador.
Controles
| Comando | Ação |
|---|---|
| Editor de código | escrever o JavaScript que controla os elevadores |
| Apply | rodar o desafio com o seu código |
| Start / Pause | pausar ou continuar a simulação |
| - e + | deixar o tempo mais lento ou mais rápido |
| Save, Reset, Undo reset | guardar, descartar ou recuperar o código |
O editor indenta com Tab e fecha parênteses e chaves sozinho.
Algumas dicas
Leia os erros. Se o código não roda, uma mensagem abaixo do prédio diz
por quê. O console de desenvolvedor do navegador também ajuda a depurar com
console.log.
Atenda os botões. O código inicial só vai e volta entre os andares 0 e 1.
Ouvir floor_button_pressed dentro do elevador e os botões de subir e descer
de cada andar é a primeira grande melhoria.
Não desperdice viagens. Veja se um andar já está na destinationQueue do
elevador antes de acrescentá-lo de novo, e mande o elevador mais vazio
atender as chamadas novas.
Acelere o tempo. Desafios longos ficam mais fáceis de testar em velocidade maior; o resultado é o mesmo.
Créditos e licença
Elevator Saga foi criado por Magnus Wolffelt, com contribuições de outros programadores, e é distribuído sob a licença MIT, publicada no repositório dele no GitHub. Ele usa jQuery, Lodash, Riot, CodeMirror, highlight.js, Font Awesome e a fonte Oswald, cada um sob a sua licença livre. Os textos das licenças estão linkados nesta página.