detailed.es.md (4111B)
1 Construye un juego de Tetris completamente jugable que funcione en un navegador web. El juego debe implementarse como una aplicacion de una sola pagina sin dependencias externas en tiempo de ejecucion (sin enlaces CDN, sin importaciones de paquetes en tiempo de ejecucion). Todo el codigo debe funcionar al abrir un archivo HTML directamente en un navegador o al servirlo desde un servidor de archivos estaticos simple. 2 3 ## Tablero de Juego 4 5 - El campo de juego es una cuadricula de 10 columnas por 20 filas. 6 - La cuadricula debe ser visualmente distinguible con bordes de celda o un patron de fondo para que el jugador pueda evaluar las posiciones. 7 - Las celdas ocupadas deben colorearse segun el tipo de pieza. 8 9 ## Piezas (Tetrominos) 10 11 Implementa las 7 piezas estandar de Tetris: 12 13 - **I** (4 en fila, cian) 14 - **O** (cuadrado 2x2, amarillo) 15 - **T** (forma de T, purpura) 16 - **S** (sesgo S, verde) 17 - **Z** (sesgo Z, rojo) 18 - **J** (forma de J, azul) 19 - **L** (forma de L, naranja) 20 21 Cada pieza debe aparecer en la parte superior central del tablero. Usa un sistema de bolsa aleatoria o seleccion aleatoria simple para el orden de las piezas. 22 23 ## Controles 24 25 - **Flecha izquierda**: mover pieza a la izquierda 26 - **Flecha derecha**: mover pieza a la derecha 27 - **Flecha abajo**: caida suave (mover pieza hacia abajo mas rapido) 28 - **Flecha arriba**: rotar pieza en sentido horario 29 - **Tecla Z**: rotar pieza en sentido antihorario 30 - **Barra espaciadora**: caida fuerte (soltar pieza instantaneamente a la posicion valida mas baja) 31 32 ## Rotacion 33 34 - Las piezas rotan en sentido horario (flecha arriba) y en sentido antihorario (tecla Z). 35 - La pieza O no rota. 36 - La rotacion debe fallar de manera elegante: si la posicion rotada se superpone con bloques existentes o las paredes, la rotacion no debe ocurrir. Un sistema basico de ajuste de pared (intentar una o dos posiciones de desplazamiento) es aceptable pero no obligatorio. 37 38 ## Eliminacion de Lineas 39 40 - Cuando una fila completa se llena de bloques, esa fila se elimina y todas las filas superiores se desplazan hacia abajo. 41 - Se pueden eliminar multiples filas simultaneamente. 42 43 ## Puntuacion 44 45 Los puntos se otorgan segun el numero de lineas eliminadas a la vez, multiplicados por el nivel actual: 46 47 | Lineas Eliminadas | Puntos Base | 48 |---|---| 49 | 1 (Simple) | 100 | 50 | 2 (Doble) | 300 | 51 | 3 (Triple) | 500 | 52 | 4 (Tetris) | 800 | 53 54 La formula es: `puntuacion += puntos_base * nivel` 55 56 ## Niveles y Velocidad 57 58 - El juego comienza en el nivel 1. 59 - El nivel aumenta en 1 por cada 10 lineas eliminadas. 60 - La velocidad de caida (con que frecuencia la pieza actual baja automaticamente una fila) debe aumentar con cada nivel. Un intervalo inicial razonable es alrededor de 800ms en el nivel 1, disminuyendo a medida que aumenta el nivel. La pieza nunca debe dejar de caer por completo. 61 62 ## Pantalla 63 64 La pantalla del juego debe mostrar: 65 66 - El campo de juego con la pieza actual y todos los bloques colocados. 67 - **Puntuacion**: la puntuacion actual, actualizada en tiempo real. 68 - **Nivel**: el nivel actual. 69 - **Lineas**: el numero total de lineas eliminadas. 70 - **Siguiente pieza**: una vista previa de la siguiente pieza que aparecera. 71 72 ## Fin del Juego 73 74 - El juego termina cuando una nueva pieza no puede colocarse en su posicion de aparicion porque los bloques existentes estan en el camino. 75 - Cuando el juego termina, mostrar un mensaje de "Fin del Juego" junto con la puntuacion final. 76 - Proporcionar una forma de reiniciar el juego (un boton o presionando una tecla). 77 78 ## Calidad Visual 79 80 - El juego debe verse limpio y pulido, no como un prototipo sin terminar. 81 - Usa una paleta de colores razonable para las piezas (los colores listados arriba o similares). 82 - Centra el juego en la pagina con un fondo neutro. 83 - El area de juego y los paneles laterales (puntuacion, siguiente pieza) deben estar claramente organizados. 84 85 ## Restricciones Tecnicas 86 87 - No se requiere paso de compilacion. El juego debe funcionar al abrir un archivo HTML en un navegador moderno. 88 - Sin bibliotecas ni frameworks externos en tiempo de ejecucion. 89 - El codigo debe estar organizado y ser legible.