¿Pumpktris - la calabaza de Tetris (5 / 10 paso)

Paso 5: Programación del juego

Descargar el Pumpktris.ino.zip adjunto, descomprimirlo y abrir el archivo en el entorno de desarrollo Arduino. Compilar y subir a tu Arduino. Ahora podrá jugar en el mini matriz de LED que usted creó en el paso anterior. He tratado de comentar el código tanto como sea posible, pero aquí está una descripción general de los principales procesos:

Describir las formas

Hay siete tetrominos, cada uno con 4 pixeles y cada una con cuatro posibles rotaciones. Almacenamos todo esto en una matriz multi-dimensional: la primera dimensión que consiste en las siete formas, la segunda dimensión que contiene las cuatro rotaciones de cada forma, las tercera que contiene cuatro píxeles las descripciones que consiste de un X e Y coordinan.

Por ejemplo, describe la forma de "T":

/* T */ {
/ * ángulo 0 * / {{0,1}, {1,1}, {2,1}, {1,2}},
/ * ángulo de 90 * / {{1,0}, {1,1}, {2,1}, {1,2}},
/ * ángulo 180 * / {{1,0}, {0,1}, {1,1}, {2,1}},
/ * ángulo 270 * / {{1,0}, {0,1}, {1,1}, {1,2}}
}

La pieza activa de seguimiento

Para hacer un seguimiento de la obra actualmente en juego, el programa mantiene una variable de activePiece . Este es el índice de la forma activa en el nivel más alto de la matriz. También mantiene una variable de rotación que contiene el índice de la rotación actual. Un xOffset variable pistas cuánto izquierda o derecha (0-7) es de cada pieza y yOffset rastrea hasta qué punto (0-15) la Junta ha caído. Para dibujar la pieza activa el programa agrega que x e Y offset valores para las coordenadas X e Y de cada píxel de la actual rotación de la pieza seleccionada.

Seguimiento de las piezas fijas

El programa utiliza una matriz de 16 bytes para realizar un seguimiento de las piezas fijas, con cada byte que representa una fila. Por ejemplo, la matriz siguiente representaría una forma de L en el centro de las dos filas inferiores (según lo indicado por el 1s en los últimos dos bytes):

sampleGrid Byte [16] =
{
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00100000,
B00111000
};

Detección de colisiones

Cuando se intenta mover la pieza activa, el programa comprueba primero la nueva posición contra el conjunto de piezas fijas. Si hay no hay colisiones, se permite el movimiento y la matriz se vuelve a dibujar. Si se detecta una colisión mientras intentaba mover izquierda, derecha, o girar, la acción está prohibida. Si se detecta una colisión al intentar soltar una pieza, la pieza se convierte en fija en su posición y se añade a la matriz de píxeles fijadas.

Caída de piezas automáticamente

El ritmo del juego es controlado por las variables gravityTrigger y stepCounter . Cada lazo del programa aumenta a stepCounter, y cada vez que stepCounter llega a la cuenta en gravityTrigger, cae el nivel de una pieza activa.

Mientras el juego progresa, gravityTrigger se disminuye para que la pieza activa cae más con frecuencia hasta que finalmente está disminuyendo en cada loop del programa.

Cada vez que una pieza activa se fija a la red el programa comprueba bytes/filas completas (B11111111). Si encuentra alguno, les parpadea el encendido y apagado tres veces, luego elimina y las gotas de las filas para llenar el vacío.

Solución de problemas
Si las piezas no caen de arriba hacia abajo, pero en lugar de otro ir de un lado a otro, cambiar el valor en las líneas "matrixTop.setRotation(1);" o "matrixBottom.setRotation(1);" en el circuito "setup()".

Si las piezas se inicia en la matriz mal, cambiar la ubicación física de cada matriz o invertir la dirección declarada en el "matrixTop.begin(0x70);" y "matrixBottom.begin(0x71);" líneas del lazo "setup()".

Si no enciende algunas filas o columnas, menear la matriz LED mini en los jefes femeninos. No puede hacer buen contacto.

Artículos Relacionados

GIGANTE Pumpktris

GIGANTE Pumpktris

el año pasado para Halloween, HaHaBird - también conocido como Nathan Pryor, iluminó la comunidad Instructables con su Pumpktris. Este fue uno de los mejores Instructables nunca publicada. Ahora que aquí en Instructables somos vecinos con la maravill
Tetris de mesa

Tetris de mesa

Digamos que usted tiene cientos de cubos de madera y un sueño... un sueño muy particular.  En concreto, el sueño de tener una tabla final con tema de Tetris para su salón o patio.O no han tenido ese sueño, pero de todos modos suena un poco aseado.Ent
Calabaza amarga picante

Calabaza amarga picante

Calabaza amarga o melón amargo es uno de los vegetales de vaina comestible popular en muchos países asiáticos. Está entre la más amarga degustación de cocinas todas las verduras. El melón amargo es muy bajo en calorías, ricas fuentes de fitonutriente
Tetris de origami

Tetris de origami

Origami modular en su mejor momento!He aprendido recientemente a utilizar origami modular para hacer cubos de colores vivos y alguien mencionó a me que podría ser utilizado para hacer figuras de Tetris. Eso fue todo la excusa que necesitaba para deja
Licor de calabaza

Licor de calabaza

este licor de sabor de los sabores ricos, tierra de calabaza con un toque de especias.  Copa recto-para arriba como un Halloween, agregar caliente sidra, crear un calabaza champagne cóctel o hacer un pumpkintini.Paso 1: fuentes de 4 tazas de jugo de
Latte de especia de calabaza fácil

Latte de especia de calabaza fácil

hacer tu propia calabaza especia Latte en casa, con o sin una cafetera!El uso de puré de calabaza real hace este SOOOOO mucho mejor que el café de Starbuck calabaza especia - y haciéndolo en casa es mucho más asequible también! Usted puede hacerlo si
Cóctel de calabaza

Cóctel de calabaza

Cóctel de calabazaLo curioso para llamar esto una calabaza cóctel porque aunque parece uno, no tiene ninguna calabaza en él.  Yo no soy un fan de poner puré de calabaza en cualquiera de mis bebidas sólo por lo que es sabor calabaza-ee.  ¿Que es lo qu
Lámpara Modular inspirado en Tetris

Lámpara Modular inspirado en Tetris

Esto fue una idea ocupando mi cuaderno de bocetos para un rato: una lámpara modular cuyas unidades se encienden al entrar en contacto uno con el otro. Tenía difíciles normas para este proyecto:debe ser bajo costo posible (sin soldadura/corte láser ne
Calabaza de Halloween interactivo (basado en Arduino)

Calabaza de Halloween interactivo (basado en Arduino)

LA IDEA DEUna calabaza que se ilumina, se sacude y grita... [video]Es Halloween, naturalmente tenemos que tener un proyecto.La idea es tener una calabaza, que detecta la presencia de una persona intentando llegar a los dulces y luego emplea varios ef
Remiendo de la calabaza de Halloween IOT

Remiendo de la calabaza de Halloween IOT

Meta: Cuando los niños acercan a la casa el remiendo de la calabaza cobra vida un entorno interactivo basado en movimiento y detección de sonido.Paso 1: Capa de serviciosPaso 2: Flujo de trabajoCuando se detecta movimiento; Haga lo siguiente:No comen
Entintado de calabaza

Entintado de calabaza

crear una única calabaza tatuada con unas interesantes líneas y diseños.Paso 1: fuentes de Plumas de arteCalabaza de Michaels (blanco o naranja)Pintura blancaCepillo de la espumaPaso 2: Calabaza diseños 1. usted puede comprar una calabaza blanca, per
Calabazas de lentejuelas DIY

Calabazas de lentejuelas DIY

Agregar un poco bling a tus decoraciones de Halloween este año con estas calabazas Diy de lentejuelas.Paso 1: Necesitarás:Mini calabazas o zapallos, alfileres de costura y lentejuelas.Paso 2: Diseñar su patrón. Empezar por trazar su diseño.Para hacer
Fumar No químico calabaza

Fumar No químico calabaza

Hay tantos grandes calabazas de Arduino controlado / jack-o-lanterns! Esta es otra, con una digital LED parpadeante luz de vela y vapor de agua como "no fumar" productos químicos! Solo agua!El "humo" viene de un fabricante de la niebla
Guirnalda de calabazas Pom Pom

Guirnalda de calabazas Pom Pom

Pom pom es igual a partido, simple y llanamente. Por eso estoy tan emocionado de esta manera DIY super fácil de hacer hilo largo guirnaldas de pom pom de calabaza que son adaptables para cualquier ocasión! Había visto un tutorial en alguna parte en l