No espírito de reimplementar os videogames clássicos , gostaria de convidar a comunidade para criar sua melhor implementação do Tetris .
Para referência, uma captura de tela da versão oficial do NES do Tetris.
Recursos Necessários
- Um sistema de pontuação razoável deve estar em vigor, o que recompensa as limpezas de várias linhas mais do que as de uma linha. A pontuação atual deve estar visível o tempo todo.
- A próxima peça que aparecerá deve ser indicada de alguma maneira.
- A distribuição dos sete tetrominos deve ser bastante uniforme (ou seja, escolhida pseudo-aleatoriamente).
- O usuário deve ter a capacidade de girar a peça atual em ambas as direções, bem como acelerar sua descida.
- Quando o jogo terminar, deve ser claramente indicado que o jogo acabou.
- O código fonte deve ser estruturado e facilmente compreensível.
Recursos opcionais
- Avanço da velocidade de queda após um certo número de limpezas (ou seja, aumento do nível de dificuldade) e avanço da pontuação por linha limpa, proporcional à velocidade.
- Gravidade. Você pode optar por implementar a gravidade 'clássica', na qual os blocos podem permanecer flutuando sobre as lacunas, ou você pode optar por implementar a gravidade de 'preenchimento', na qual os blocos que foram separados do seu tetromino original por meio da limpeza de linha podem cair em aberto lacunas.
- Pontuações mais altas com entrada de nome.
- A animação após a linha é limpa e / ou após a obtenção de uma nova pontuação alta.
Limitações
- Quaisquer bibliotecas usadas ( jQuery , PyGame etc.) devem estar disponíveis gratuitamente.
- O tamanho do código-fonte não deve exceder 4096 bytes, excluindo espaços em branco e comentários. Quaisquer recursos externos (arquivos de dados, imagens etc.) serão adicionados ao comprimento do código, excluindo os arquivos gerados, como para pontuações mais altas.
Percebo que essa é uma restrição bastante arbitrária; meu objetivo principal é desencorajar a colagem de cópias de implementações existentes e incentivar a brevidade e a autocontenção.
Critérios Vencedores
Esse desafio será julgado como um concurso de popularidade , o que significa que o envio com mais votos positivos será selecionado como vencedor. Ao votar, incentivo os usuários a votarem todos e quaisquer envios que considerem adequados aos requisitos mencionados acima.
O vencedor será escolhido o mais tardar 2 semanas após a primeira solução válida. Além disso, concederei uma recompensa ao vencedor, aproximadamente proporcional ao número de votos positivos que essa pergunta recebe ( 10 * #votes
arredondada para cima para os 50 mais próximos). Se houver empate após o término do período de duas semanas, o período da competição será prorrogado por uma semana. Se ainda houver empate, reservo-me o direito de votar.
Por favor, peça esclarecimentos. Que vença a melhor implementação!
Respostas:
Tente: http://tetris.muehe.org
Atualização Há uma pontuação mundial alta. Desfrute de derrotá-lo ou - alternativamente - hackear :-)
A versão CoffeeScript e HTML deve atender aos requisitos da melhor maneira possível (e eu nunca joguei realmente o Tetris).
Github https://github.com/henrik-muehe/tetris
Recursos
fonte
Pascal
Desenvolvido no FreePascal 2.6.2, também deve ser compilado com o Turbo Pascal 6.0. Somente a unidade Crt é usada, sem recursos externos.
Captura de tela
(No Linux, na janela XTerm.)
Ao controle
Pontuação
O nível começa em 1 e aumenta após cada 25 linhas concluídas. (Várias linhas concluídas ao mesmo tempo contam como 1.)
Medição
fonte
Java (Swing)
Esta é uma implementação da primeira edição histórica do Game Boy da Nintendo (c) de 1989.
Como jogar:
Z= girar para a esquerda
X= girar para a direita
Left= mover para a esquerda
Right= mover para a direita
Down= mover para baixo (lentamente)
Up= girar para a esquerda (apenas para facilitar o uso)
R= reiniciar o jogo
Evitei usar mais de uma classe (porque o aspecto do golfe vem à minha mente). Mas agora não é mais possível jogar golfe, de qualquer forma ... No entanto, codifiquei e codifiquei em Base64 um arquivo de fonte e um arquivo de imagem, para poder usá-lo no primeiro e único arquivo de classe.
Para executá-lo, copie o código Java no seu IDE e inicie. Você não precisa de bibliotecas ou recursos adicionais.
TODOs:
Comentários são bem-vindos :)
fonte
import java.awt.event.KeyAdapter;
e mudenew KeyAdapter
paranew java.awt.event.KeyAdapter
.Lua - 2876
Tetris em um terminal, funciona na maioria dos sistemas unix, lua pura, sem bibliotecas adicionais necessárias.
Os controles são: wasd ou hjkl, w / k para soltar, s / j para girar, ad / hl para mover
A velocidade aumenta com a pontuação, sempre que várias linhas são removidas, você obtém o quadrado da quantidade de linhas destruídas
Esta não é a solução mais possivelmente golfada, mas decidi jogar um pouco de qualquer maneira. As novas linhas são apenas para caber texto em 80 colunas, não as incluí na contagem de caracteres.
fonte
cat
.cat
, eu estive usando butterfilesC-x
M-c
M-butterfly
...Mathematica
Este código foi escrito no XHTML Wen no Mathematica e pode ser reproduzido em um navegador da Web aqui: Shape Descender (clique nos gráficos para iniciar as teclas de setas). Abaixo estão a captura de tela e o código completo - o que é bastante breve para um aplicativo Web completo deste jogo.
Código
fonte
C
Escrevi isso há muito tempo atrás, sentado entediado na sala de aula no ensino médio. Supostamente, o programador original escreveu a primeira versão do Tetris usando colchetes como blocos, e parecia simples o suficiente para tentar recriar, não? Como eu não conhecia nada de GUI, criei um bom programa de console à moda antiga. Isso foi antes de eu aprender C ++ e aquelas práticas de programação apropriadas, então o código pode ser um pouco confuso. Eu praticamente voei.
Ele atende a todos os requisitos do desafio, exceto que a peça gira apenas em uma direção (no sentido horário). Use WASD para tocar, W gira a peça. O código fonte completo e o exe podem ser encontrados aqui: http://sourceforge.net/projects/tklone/files/tklone/tklone-v1.0/
tetris.c
setPiece.c
fonte
Eu construí uma versão javascript https://marchingband.github.io/tetris/
fonte
dom[p.x][p.y+1].style.background
retornamblue none repeat scroll 0% 0%
, portanto nunca serão iguaisblue
. Sua solução é válida, mas sugiro alterar tudo.style.background
→.style.backgroundColor
para que funcione bem no Firefox e no Chrome.