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.