1. ECCI JECC 2016
ARKANOID EN LENGUAJE VHDL
Pita C. Juri A, Rodríguez R. Anyi M. Salamanca P. Iván D.
j.andrea.1992@gmail.com, Anyiiz02@gmail.com, ivanpiraquive@gmail.com
Universidad Escuela Colombiana de Carreras Industriales
Bogotá- 2016
Abstract -This document provides information on the
arkaoind game, known as the ball game, which explains that
it is programmed by means of VHDL language, finding
support in the FPGA card, which would help to visualize and
develop the programming.
Resumen - Este documento proporciona información
sobre el juego arkaoind, conocido como el juego de
pelota, que explica que está programado mediante
lenguaje VHDL, encontrando soporte en la tarjeta
FPGA, lo que ayudaría a visualizar y desarrollar la
programación.
Palabras Claves: VHDL, ARCANOID, JUEGO
I. INTRODUCCIÓN
Actualmente, las actividades que práctica los adolescentes y
los niños en su tiempo libre como los deportes, salida de
campo, pero en ocasiones utilizan diferentes tipos de video
juegos, especialmente lo que muestran Interactividad.. Aunque
la diversidad de juegos existentes en el mercado y las múltiples
maneras de interactuar con ellos cada vez capta la atención de
nuevos usuarios de diversas edades. Una parte muy elevada de
consumidores oscilan entre los 5 y 25 años. En estas edades es
cuando la persona recibe mayor conocimiento y aprende todo
lo que le rodea.
Por otra parte, el videojuego se convirtió en una alternativa de
preferencia por los adolescentes y adultos. Ya que con esta
actividad encuentran disminuir el estrés o aquellos factores que
implican daño en la vida cotidiana.
A. Historia De Juego
¿Cuál es el origen de los videojuegos? ¿Cuándo y cómo
empezó todo? Por difícil que resulte de creer, los videojuegos
dieron sus primeras señales de vida hacia finales de la década
de los 40, concretamente tras el fin de la Segunda Guerra
Mundial, cuando las principales potencias vencedoras iniciaron
un carrera tecnológica para construir las primeras
supercomputadoras programables como el ENIAC, una enorme
computadora que ocupaba una superficie de 167 m² y pesaba
27 Toneladas.
Los primeros videojuegos eran mayoritariamente experimentos
y pruebas académicas por parte de científicos y físicos, no sería
hasta la llegada de la década de los 70 cuando los videojuegos
empezarían a tener un carácter más comercial, marcando el
inicio de una imparable transformación y evolución del
concepto mismo del videojuego que acabaría por convertirlo
en el fenómeno cultural de masas que hoy conocemos,
llegando incluso a lograr el estatus de medio artístico en
algunos países. [2]
El arkanoid nació en el año 1986 en versión arcade creado por
la empresa Taito, basado en el breackout desarrollado por Atari.
el juego llego a ser tan popular que se crearon 4 arkanoids
Arkanoid, Tournament Arkanoid, Revenge of Doh y Arkanoid
Returns tambien se crearon muchas copia del arkanoid entre
ellas las más populares fueron Krackout Traz y el Krypton
Egg.[3][4].
El juego de arkanoid es uno de los videojuegos más destacados
en los años 80, tiene un concepto de ser de concentración y
desarrollo de habilidades.
Queremos revivir y demostrar que los más añorados juegos de
los 80 siguen intactos manteniéndose estables.
Para este caso hacemos referencia del código VHDL como
principal herramienta para el desarrollo de este proyecto, ya
que nos ayuda a implementar un código completo que genere
imágenes, sonidos y movimientos de los cuales se hace que el
juego arkanoid se vea llamativo, por otro lado para visualizar
imágenes es necesario acudir a un monitor que tenga 640x480
pixeles para que ver diagramas del juego en su totalidad y un
control de donde la persona puede entrar a interactuar con el
juego.
B. Temática del juego
Arkanoid, donde el jugador controla una pequeña plataforma,
conocida como "Nave Espacial Vaus", que impide que una
bola salga de la zona de juego, haciéndola rebotar. En la parte
superior hay "ladrillos" o "bloques", que desaparecen al ser
tocados por la bola.
Cuando no queda ningún ladrillo, el jugador pasa al siguiente
nivel, donde aparece otro patrón de bloques, en la figura 1
podemos ver las características y presentación del juego
original. [3]
2. ECCI JECC 2016
Figura 1: Tablero ARKANOID
II. CONTENIDO
A. Diseño del programa
Para el desarrollo de este proyecto hemos utilizado ocho (8)
bloques en los que se comprenden la descripción del programa.
Se implementa el código para que el juego cumpla con todas
las expectativas realizadas, para esto describiremos que
códigos fueron desarrollados:
a. La bolita
b. Definición de Colores
c. Límites de la Plataforma
d. Tableros
e. Velocidad del tablero
B. Desarrollo
Durante el desarrollo del proyecto fue necesario hacer algunas
consultas en cuanto a algunos tipos de estructura, para poder
crear figuras, en este caso fue necesario crear una subrutina de
la estructura de creación de los cuadros de los elementos a
visualizar en nuestro tablero, por lo cual hubo que recurrir a la
estructura(), que lo que hace es permitirnos crear subrutinas,
con este lo que hicimos fue dar la estructura para hacer la
creación en cuatro bit de los cuadros y de la misma forma
poderles aplicar color a las secciones denotadas bajo éste tipo
de subrutina.
En la hoja de texto denominada bricks o tableros, lo que hemos
hecho es crear cuatro diferentes tableros para jugar, llamados
con dos bits, en los cuales se establecen como entradas tres
valores, dos de tipo vector y uno de tipo “single”,
“game_state”, “level_select” y “clock”, respectivamente y de
la misma manera dos variables de salida, “brick_list”, la cual
nos da una matriz o arreglo con la definición total de elementos
que pertenecerán a nuestro tablero y la salida “brick_count”,
que será nuestro indicador de valores a contar para determinar
la finalización o victoria del nivel.
Dentro de la estructura que manejamos damos uso a la
estructura “process”, teniendo como referencia de condición
inicial los datos suministrados por las variables de entrada,
“clock” y “state_game”; que posteriormente en nuestra
máquina de estado comentaremos más profundamente el
comportamiento de estas dos variables que son pilar en nuestro
desarrollo, y la estructura “case”, que tiene como eje el valor
que suministre la entrada level_select, que es un vector de 2
bits, y según el valor que indique nos dirigirá a cada nivel
cargado a cada valor.
En la definición de cada bloque de tablero, lo que hacemos es
aplicar la subrutina rectangle, en donde en cada uno de los
valores disponibles que tenemos indicamos es el valor del pixel
que queremos introducir y así los valores introducidos en las
coordenadas dadas serán tomados como nuestra figura.
Luego viene el bloque de programación de “la bolita”, que es
nuestro elemento principal, en base a este controlaremos, la
velocidad del juego, y la interacción de la volta con los demás
elementos.
En cuanto a la velocidad del juego tenemos como variable de
entrada nuestro reloj, que dependiendo de los valores que
indique el selector de nivel, nos indicara un valor asignado a
una variable constante denominada “count_max”, que es un
valor que nos denomina el valor del reloj, en el divisor de
frecuencia, este nivel de velocidad va de la mano con el valor
que indique el tablero a jugar, es decir, level_select es quien
nos indica cual es el valor a entregar para tomar el count_max
y asi poder realizar el divisor de frecuencia.
Un valor de entrada llamado reset, que como su nombre lo
indica nos dejara en el nivel inicial en el valor cero.
La interacción con los costados, se hace con una estructura
“if” donde si superamos ciertos valores, determinados, nuestro
caso en el eje y superior al pixel 5 e inferior al pixel 620 será el
área correspondiente a nuestro espacio de juego y de la misma
manera en el eje x demarcado del pixel 5, entre este área será
nuestro espacio de juego y que permitirá según el game_state.
La interacción con la plataforma o “board”, la tenemos
discriminada en el bloque de “board”, por lo tanto al entrar en
contacto con la posición en la que la plataforma se encuentre
reaccionara.
La interacción con el resto de las partes, es decir, con los
elementos de cada tablero se ejecuta de la siguiente manera:
La selección de nivel o tablero se hace de manera automática y
secuencia, al terminar uno inicia el siguiente nivel
incrementando de la misma manera la velocidad, lo hace
basándose en el estado que genere game_win, cuando lo active
entonces hará el cambio.
En cuanto a la entrada, lo manejamos por medio de un mouse,
la programación fue obtenida por medio de la red, que nos
ofrece toda la configuración de funcionamiento de un mouse
de conector PS/2, ya que la fpga nos ofrece la opción del
puerto, será nuestra entrada; la configuración totalmente
guiada por la red.
En el bloque de la VGA, lo que se ha hecho es darle la
denominación de colores a cada segmento, igualmente
utilizando nuestra subrutina rectangle, haciendo la
denominación de las posiciones de cada elemento, en el caso
de la plataforma y la bolita, se denominan son las variables
bajo las cuales se realiza su movimiento.
3. ECCI JECC 2016
Dentro de nuestro bloque principal realizamos el llamado a
cada uno de los bloques complemento, bajo la función
componente que lo que hace es insertar las configuraciones
asociadas al grupo y de la misma manera hay que hacer la
declaración de las variables y ejecutamos, la máquina de
estados principal que es la que nos permite ejecutar cada una
de la acciones programadas.
Figura 2: Conexión de la FPGA.
Se realiza la conexión de los sensores de entrada de señal a la
tarjeta FPGA
Figura 3: Visualización del programa en VHDL con el monitor VGA.
Se hacen conexiones respectivas para el encendió del monitor
con un cable de poder AC y se establece comunicación desde
la FGPA por medio de un cable de VGA.
Figura 4: Monitor y mouse.
Las herramientas necesarias para la implementación de este
juego son: un monitor, Control (mouse), Dispositivo
programable FPGA.
C. Como jugar arkanoid
El objetivo del juego es eliminar todos los bloques que hay en
el tablero golpeándolos con la bolita, para ello se debe rebotar
con la plataforma inferior sin dejar que toque el suelo.
Si la bolita toca el suelo se pierde y se debe jugar nuevamente
el nivel.
Cuando ya no queden bloques en el tablero se pasa de nivel.
III. CONCLUSIONES
1. Podemos concluir que al realizar trabajo con código
VHDL, se debe tener cuidado a la hora de digitar el
código, ya que en algunas ocasiones esto puede incurrir
en el proceso que queremos realizar.
2. Ya que el video ocupa la mayor capacidad de
procesamiento, identificamos que el código vhdl, no
encontró suficiente espacio en la fpga para ejecutar el
sonido, por lo tanto no pudo ser compilado
completamente para el juego.
3.
IV. REFERENCIAS
[1] Asistencia en Programación de Harbey Rodríguez
Ingeniero Electrónico
[2] Otakufreaks2016,
http://www.otakufreaks.com/historia-de-los-
videojuegos-el-origen-y-los-inicios/
[3] Arcade classics2006, http://arcadeclassics.net/
[4]Arcade 2015,http://www.arcade-
history.com/?page=detail&id=106
[5]National Instruments http://www.ni.com/white-
paper/9344/es/
4. ECCI JECC 2016
V. AUTORES
A. Juri Andrea Pita Correa
Nació el 19 de septiembre de
1992 en la ciudad de Bogotá.
Es Técnica en
mantenimiento de equipos de
cómputo 2010 Servicio
Nacional Aprendizaje-SENA,
Tecnóloga en administración
de redes de cómputo 2012
Servicio Nacional
Aprendizaje-SENA, Tecnóloga en Soporte en
Telecomunicaciones 2016 de la Universidad ECCI,
Actualmente se dedica a estudiar VIII Semestre
Ingeniería Electrónica en la Universidad ECCI y
labora como Ingeniera junior O&M Datos y
conectividad en ZTE (PROYECTO CLARO), Su
enfoque va en el ámbito de las comunicaciones
especialmente en telemática.
B. Anyi Marcela
Rodríguez Ruiz Nació el 2
de febrero de 1989 en Garzón
(Huila).es Técnica en
electrónica y Electricidad
Industrial del Juan Bosco
Obrero, Tecnóloga en
C. Electrónica de la Universidad ECCI,
Actualmente se dedica a terminar sus estudios de
ingeniería electrónica en la Universidad ECCI y
Labora como Supervisor de Servicios en el área de
mantenimiento Eléctrico y Electrónico en la Planta
de Vidrio Andino., su enfoque va en fortalecer sus
conocimientos en automatización para optimizar
procesos en la industria.
D. Iván Darío Salamanca
Piraquive
Nació el 14 de Mayo de 1994
en Bogotá. Es Tecnólogo en
Mantenimiento Electrónico
Instrumental e Industrial del
Servicio Nacional
Aprendizaje-SENA, labora
actualmente como Técnico
Electrónico en Ciplas S.A.S, Su enfoque va en la
innovación del mantenimiento en equipos y
maquinaria electrónicas.