¿Cuál es el algoritmo para hacer un juego 2048 en Java?

Vamos a dividirlo en MVC.
1. Modelo: necesita una matriz para almacenar números.
2. Ver: necesita una GUI
3. Controlador: debe procesar las pulsaciones de teclas de flecha

Asumiré que está más preocupado por la implementación de la red troncal, es decir, el modelo.
¿Qué sucede cuando presionas una tecla de flecha? Cualquiera de los dos números que se pueden combinar, según la dirección, por ejemplo, si presiona la tecla izquierda, los números se combinan de izquierda a derecha. (Si hay un 2228, obtendrá un 428_ si no recuerdo mal).

Entonces, desea una búsqueda en cada fila (izquierda / derecha) / columna (arriba / abajo) comenzando desde el primer índice (izquierda / arriba) o el último (derecha / abajo), para ver si tiene números adyacentes idénticos en su matriz en la dirección dada.
Luego los combinas y desplazas la matriz hacia arriba. Puede agregar 0 donde el número está en blanco. Probablemente sea una buena idea hacer esto en los pases, es decir, la primera fila con el segundo para arriba en el primer pase, el segundo y el tercero en el segundo, etc. De esta manera, no tendrá inconsistencias al tratar de combinar números que ya se han fusionado

Creo que eso es todo, pero este fue el proceso de diseño de unos minutos, así que probablemente me estoy perdiendo algo.

Puedes ver esta discusión. ¿Cuál es el algoritmo óptimo para el juego 2048 ?. Aquí puede encontrar el código fuente para el mismo .nneonneo / 2048-ai