Está en la página 1de 5

Universidad Autónoma del Estado de Morelos

Instituto de Investigación en Ciencias Básicas y Aplicadas

Introducción a la Computación

Proyecto

2048 en Python

Profesor:

Dr. Esaú Escobar

Integrantes:

Barreto Basave Francisco

1
Introducción

2048 es un juego en línea y para móviles creado en marzo de 2014 por el desarrollador web
italiano de 19 años Gabriele Cirulli, cuyo objetivo es deslizar baldosas en una cuadrícula para
combinarlas y crear una baldosa con el número 2048. Se lo considera como un rompecabezas
de deslizamiento

2048 es jugado en una cuadrícula gris simple de 4x4 con


baldosas de distintos colores y con un número en su centro. Se
utilizan las teclas de dirección izquierda, derecha, arriba y abajo
para mover las baldosas, las cuales se deslizan en su totalidad
por el tablero. Si dos baldosas con el mismo número
"colisionan" durante un movimiento, se combinarán en una
nueva baldosa, cuyo número será el equivalente a la suma de los
números de las dos baldosas originales (es decir, si dos baldosas con el número 4 colisionan,
se combinarán en una baldosa con el número 8). Sin embargo, la baldosa resultante no podrá
combinarse con otra baldosa nuevamente en una misma jugada. Las baldosas con numeración
alta emiten un brillo suave. Después de realizar una jugada, aparecerá una baldosa nueva en
un lugar vacío del tablero, la cual tendrá o bien el número 2 o el número 4.

El juego registra el puntaje del usuario con un marcador en el margen superior derecho. El
puntaje comienza en cero y, cuando dos baldosas se combinan, este se incrementa por el valor
de la baldosa resultante. Al lado del puntaje actual, se muestra el mejor puntaje del usuario,
al estilo de los juegos de Arcade

2048 acaba en victoria cuando se logra obtener la baldosa con el número 2048 (de allí el
nombre del juego). Tras haber logrado esto, es posible seguir jugando en un modo sandbox,
donde es posible obtener fichas con mayores denominaciones (por ejemplo, 4096, 8192, etc.)
no obstante, si un jugador queda sin algún movimiento legal (es decir, ya no quedan espacios
vacíos y no existen baldosas adyacentes con el mismo valor), el juego termina.

2
Objetivo

El reto de este programa consiste en mostrar el estado final del juego dada la posición inicial
y la serie de movimientos realizados, suponiendo que la nueva casilla que se agregará después
de cada movimiento será la primera casilla disponible (si es que la hubiera) recorriendo la
malla de izquierda a derecha y de arriba hacia abajo. Si una casilla suma más de 2048 esta
conserva su mismo valor.

Entrada

Las primeras 4 líneas contienen enteros separados por espacios y que representan el estado
inicial del juego. Cada número es una potencia de 2 menor o igual a 2048 o un 0 si es que no
hay casilla en ese lugar. Posteriormente se da un entero n con 1>M>10 ^5 que indica la
cantidad de movimientos que se seguirán. Las próximas n líneas contienen alguna de las
siguientes letras: “w”, arriba; “a”, izquierda; “s”, abajo y “d”, derecha indicando el
movimiento a realizar.

Salida

Imprimir 4 líneas cada una con 4 enteros separados por un espacio por un espacio que
representan el estado final del 2048 después de haber realizado los movimientos partiendo
de la posición inicial.

Dificultades

La parte mas complicada durante el desarrollo del programa fue trabajar con tantas líneas de
código y modular como es que se harían cada uno de los pasos. Al final se opto por desarrollar
funciones que se encargarán de distintas cosas cada una para al momento de que el usuario
pidiese un movimiento solo hiciera falta llamar a las funciones que se encargan de cada
movimiento.

Para solucionar esto se optó por agregar comentarios dentro del código para poder recordar
que parte del código es la que se encarga de cada cosa.

La segunda parte difícil fue hacer aparecer un 0 en una casilla disponible y determinar cuándo
es que el juego se ha perdido.

3
Para la aparición del 2 a pesar de que el programa original nos plantea la aparición de 2 en el
primer 0 que encontremos vacío, decidimos ir más allá y hacer que apareciera de forma
aleatoria para simular un poco más la experiencia de juego.

Simbología usada dentro de este programa

Se usará M para referirse a la matriz que representa nuestro juego incluyendo 4 listas con 4
elementos cada una.

Para hablar de las posiciones Se usarán las letras j e i donde i representa las filas y j las
columnas, dejándonos con matriz:

M 4x4

M[i][j] M[i][j+1] M[i][j+2] M[i][j+3]


M[i+1][j] M[i+1][j+1] M[i+1][j+2] M[i+1][j+3]
M[i+2][j] M[i+2][j+1] M[i+2][j+2] M[i+2][j+3]
M[i+3][j] M[i+3][j+1] M[i+3][j+2] M[i+3][j+3]

O para facilidad al lector

M[0][0] M[0][1] M[0][2] M[0][3]


M[1][0] M[1][1] M[1][2] M[1][3]
M[2][0] M[2][1] M[2][2] M[2][3]
M[3][0] M[3][1] M[3][2] M[3][3]

4
Diagrama de flujo

Diagrama de las 8 funciones

Pseudocódigo

Pseudocódigo de las 8 funciones

Programa (Ya casi esta)

Ahh y sus nombres chavos por favor

También podría gustarte