En el espíritu de volver a implementar videojuegos clásicos , me gustaría invitar a la comunidad a crear su mejor implementación de Tetris .
Como referencia, una captura de pantalla de la versión oficial de NES de Tetris.
Características requeridas
- Debe existir un sistema de puntaje razonable, que recompense los despejes de varias líneas más que los de una sola línea. La puntuación actual debe estar visible en todo momento.
- La siguiente pieza que aparecerá debe indicarse de alguna manera.
- La distribución de los siete tetrominoes debe ser bastante uniforme (es decir, elegida de forma seudoaleatoria).
- El usuario debe tener la capacidad de rotar la pieza actual en ambas direcciones, así como acelerar su descenso.
- Cuando el juego ha finalizado, debe indicarse claramente que el juego ha terminado.
- El código fuente debe estar estructurado y ser fácilmente comprensible.
Características opcionales
- Avanzar la velocidad de caída después de un cierto número de despejes (es decir, aumentar el nivel de dificultad) y avanzar en la puntuación por línea despejada, proporcional a la velocidad.
- Gravedad. Puede optar por implementar la gravedad 'clásica', en la que los bloques pueden permanecer flotando sobre los huecos, o puede optar por implementar la gravedad de 'relleno de inundación', en la que los bloques que se han separado de su tetromino original a través de despejes de línea pueden quedar abiertos brechas.
- Puntuaciones altas con entrada de nombre.
- Animación después de que se borra la línea y / o después de obtener un nuevo puntaje alto.
Limitaciones
- Cualquier biblioteca utilizada ( jQuery , PyGame , etc.) debe estar disponible de forma gratuita.
- El tamaño del código fuente no debe exceder los 4096 bytes, excluyendo espacios en blanco y comentarios. Cualquier recurso externo (archivos de datos, imágenes, etc.) se agregará a la longitud del código, excluyendo cualquier archivo que se genere, como por ejemplo, para puntajes altos.
Me doy cuenta de que esta es una restricción bastante arbitraria; mi objetivo principal es desalentar el copiado de las implementaciones existentes y alentar la brevedad y la autocontención.
Criterios ganadores
Este desafío será juzgado como un concurso de popularidad , lo que significa que la presentación con más votos positivos será seleccionada como la ganadora. Al votar de manera positiva, animo a los usuarios a que voten a favor de todas y cada una de las presentaciones que consideren que cumplen adecuadamente con los requisitos establecidos anteriormente.
El ganador será elegido a más tardar 2 semanas después de la primera solución válida. Además, otorgaré una recompensa al ganador, aproximadamente proporcional al número de votos positivos que recibe esta pregunta ( 10 * #votes
redondeado hacia arriba a los 50 más cercanos). En caso de que haya un empate después de que haya expirado el período de 2 semanas, el período de competencia se extenderá por una semana. Si todavía hubiera un empate, me reservo el derecho de colocar el voto final.
Por favor, solicite cualquier aclaración. ¡Que gane la mejor implementación!
Respuestas:
Prueba: http://tetris.muehe.org
Actualización Hay un puntaje global alto. Disfruta golpeándolo o, alternativamente, hackeándolo :-)
CoffeeScript y la versión HTML deben cumplir los requisitos según mi leal saber y entender (y nunca he jugado realmente a Tetris).
Github https://github.com/henrik-muehe/tetris
Caracteristicas
fuente
Pascal
Desarrollado en FreePascal 2.6.2, también debe compilarse con Turbo Pascal 6.0. Solo se utiliza la unidad Crt , sin recursos externos.
Captura de pantalla
(En Linux, en la ventana XTerm).
Controlar
Tanteo
El nivel comienza en 1 y aumenta después de completar cada 25 líneas. (Múltiples líneas completadas a la vez cuentan como 1.)
Medición
fuente
Java (Swing)
Esta es una implementación de la primera edición histórica de Game Boy de Nintendo (c) de 1989.
Cómo jugar:
Z= girar hacia la izquierda
X= girar hacia la derecha
Left= moverse hacia la izquierda
Right= moverse hacia la derecha
Down= moverse hacia abajo (lentamente)
Up= girar hacia la izquierda (solo para un uso más fácil)
R= reiniciar el juego
Evité usar más de una clase (porque me viene a la mente el aspecto del golf). Pero ahora ya no es golfable en cualquier caso ... Sin embargo, comprimí y codifiqué Base64 un archivo de fuente y un archivo de imagen, por lo que puedo usarlo en el único archivo de clase.
Para ejecutarlo, copie el código Java en su IDE y comience. No necesita bibliotecas o recursos adicionales.
TODOS
Los comentarios son bienvenidos :)
fuente
import java.awt.event.KeyAdapter;
y cambiarnew KeyAdapter
anew java.awt.event.KeyAdapter
.Lua - 2876
Tetris en una terminal, funciona en la mayoría de los sistemas unix, lua puro, no se necesitan libs adicionales.
Los controles son: wasd o hjkl, w / k para soltar, s / j para rotar, ad / hl para mover
La velocidad aumenta con la puntuación, cada vez que se eliminan varias líneas, obtienes el cuadrado de la cantidad de líneas destruidas
Esta no es la solución más posible para el golf, pero de todos modos decidí jugarlo un poco. Las nuevas líneas son solo para ajustar texto en 80 columnas, no las incluí en el recuento de caracteres.
fuente
cat
.cat
, he estado usandoC-x
M-c
M-butterfly
...Mathematica
Este código fue escrito en Mathematica por Xiangdong Wen y en realidad puede reproducirse en un navegador web aquí: Shape Descender (haga clic en los gráficos para iniciar las teclas de flechas). A continuación se muestran la captura de pantalla y el código completo, lo cual es bastante bueno para una aplicación web completa de este juego.
Código
fuente
do
Escribí esto hace años mientras estaba aburrido en clase en la escuela secundaria. Supuestamente, el programador original escribió la primera versión de Tetris usando corchetes como bloques, y parecía lo suficientemente simple como para intentar recrearlo, ¿no? No sabía nada de GUI, así que hice un buen y antiguo programa de consola. Esto fue antes de que aprendiera C ++ y esas prácticas de programación adecuadas molestas, por lo que el código puede ser un poco desordenado. Prácticamente lo acabo de alas.
Cumple con todos los requisitos del desafío, excepto que la pieza solo gira en una dirección (en sentido horario). Usa WASD para jugar, W gira la pieza. El código fuente completo y el exe se pueden encontrar aquí: http://sourceforge.net/projects/tklone/files/tklone/tklone-v1.0/
tetris.c
setPiece.c
fuente
Construí una versión de JavaScript https://marchingband.github.io/tetris/
fuente
dom[p.x][p.y+1].style.background
regresablue none repeat scroll 0% 0%
, por lo que nunca será igualblue
. Su solución es válida, pero sugeriría cambiar todo.style.background
→.style.backgroundColor
para que funcione bien tanto en Firefox como en Chrome.