julian alvarez / Mbed 2 deprecated METRIX_2

Dependencies:   mbed

Fork of METRIX_revision by julian alvarez

You are viewing an older revision! See the latest version

2 Entrega tetris

JUEGO TETRIS EN UNA MATRIZ LED 8x8

/media/uploads/jiuk/inicio.png


Este espacio virtual tiene como fin explicar de manera fácil, rápida y sencilla el funcionamiento, conexión y programación de un juego llamado tetris en una matriz led 8x8 programada con una tarjeta de desarrollo.


OBJETIVOS:

  • Conocer el funcionamiento básico y programación de un núcleo de desarrollo, en este caso el NUCLEO-F446RE.
  • Aplicar conocimientos previamente aprendidos de la programación en c.
  • Desarrollar el modelo de tetris basándose en arreglos y matrices que permitan la visualización dinámica del juego.

MATERIALES:

  • Nucleo STM
    • Jumpers
    • Cacle de datos
  • Matriz LED 8x8
    • con integrado MAX 7219

INTEGRANTES:

  • Cristhian Santos
  • Julián Álvarez

PARA EMPEZAR

Un tetris es un juego de categoría “puzzle” en dos dimensiones cuyo fin es organizar ciertos polinomios diseñados de manera que puedan ser organizados sin que existan espacios entre uno y otro, esto con el fin de completar una fila para que esta sea eliminada y caigan los restos de polinomios que se encontraban en la parte superior para continuar con la misma dinámica, el objetivo es eliminar la mayor cantidad de líneas y evitar que se forme una torre que llegue a llenar el tamaño permitido de columnas, en dado caso se perderá el juego. Para nuestro caso desarrollaremos el juego en una matriz de led de 8x8 (es decir contara con 8 filas y 8 columnas) controlada por un integrado max7912 que facilita el manejo de la matriz, esta matriz será el espacio donde se desarrollara el juego, las piezas las enviaremos por comunicación serial entre la tarjeta y el computador asumiendo 3 valores que serán: número de pieza, grados que gira cada pieza y finalmente la columna en donde se desea que se desplace cada pieza, estos datos estarán en medio de caracteres “<” “>” que indicaran las diferentes características entre una pieza y otra, se debe tener en cuenta que solo se enviara una línea de caracteres que contendrá todos los datos de las piezas que se desean enviar y el programa debe ser capaz de enviar dichas piezas una por una.


CREACIÓN GRÁFICA DEL JUEGO:

/media/uploads/jiuk/creacion_grafica.png

Iniciamos presentando la matriz matriz8x8 controlada por el integrado7912, este integrado tiene como fin facilitar el manejo de las filas y columnas de la matriz ya que viene configurado para que con solo enviarle dos códigos hexadecimales este sea capaz de manejar filas y columnas de manera muy sencilla, adicionalmente cuenta con configuración adicional tal como brillo, test, cantidad de columnas a utilizar entre otras.


PIEZAS:

Para la creación de las piezas recurrimos a crear cada una de ellas dentro de una matriz más pequeña de 3x4 que nos facilitara mucho el manejo de ellas a la hora de desplazarlas por las filas, las columnas y realizarle giros a cada pieza, esto debido a que encontramos cierta repetitividad en la creación de cada una de ellas, es decir estaban formadas por 1 2 y máximo 3 líneas continuas por ejemplo para el cuadrado encontramos que las 2 primeras columnas en código binario serian ceros mientras que las siguientes serian dos unos para cada línea dando forma al cuadro de la siguiente forma:

0 0 0
0 0 0
1 1 0
1 1 0

Esto en codigo binario y dentro de nuestra matriz 3x4 representara un cuadro que iluminara 4 leds en nuestra interfaz (cada “1” significa un led prendido). El objetivo es crear un registro de desplazamiento entre cada pieza enviada a la tarjeta y que cree la ilusion visual de que la pieza va desplazandose columna por columna hasta llegar a la parte inferior de la amtriz de leds, adicionalmente debemos realizar el juego de matrices para que al ubicar una pieza una sobre otra o una al lado de otra se siga manteniendo la ilusion visual que de una dinamica entretenida y realista al juego (esto se explicara en la seccion del codigo de programación).


FUNCIONAMIENTO DEL PROGRAMA:

El juego esta diseñado para que el usuario por medio del programa CoolTerm le envie a la tarjeta por codigo ASCII el valor de las teclas de dirrección (arriba,abajo,izquierda y derecha), estas son re cibidas por una funcion que según la tecla oprimida realizara diferentes acciones de la siguiente forma:

  • Arriba: Gira 90 grados la pieza.
  • Abajo: Desciende mas rápido cada pieza.
  • Derecha e izquierda: Mueve la pieza de derecha a izquierda según el caso.

EXPLICACIÓN DEL CODIGO:

El codigo es desarrollado OnLine por medio de la plataforma MBed y se basa en programación C, a continuación se especifica el funcionamiento del codigo con el que se desarrollo el proyecto.

  • Encabezados .h: Se creo un encabezado .h (moggo.h) en el se creo el arreglo de 6 casillas que contiene la informacion de cada pieza como se explico en el apartado “piezas”, este contiene todas las posibles combinaciones que dan forma a las diferentes piezas que se utilizaran durante el juego.

#ifndef MOGGO_H
#define MOGGO_H

#include "mbed.h"

#define ALL_TYPE 1

 uint8_t FIG_ALL[7]={0b10000000,0b11000000,0b11100000,0b01000000,0b01100000,0,0b00100000};
#endif
}


All wikipages