El plan era de los que no se le cuentan a nadie: una tarde muerta, un 2048 en un solo fichero, sin build y sin dependencias. Un tablero de 4×4, cuatro teclas y una regla que todo el mundo cree conocer.
En un rato ya se movía. Las fichas se deslizaban, se fusionaban, la puntuación subía, aparecía una ficha nueva en cada jugada. Y aun así la partida olía raro: llegaba al 512 sin esforzarme, el tablero se vaciaba solo y las fichas grandes brotaban antes de tiempo. Nada fallaba. Simplemente el juego no era el juego.
La fila que lo delataba
El caso mínimo cabe en cuatro números. Fila 2 2 4 0, empujo a la izquierda. Lo correcto es 4 4 0 0: los dos doses se juntan en un cuatro, y ese cuatro recién nacido ya ha gastado su fusión en esta jugada. Mi código devolvía 8 0 0 0.
Porque yo había hecho lo intuitivo: compactar la fila a la izquierda y recorrerla fusionando pares adyacentes iguales… sobre el resultado que iba escribiendo. Una ficha fusionada volvía a entrar en el bucle y se fusionaba otra vez. Con 4 4 4 4 era descarado: salía un 16 donde tenían que salir dos ochos.
Y debajo había otro más tonto. 4 4 4 a la izquierda da 8 4; a la derecha da 4 8. Yo fusionaba siempre desde el mismo extremo, así que tres de las cuatro direcciones estaban mal, y como el tablero es casi simétrico uno no lo nota jugando.
Dónde ayudó de verdad la IA
No en escribir el deslizamiento, que lo saca cualquiera. Ayudó en convertir la discusión en algo comprobable:
- Le dicté las filas que me importaban y le pedí la salida esperada de cada una antes de tocar el código. Donde no coincidíamos, uno de los dos tenía mal la regla, y tocaba mirarlo.
- Rehacer el merge con una marca de «esta ficha ya se ha fusionado este turno», y resolver las cuatro direcciones con una sola función que invierte la fila y la vuelve a invertir.
- Un detalle honesto: mi primera prueba fue una invariante bonita —la suma de las fichas no cambia al mover—. Pasaba. Y pasaba también con el bug, porque 4+4 y 8 suman lo mismo. La que lo cazó fue contar fusiones: en una fila de cuatro no puede haber más de dos.
Eso son veinte o treinta idas y venidas por una fila de cuatro números. Con el modelo corriendo en la propia pestaña, ninguna de esas preguntas cuesta nada: ni cuota, ni cuenta, ni ese cálculo mental de «¿esta duda merece gastar un prompt?». Pregunto la tontería las veces que haga falta, y sigo preguntando en un tren sin cobertura.
Aquí no hay secreto que proteger: es un juego. Pero el hábito sí importa. El mismo IDE donde pego una fila de cuatro números es donde el lunes pego el módulo que toca datos de clientes, y me gusta que el sitio donde escribo código sea siempre el sitio del que el código no sale.
Ábrete tu 2048 de una tarde en Elffuss Code: el editor y el modelo corren dentro de tu navegador, así que ni tu código ni lo que le preguntas suben a ninguna parte.
Abrir Code →