He construido un Tetris y esto he aprendido
![zurvin](/_next/image?url=https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fe9b3fcb4-8dac-4401-b879-ea5468672df4%2F15632981-9c2b-4bf0-978e-5dacfa4d7969%2FUntitled.png%3FX-Amz-Algorithm%3DAWS4-HMAC-SHA256%26X-Amz-Content-Sha256%3DUNSIGNED-PAYLOAD%26X-Amz-Credential%3DAKIAT73L2G45HZZMZUHI%252F20240714%252Fus-west-2%252Fs3%252Faws4_request%26X-Amz-Date%3D20240714T160356Z%26X-Amz-Expires%3D3600%26X-Amz-Signature%3D3d7f6637e0192d0ebc8408d9fd058474c6f7eb3b441b79c5f7e233467347d01a%26X-Amz-SignedHeaders%3Dhost%26x-id%3DGetObject&w=3840&q=75)
El Tetris, con sus piezas que caen y la necesidad de una rápida toma de decisiones, me pareció el desafío perfecto para poner a prueba mis habilidades de programación. Además, el Tetris es un juego clásico y muy conocido, lo que lo convierte en un proyecto ideal para compartir con otros entusiastas de la programación.
La version 1 de mi juego no incluye toda las características del juego. Dejo a mi futuro yo un trabajo pendiente para completar los niveles, complejidad y quizás un modo multijugador. Ha sido un viaje fascinante. En este artículo, compartiré algunas de las lecciones que he aprendido durante el proceso y cómo esta experiencia ha mejorado mis habilidades como desarrollador:
1. Comprender la lógica del juego
Antes de comenzar a escribir una sola línea de código, fue fundamental entender cómo funciona el Tetris. Investigué las reglas básicas del juego, cómo se mueven las piezas, cómo se eliminan las líneas y cómo se calcula la puntuación. Esto me permitió crear una base sólida sobre la cual construir mi implementación del Tetris.
Aquí está una versión simplificada de mi pseudocódigo:
![zurvin](/_next/image?url=https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fe9b3fcb4-8dac-4401-b879-ea5468672df4%2F17f7de84-6fc2-4dce-b760-e23712354227%2FUntitled.png%3FX-Amz-Algorithm%3DAWS4-HMAC-SHA256%26X-Amz-Content-Sha256%3DUNSIGNED-PAYLOAD%26X-Amz-Credential%3DAKIAT73L2G45HZZMZUHI%252F20240714%252Fus-west-2%252Fs3%252Faws4_request%26X-Amz-Date%3D20240714T160356Z%26X-Amz-Expires%3D3600%26X-Amz-Signature%3D699f23eae5820dbdcaf12fa6c66a5b40bb6687162a099da9ce8cf3ac5dff0836%26X-Amz-SignedHeaders%3Dhost%26x-id%3DGetObject&w=3840&q=75)
Este pseudocódigo sienta la idea de cómo debería ser la estructura del juego y cómo interactuarían los diferentes elementos. Con esta base, estaba listo para comenzar a implementar el juego.
2. Planificación y diseño
Antes de sumergirme en la codificación, dediqué tiempo a planificar y diseñar la arquitectura del juego. Definí las clases y funciones necesarias, así como las interacciones entre ellas. Crear un diseño sólido me ayudó a tener una visión clara del proyecto y evitar problemas importantes más adelante.
Cosas que consideré: la cantidad de columnas, cantidad de filas, el tamaño de cada celda, las piezas totales del tablero y las piezas ocupadas.
![zurvin](/_next/image?url=https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fe9b3fcb4-8dac-4401-b879-ea5468672df4%2F7b43b8c1-23f6-4da2-b60a-f856a8841cd2%2FUntitled.png%3FX-Amz-Algorithm%3DAWS4-HMAC-SHA256%26X-Amz-Content-Sha256%3DUNSIGNED-PAYLOAD%26X-Amz-Credential%3DAKIAT73L2G45HZZMZUHI%252F20240714%252Fus-west-2%252Fs3%252Faws4_request%26X-Amz-Date%3D20240714T160356Z%26X-Amz-Expires%3D3600%26X-Amz-Signature%3D4c14bdf343bb347df520432e093fb7bf4b363cfc1029ce0439c30f4ec247a644%26X-Amz-SignedHeaders%3Dhost%26x-id%3DGetObject&w=3840&q=75)
3. Comprender el concepto de tetrominos
Los tetrominos son piezas compuestas por cuatro cuadrados unidos entre sí. Cada tetromino puede tener diferentes formas y se puede girar para adaptarse a distintas posiciones dentro del tablero. En el caso del Tetris hay tetrominos diferentes: “I”, “J”, "L", "T", “S”, “Z” y el cuadrado. Estas formas básicas se repiten y caen desde la parte superior de la pantalla y el jugador debe rotar y colocar los tetrominos de manera estratégica para completar líneas horizontales y evitar que el tablero se llene.
![zurvin](/_next/image?url=https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fe9b3fcb4-8dac-4401-b879-ea5468672df4%2F14cea182-2f12-420b-8511-463795386419%2FUntitled.png%3FX-Amz-Algorithm%3DAWS4-HMAC-SHA256%26X-Amz-Content-Sha256%3DUNSIGNED-PAYLOAD%26X-Amz-Credential%3DAKIAT73L2G45HZZMZUHI%252F20240714%252Fus-west-2%252Fs3%252Faws4_request%26X-Amz-Date%3D20240714T160356Z%26X-Amz-Expires%3D3600%26X-Amz-Signature%3Dd8a25bbb4ef6428a41e50febeb5f3770cd6745236df3c00ee9e903daa67a4f64%26X-Amz-SignedHeaders%3Dhost%26x-id%3DGetObject&w=3840&q=75)
4. Utilización de algoritmos y estructuras de datos adecuadas
La elección de los algoritmos y estructuras de datos adecuados tuvo un gran impacto en el rendimiento y la eficiencia de mi Tetris. Utilicé una matriz bidimensional para representar el tablero y algoritmos para detectar colisiones, eliminar líneas completas y calcular la puntuación. Comprender y seleccionar las herramientas adecuadas fue fundamental para lograr un juego fluido y sin errores.
5. Compartir conocimientos
Puedes probar el juego aquí: https://super-dark-tetris.vercel.app/
Si estás interesado en explorar y estudiar el código fuente completo, está disponible en Github. Allí encontrarás todos los componentes, funciones y lógica necesarios para ejecutar el juego y experimentar con él.
En resumen, construir mi propio Tetris ha sido un viaje emocionante y educativo. He aprendido sobre la lógica del juego, planificación, diseño modular, selección de algoritmos y estructuras de datos adecuadas.