O objetivo é animar uma estrela explodindo na arte ASCII, começando de uma única estrela *
para uma supernova e finalmente para o espaço vazio.
Regras :
- Você precisa exibir apenas 80 caracteres por linha em 24 linhas (esse é o tamanho padrão do terminal no Linux)
- Somente esses 95 caracteres imprimíveis do ASCII são permitidos
- Passos:
- A estrela inicial deve estar
*
centrada horizontal e verticalmente - A estrela tem que crescer para mostrar que explode
- No final, a tela deve estar vazia (a estrela desapareceu)
- A estrela inicial deve estar
- O comprimento do código ou idiomas é irrelevante
- Os votos decidirão os resultados mais criativos e bonitos. Você já viu uma estrela explodindo? Vamos ver como você imagina isso.
Adicionei uma resposta usando o Python como exemplo, mas você é incentivado a criar algo diferente ou melhor.
Você tem uma semana para participar, o vencedor será escolhido em 01/04/2014.
Amostras de saída (apenas com alguns quadros):
# start
*
# during explosion
****#****
***#@##*#@#****
*@**@@@*##**#*#**#*
**@@*#**#@*#@****#***
****@*@***#****@**@@*
*******@***@@***#****#*
*#***#*##@****##@@@**
**#@###****@*********
*****@**@*@*****@**
************@**
****#****
# star is expanding
*
********* **@******
**** **#**@ #**#*# ****
*** ** **##** *@@*@* ** ***
** * @@ *@*#* ***@* *# * **
*** # * *# *@#** ***@* ** @ * *@*
** * * ** *@ ****@ @**** ** #* * * **
** * @* * ** *@ #### *#** ** ** * @* * **
*# * # ** * #* * **** **** @ ** * ** * * #*
** * *# * @ * # @ @*@ *#* * @ # # * @* * **
*# * * * * # * @* * **# *#* * ** * * * * * # **
** # * * @ * * # * # ** @* * * * * * # @ @ * **
*# * * * * * * * * # * * * * * * @ @ * * * * * **
*# * @ * @ * @ * * * ** *@ * * # * * * * * @ @*
*# # @ * * # * *@ * *** @#@ @ ** * @ @ * * # **
*# * ** * * * @ @ **@ *** * @ * * * @* * #*
** * * ** * #@ * #*** **## * #* * #@ * * @*
*# * *@ * @@ *# **** @*** ** ** * #* * #*
*# * * *@ ** @**@* *@#** ** ** * * @*
*#* @ * @@ **##* ****@ ** # * @**
** @ #* @*@#* @*@*# @# * **
*#* @* @#*@*# **#*@# ** ***
**** *##**# #***@* @***
****@**@* *****@***
# star is disappearing
* - - -- -- ------- ------- -- -- - - *
** - - - -- -- ------ ------ -- -- - - - **
* -- - -- -- -- -- ------ ------ -- -- -- -- - -- *
** - - - -- -- -- -- ------ ------ -- -- -- -- - - - **
* - - -- - -- - - -- ----- ----- -- - - -- - -- - - *
** - - - -- - -- - - -- ----- ----- -- - - -- - -- - - - **
* - - - - - - - - -- -- ----- ----- -- -- - - - - - - - - *
* - - - - - - - -- - -- -- ---- ---- -- -- - -- - - - - - - - *
* -- - - - - - - - -- - -- - ---- ---- - -- - -- - - - - - - - -- *
* - - - - - - - -- - - - - - --- --- - - - - - -- - - - - - - - *
* - - - - - - - - - - - - -- - --- --- - -- - - - - - - - - - - - - *
* - - - - - - - - - - - - - - - -- -- - - - - - - - - - - - - - - - *
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *
* - - - - - - - - - - - - - - - -- -- - - - - - - - - - - - - - - - *
* - - - - - - - - - - - - -- - --- --- - -- - - - - - - - - - - - - *
* - - - - - - - -- - - - - - --- --- - - - - - -- - - - - - - - *
* -- - - - - - - - -- - -- - ---- ---- - -- - -- - - - - - - - -- *
* - - - - - - - -- - -- -- ---- ---- -- -- - -- - - - - - - - *
* - - - - - - - - -- -- ----- ----- -- -- - - - - - - - - *
** - - - -- - -- - - -- ----- ----- -- - - -- - -- - - - **
* - - -- - -- - - -- ----- ----- -- - - -- - -- - - *
** - - - -- -- -- -- ------ ------ -- -- -- -- - - - **
* -- - -- -- -- -- ------ ------ -- -- -- -- - -- *
** - - - -- -- ------ ------ -- -- - - - **
# the star is gone
(there is nothing)
Exemplo animado de saída:
Se você quiser alguma inspiração, pode ver uma explosão do Captain Blood , um jogo de 1988.
Respostas:
Maldições C +
Não fiz um grande esforço para arrumar o código fonte. Basicamente, ele calcula uma onda de choque em expansão, com um fundo sólido adicionado aos primeiros quadros para dar uma espécie de efeito de flash. [[EDIT: A explosão parecia um pouco estranha aparecendo em um único asterisco, então adicionei alguns quadros de expansão no início da animação.]]
Partículas aleatórias são sobrepostas, com posições determinadas de acordo com um cálculo de perspectiva básico para dar uma sensação 3D. (Bem, essa foi a ideia, pelo menos.)
fonte
Javascript
Achei que valia a pena tentar em JS. Sugira salvar e executar; muito, muito lento se você colar no console.
Edições no JSBin: http://jsbin.com/worofeqi/5/watch?js,output
Estranhamente, executa muito mais suavemente quando feito no sistema de arquivos local do que no JSBin. Honestamente, não sei por que; pode olhar para isso esta noite.
fonte
Pitão
Exemplo de saída (usando menos etapas e sem limpar a tela).
Trechos da saída também são exibidos na pergunta.
fonte