Está en la página 1de 6

SOFTWARE PARA INGENIERIA

TRABAJO FINAL
2015 - 2
El presente documento describe las especificaciones tcnicas y administrativas del
trabajo final a desarrollar en el curso de Software para Ingeniera.
Objetivo
Los alumnos debe de trabar en grupo validados por el profesor del curso y desarrollar
utilizando las herramientas de MATLAB un juego clsico de la consola Atari, Pong, as
como el hardware asociado para el control de juego, basado en un mdulo Arduino
Uno.
Pong
Pong era un videojuego de la primera generacin de videoconsolas lanzado por Atari en
1972. Bsicamente es un simulador de un juego de tenis de mesa (Figura 1.1).

Figura 1.1 Consola del Pong original


Cada uno de los jugadores controla unas paletas que se mueven verticalmente en la
pantalla y evitan que la bola (originalmente un cursor cuadrado) llegue a los bordes
laterales del monitor. En cuanto eso suceda el jugador que logr el ltimo rebote de la
bola obtiene un punto. El juego se mantiene hasta que el nmero de jugadas posible
alcance un mximo.

Figura 1.2 Consola del Pong


Atari comercializ una versin casera en su sistema Atari 2600 y se poda adquirir un
control especial para el control de las paletas (Figura 1.2). Este control permita

trasladar el juego, disponible slo en mquinas de Arcade instaladas en lugares


pblicos, dentro de casa donde poda jugarse conectando todo el sistema a un televisor.
El Pong y Atari produjeron una revolucin en el mundo del entretenimiento que hoy da
es un negocio que genera ms de 1,000 millones de dlares.
Hardware del controlador
En para el control del juego para lo que se requiere el mdulo Arduino. Este control
consistir con dos potencimetros conectados a los pines analgicos A0 y A1. El cdigo
de MATLAB leer el valor analgico de estos pines y en funcin de estos establecer la
posicin de ambas paletas (Figura 1.3).

Figura 1.3 Control del juego implementados en el mdulo Arduino Uno


El valor de los potencimetros no es de importancia; lo nico que se debe de considerar
es que hay que leer el valor del punto medio del dispositivo, lo que permitir obtener
valores entre 0V y 5V en los pines A0 y A1.
Software del juego
El juego debe de ejecutarse en una ventana grfica de MATLAB y debe de aprovechar
las capacidades de generacin de grficos en secuencia para generar una animacin. La
interface bsica del juego debe de mostrar las dos paletas laterales en ambos lados y la
bola que rebota entre estas y las paredes superior e inferior dentro del campo. En la
barra superior debe de verse informacin sobre los puntajes de ambos jugadores. Un
ejemplo de esta interface se muestra en la Figura 1.4.

Figura 1.4 Interface grfica del juego

Esta presentacin grfica puede cambiar: los colores pueden ser diferentes o presentar
un formato en general diferenciado a la muestra, pero debe de cumplir con las mismas
funcionalidades: mostrar el movimiento de dos paletas laterales en un espacio en donde
un bola rebotara en las paredes inferior y superior, mientras que el estado de los
puntajes de los jugadores de muestra en la parte superior.
El juego debe de ejecutarse de forma continua mientras los jugadores logran sostener la
pelota en el campo, haciendo que esta rebote entre las paletas. Al finalizar el juego se
debe de saber quin en el jugador que ha ganado (ya sea porque as lo indican los
puntajes o por un mensaje expreso que indica quin de los jugadores ha ganado).
Condiciones del juego como trabajo base
El Pong debe de ser un producto final y por lo tanto su uso y juego debe de ser lo ms
natural posible: los movimientos deben de ser suaves y la velocidad de operacin debe
de permitir un juego placentero. Los ejes del grfico tienen que ajustarse para que el
movimiento de las raquetas y de la bola sea natural.
En la interface mostrada en la Figura 1.4 se han eliminado los ejes ya que ese valor tiene
que ser hallado por el equipo de programacin y ciertos rangos de valores, combinada
con la transformacin de los valores de voltaje de entrada va a generar valores de
movimiento natural. Para ocultar el valor de los ejes y parezca una interface grfica y
uno una grfica de MATLAB utilice la instruccin:
axis off;

Esta instruccin no anula los ejes, simplemente no muestra los valores. El equipo de
programacin va a tener que fijar los ejes para que la animacin se muestre de forma
natural.
Otra condicin es que las paletas recorran todo el espacio posible en las paredes
laterales. Cuando el voltaje sea el mnimo en los puertos analgicos del Arduino las
paletas deben estar en la parte ms baja y cuando el voltaje sea el mximo deben estar
en la parte ms alta.
El programa que hace funcionar el juego debe ser una funcin llamada pong. Esta
funcin no tendr argumentos de salida (la salida de la funcin va a ser el juego mismo)
pero si debe de tener un argumento de entrada como mnimo. Este argumento de entrada
debe de ser el nmero de jugadas mxima que el juego se va a sostener hasta que
termine con un ganador. Este valor debe de ser un valor entero positivo mayor que 0 (en
caso de no cumplir con estos criterios la funcin debe devolver un error de funcin en
MATLAB). Cada vez que un jugador pierda el juego debe de iniciar nuevamente hasta
que el nmero de intentos sea igual al nmero ingresado como argumento de entada.
La funcin principal debe de llamar a otra funciones creadas expresamente para
solucionar otros problemas del proyecto: por ejemplo, puede haber una funcin que
retorne un valor en caso que la bola a rebotado con una de las paletas, u otra funcin
que lea los valores de los potencimetros y retorne todos los puntos que conforman la
paleta.

Uno de los problemas con los que puede encontrarse en el momento de la creacin de
funciones es que debe de leer el valor de una variable externa sobre la que no tiene
control. Considere el siguiente caso:
function func_principal(argumento)
a = arduino;
data = otra_funcion(val1,val2);
funcion out = otra_funcion(arg1,arg2)
if readPWMVoltage(a,arg1) == 5
out = 1;
else
out = 0;
end
end
end

La funcin func_principal llama a la funcin secundaria otra_funcion que invoca a


la variable a (que es el objeto arduino conectado a un puerto COM serial). Peri,
recuerde, que la variable a solo existe dentro de la funcin func_principal y la
funcin secundaria otra_funcion no puede acceder a la variable a, por lo que no podr
leer ni escribir valore del Arduino.
Para solucionar este problema es necesario declarar que la variable a es de tipo global
antes de utilizarla De esta forma a estar disponible para todas las funciones dentro del
cdigo.
function func_principal(argumento)
global a;
a = arduino;
data = otra_funcion(val1,val2);
funcion out = otra_funcion(arg1,arg2)
if readPWMVoltage(a,arg1) == 5
out = 1;
else
out = 0;
end
end
end

Tenga esto en consideracin al momento de implementar funciones secundarias que


lean o escriban valores sobre el mdulo Arduino.
Mejoras en el diseo base
El proyecto base tiene un puntaje base (ver Rbrica), pero para obtener un puntaje ms
alto se debe de mejorar el diseo original para que sea nico para cada equipo de

programacin, de forma tal que haya implementaciones de Pong que sean mejores que
otras. La mejor implementacin tendr la mxima nota.
Se pueden sugerir algunas mejoras, mejorando el hardware. Considere el hardware dela
Figura 1.5:

Figura 1.5 Control del juego Pong con un parlante piezoelctrico


En esta implementacin se tiene un parlante piezoelctrico que permitir reproducr
tonos desde un puerto digital PWM. Por lo tanto, ahora el juego tendr la opcin de
generar sonidos para diferentes eventos (una msica de inicio, un tono cuando la pelota
rebote en las paletas, un cadena de tono que indique que se ha perdido un juego, etc).
Otra mejora sugerida es aumentar el nmero de argumentos de entrada: se puede
agregar un argumento que controla la dificultad del juego con otro valor entero de
entrada, que vara la velocidad o el tamao de las paletas (al aumentar la dificultad las
paletas reducen su tamao).
Cada mejora se evaluar en su capacidad de mejorar el juego sobre el trabajo base y no
en su diferencia respecto al trabajo base. El cambiar los colores de la interface o el tipo
de letra, por ejemplo, no se considera una mejora ms que una personalizacin de la
interface.
Rbrica
El trabajo tendr la siguiente rbrica de evaluacin, proporcional sobre un puntaje de 20
puntos:
Presentacin de su trabajo (20%)
Se evala que el equipo as como cada uno de los miembros conocen el trabajo
desarrollado y es capaz de explicarlo en trminos sencillos, con claridad y de forma
coordinada entre los miembros del equipo. Deben de tener un soporte de presentacin
adecuado y que ayude en la explicacin. Esta nota puede ser grupal o diferenciada para
cada miembro del equipo de programacin.
Proyecto base (30%)
El juego debe de cumplir con los criterios especificados en la seccin Condiciones del
juego como trabajo base en el presente documento.

Proyecto final (30%)


El juego debe de superar el trabajo base, ya que este es un prototipo de funcionamiento
sobre el que se debe de construir el producto final. Esto requiere que el trabajo tenga
mejoras personalizadas que agregan valor al juego. Se pueden seguir los lineamieto
especificados en la seccin Mejoras en el diseo base del presente documento o
presentar algunas adiciones que no estn consideradas en el presente documento, pero
que agreguen funcionalidades y no que sea meras adiciones decorativas.
Producto final (20%)
De todos los proyectos, aquel que presente mejoras sobre el diseo y alcance un nivel
superior sobre todos los presentados obtendr una bonificacin adicional que le
permitir obtener la nota mxima. Esto estar no solo en funcin de la evaluacin
comparada con los dems trabajos sino con la evaluacin que su profesor haga de su
trabajo y presentacin en trminos generales. Puede considerarse que el programa tenga
una publicacin asociada, que el cdigo siga los lineamientos de una programacin
ordenada y estructurada, etc. Son criterios que su profesor juzgara en el momento de la
presentacin.
Presentacin del trabajo final
El trabajo final se presentar en su sesin de clase correspondiente a la semana 15 del
presente ciclo. El profesor de su seccin le dar las instrucciones a seguir el da de la
exposicin de su trabajo (presentacin personal, horarios de sustentacin, ordenamiento
por grupos y reglamentacin general sobre la presentacin en el saln de clase). La nota
ser registrada en el sistema directamente sin opcin a modificaciones posteriores.

Lima, 6 de noviembre de 2015

También podría gustarte