Algoritmo para fazer desenhos 8 bits jogando Tetris

sprites
Eu sempre gostei muito das minhas aulas de algoritmos e compiladores na faculdade. Gostava mais ainda das maratonas de programação, nas quais a gente passava madrugadas tentando criar soluções para problemas elaborados pelos mestres, que tinham como passa-tempo encher nossa cabeça de lógica e cabelos brancos. Mas era divertido. Seria mais, se algum dos exercícios envolvesse o uso de elementos gráficos, como os que existem em jogos de videogame.

E foi exatamente isso que fez Michael Birken, no projeto que chamou de Tetris Printer Algorithm. O programador concebeu um método para fazer com que um computador desenhasse arbitrariamente imagens de 8 bits, alocando estrategicamente os blocos de várias cores para delinear exatamente a imagem desejada.

Pelo que eu vi do código fonte e dos detalhes do algorítimo, trata-se de um software complexo, mas compreensível para quem tem alguns anos de estrada na área de desenvolvimento de software, principalmente para quem trabalha com Java.

Explicando de forma mais técnica: O procedimento converte os pixels de uma imagem em “pedaços” dos blocos de Tetris (da versão do Nintendinho), linha por linha, de baixo pra cima. Para gerar um quadrado individual, o algoritmo monta uma estrutura que consiste de uma região retangular plenamente acoplável, fazendo uso de padrões, “traduzindo” os chamados Tetriminos em blocos de caracteres. Com uma função que computa o coeficiente binomial, cada sprite desejado (que deve ter, no máximo, 17×32 pixels) passa então a ser uma sequência de “letras” a serem exibidas. Cada novo bloco é lido em tempo real, e o sistema se encarrega de deixar apenas o pixel necessário ser encaixado, eliminando linhas e linhas para que estes caracteres sejam mantidos.

master_mario

Pode parecer complicado de entender assim, mas o vídeo abaixo fala por si só:

[youtube http://www.youtube.com/watch?v=PJkHwulsac4]

“Are you a Tetris Master? The printer decides.”

Ou seja: Ao girar, posicionando as peças em uma seqüência predeterminada, o algoritmo explora a mecânica de Tetris para gerar imagens bitmap, como os personagens de games da Nintendo.

Algumas pessoas podem achar bobo ou desnecessário perder tempo em um projeto assim, mas é em maratonas como essa que surgem as melhores idéias, acredite.

Fonte: BB.

Relacionados: , , , , , ,
  • Davi Braga da Rocha

    :O

    FODA! Muito foda!

  • Marco Diniz Garcia Gomes

    Sensacional!

  • Ricardo

    Eu ficaria horas vendo isso. Poderiam fazer um protetor de tela com esse programa, ia ser muito massa.

    Nesse ponto distingue-se os humanos do computador. O programa simplesmente executa sua programação, sem se cansar. Um humano hackearia o próprio jogo para desenhar o sprite final sem ter que ficar montando as peças do tetris.

    • ClaudioLisboa

      A diferença entre o ser humano e o computador é um pouco diferente do que você disse.

      O computador joga horas e horas, infinita e ininterruptamente sem se cansar.

      O ser humano gasta esse tempo criando um computador que possa jogar para ele.

      • Ricardo

        Hehe, verdade.

  • Julio Verner

    Cacete! Fritei só lendo… Definitivamente nasci pra usufruir do que esses “doidos” vivem… hehe