Download aplicación de métodos numéricos en un juego

Document related concepts
no text concepts found
Transcript
APLICACIÓN DE MÉTODOS NUMÉRICOS EN UN
JUEGO: TIRO AL PANDA CON CAÑON
Edwin Guillermo Sandoval A. Author, Miguel Angel Daza Salamanca B. Author, Smith Leonardo
Parrado Velasquez C. Author, Angel Cruz-Roa Ph.D. D. Author
Resumen- Desarrollo de un juego que consiste el uso de un cañón
que lanza una bala a un objetivo en el cielo la trayectoria
depende de los datos que ingrese el jugador. Para la
implementación de los métodos numéricos estudiados, se realizó
un juego en el cual se aplica un método numérico para el correcto
funcionamiento del juego y dar solución al problema.
El juego se desarrolló en el lenguaje de programación Python con
ayuda del módulo pygame, su realización será muy básica con el
desarrollo de una interfaz utilizando la ayuda de los módulos
proporcionados por pygame para el manejo de las imágenes,
mientras que las trayectorias se calculan aplicando uno de los
métodos numéricos desarrollados en el curso de la carrera para
estimar el alcance horizontal y altura máxima.
como: formulas, aplicación, etc. Con este tipo de información
se facilita realizar una dinámica en el aprendizaje. Por medio
de este proyecto se desarrolló un juego que proporciona la
interacción de conceptos matemáticos con la diversión del
usuario.
II. CONTENIDO
Para poder realizer este trabajo nececitamos manejar
diferentes herramientas entre ellas encontramos:
Pygame es un conjunto de módulos del lenguaje Python que
permiten la creación de videojuegos en dos dimensiones de
una manera sencilla. Está orientado al manejo de sprites.
Se trazan las trayectorias de proyectiles disparados con la misma
velocidad inicial v0 pero con los siguientes ángulos de tiro q : 10o,
20o, 30o, 40o, 45o, 50o, 60o, 70o, 80o, 90o. Las ecuaciones del
movimiento de los proyectiles son: x=v0 cos(Angulo) t y=v0
sen(Angulo) t-gt2/2. En la interfaz principal del juego se observa
a nuestro objetivo el panda quien se mueve constantemente de
arriba a abajo y siempre está protegido por un escudo, nosotros
contamos con 4 disparos en total para lograr derribarlo.
También puede utilizarse para crear
otros programas multimedia o interfaces gráficas de usuario.
Pygame está basado en la librería SDL 1.2, una alternativa
más actual de SDL en Python podría ser Py-SDL2, que
implementa varias mejoras respecto a Pygame.
Índice términos- Aplicaciones, Juegos, Lenguaje de
programación, Métodos Numéricos, Pygame, Python.
Funciona como interfaz de las bibliotecas SDL.
1) Requesitos previos
I.
D
INTRODUCTION
entro del rol de estudiante de carreras profesionales y con
un gran número de asignaturas de difícil entendimiento
por cursar, se hace necesario crear un sistema que permita
manejar la información del curso de una forma más didáctica
que lo logrado con los procesos tradicionales de enseñanza.
Para el correcto entendimiento de los diferentes casos de
estudio es necesario tener un acceso sencillo a información
•
Conocimientos de Python. Se da por hecho que se
manejan con soltura la creación de clases, funciones y
demás.
•
Algo de matemáticas y física básica. Para empezar con
conceptos básicos de lo que es un punto matemática y
algunas formulas básicas de física tenemos de sobra.
2) Qué necesitamos
•
Tener Python y Pygame instalados.
•
Un IDE o editor de texto a elección.
•
Un directorio base donde trabajar. Yo he creado una
Cuando un objeto es lanzado al aire, éste sufre una aceleración
debida al efecto del campo gravitacional. El movimiento más
sencillo de éste tipo es la caida libre; pero cuando un cuerpo,
además de desplazarse verticalmente, se desplaza
horizontalmente, se dice que tiene un movimiento de
proyectil, también conocido como movimiento parabólico.
carpeta llamada pygame con dos carpetas en el interior
llamadas images y sound.
¿Qué es un método numérico?
Un método numérico es un procedimiento mediante el cual se
obtiene, casi siempre de manera aproximada, la solución de
ciertos problemas realizando cálculos puramente aritméticos y
lógicos (operaciones aritméticas elementales, cálculo de
funciones, consulta de una tabla de valores, cálculo
preposicional, etc.). Un tal procedimiento consiste de una lista
finita de instrucciones precisas que especifican una secuencia
de operaciones algebraicas y lógicas (algoritmo), que
producen o bien una aproximación de la solución del problema
(solución numérica) o bien un mensaje. La eficiencia en el
cálculo de dicha aproximación depende, en parte, de la
facilidad de implementación del algoritmo y de las
características especiales y limitaciones de los instrumentos de
cálculo (los computadores).
La ciencia y la tecnología describen los fenómenos reales
mediante modelos matemáticos. El estudio de estos modelos
permite un conocimiento más profundo del fenómeno, así
como de su evolución futura. La matemática aplicada es la
rama de las matemáticas que se dedica a buscar y aplicar las
herramientas más adecuadas a los problemas basados en estos
modelos. Desafortunadamente, no siempre es posible aplicar
métodos analíticos clásicos por diferentes razones:
•
•
•
•
No se adecúan al modelo concreto.
Su aplicación resulta excesivamente compleja.
La solución formal es tan complicada que hace
imposible cualquier interpretación posterior.
Simplemente no existen métodos analíticos capaces
de proporcionar soluciones al problema.
En estos casos son útiles las técnicas numéricas, que mediante
una labor de cálculo más o menos intensa, conducen a
soluciones aproximadas que son siempre numérica. El
importante esfuerzo de cálculo que implica la mayoría de estos
métodos hace que su uso esté íntimamente ligado al empleo de
computadores. De hecho, sin el desarrollo que se ha producido
en el campo de la informática resultaría difícilmente
imaginable el nivel actual de utilización de las técnicas
numéricas en ámbitos cada día más diversos.
¿Qué es un Proyectil?
Un proyectil es un objeto al cual se ha comunicado una
velocidad inicial y se ha dejado en libertad para que realice un
movimiento bajo la acción de la gravedad. Los proyectiles que
están cerca de la Tierra siguen una trayectoria curva muy
simple que se conoce como parábola. Para describir el
movimiento es útil separarlo en sus componentes horizontal y
vertical.
Por eso es importante explicar el movimiento de un proyectil
como resultado de la superposición de un movimiento
rectilíneo uniforme y uno uniformemente variado,
estableciendo las ecuaciones de la curva representativa,
tiempo de vuelo, tiempo máximo, altura máxima, alcance
máximo, velocidad y coordenadas de posición en el plano.
Características del Movimiento
El movimiento de un proyectil, frecuentemente se
descompone en las direcciones horizontal y vertical. En la
dirección horizontal el movimiento del proyectil es rectilíneo
y uniforme ya que en esa dirección la acción de la gravedad es
nula y consecuente, la aceleración también lo es. En la
dirección vertical, sobre el proyectil actúa la fuerza de
gravedad que hace que el movimiento sea rectilíneo
uniformemente acelerado, con aceleración constante.
Ecuaciones del Movimiento
Ecuaciones del movimiento de los proyectiles
Supondremos que el proyectil parte del origen con una
velocidad V0 que forma un ángulo θo con la horizontal. Las
componentes iniciales de la velocidad son:
estilo particular de programación, permite varios
estilos: programación orientada a objetos, programación
imperativa y programación funcional. Otros paradigmas están
𝑉!! = 𝑉! × 𝑐𝑜𝑠 𝜃 (1)
soportados mediante el uso de extensiones.
𝑉!! = 𝑉! × sen 𝜃 (2)
Python usa tipado dinámico y conteo de referencias para la
administración de memoria.
Sustituyendo estas expresiones en las ecuaciones anteriores, se
obtienen las ecuaciones cinemáticas del movimiento de un
proyectil:
Una característica importante de Python es la resolución
dinámica de nombres; es decir, lo que enlaza un método y un
nombre de variable durante la ejecución del programa
(también llamado enlace dinámico de métodos).
𝑎! = 0
(3)
𝑉! = 𝑉! × cos 𝜃!
(4)
𝑥 = 𝑉! × cos 𝜃! ×𝑡
(5)
𝑎! = −𝑔
(6)
𝑉! = −𝑔𝑡 + 𝑉! × sin 𝜃!
(7)
!
𝑦 = − ×𝑔𝑡 ! ×𝑉! sin 𝜃! ×𝑡
!
(8)
Otro objetivo del diseño del lenguaje es la facilidad de
extensión. Se pueden escribir nuevos módulos fácilmente
en C o C++. Python puede incluirse en aplicaciones que
necesitan una interfaz programable.
Aunque la programación en Python podría considerarse en
algunas situaciones hostil a la programación funcional
tradicional del Lisp, existen bastantes analogías entre Python y
los lenguajes minimalistas de la familia Lisp como puede
ser Scheme.
Python es un lenguaje de programación interpretado cuya
filosofía hace hincapié en una sintaxis que favorezca un
III. RESULTADOS
código legible.
Se trata de un lenguaje de programación multiparadigma, ya
que soporta orientación a objetos, programación imperativa y,
en menor medida, programación funcional. Es un lenguaje
interpretado, usa tipado dinámico y es multiplataforma.
Es administrado por la Python Software Foundation. Posee
una licencia de código abierto, denominada Python Software
Foundation License,1 que es compatible con la Licencia
pública general de GNU a partir de la versión 2.1.1, e
incompatible en ciertas versiones anteriores.
Características y paradigmas
Python es un lenguaje de programación multiparadigma. Esto
significa que más que forzar a los programadores a adoptar un
En una primera interfaz encontramos nuestro objetivo que es
el panda el cual esta fuertemente cubierto por su fiel amigo el
escudo, este lo proteje de cualquier tiro directo dificultando
nuestra mision, podemos ver el numero de intentos totales que
tenenmos para poder ganar y un logo de la unillanos el cual
nos permite optener una ventaja que es dejar indenfenso al
nuestro opjetivo, sacrificando un disparo y algo de fuerza, en
esta version podemos medir la fuerza traves de la fleche negra
que vemos, con el movimiento del raton podemos ingresar
datos como el Angulo siendo un maximo de 90 grados, y la
fuerza, atravez del vector fuerza que lo podemos identificar
con la fleche negra.
Cuando logramos acertar al logo de la Universidad de los
llanos dejamos indefenso a nuestro objetivo, podemos ver
como cambia de forma, acausa de este veneficio perdemos
fuerza en el disparo.
En le momento en que el logramos venser a nuestro rival se
podra opservar como el simula su derota.
En el momento que le damos al escudo logramos generar una
estatica la cual nos muestra lo fuerte que es este, y
comprobandonos que no podremos realizer un tiro directo para
venser a nuestro enemigo cuando tiene el escudo.
IV. CONCLUCIONES
Se logro generar un softwar interactivo, didactico que nos
permite integrar el conocimiento de los metodos numericos en
un juego, despertando interes sobre el manejo de las
matematicas por parte de niños y adultos.
Teniendo en cuenta las tecnologias utilizadas se puede
concluir que la realizacion de software didactico utilizando
matematicas de cualquier tipo (metodos numericos,
geometrias entre otras), es factible atraves de tecnologias
libres.
En en caso que no logremos venser al panda con las
oportunidades que se nos permiten, se nosmostrara una
imagen en la cual vemos como nuestro objetivo se regocija
por lograr superarnos.
Como punto de desarrollo se ve como con pocos recursos y
con la utilizacion de software a nuestro alcanse podemos
llevar a otro nivel el analisis de las matematicas, generando
opciones de explicarlo de una manera mas didactica a las
opersonas de nuestro alrededor.
V. REFERENCIAS
http://espaciodeltie.blogspot.com.co/p/introduccion.html
http://es.slideshare.net/vicenteegalvez/ecuaciones-y-modelosdel-movimiento-de-proyectiles
https://www.python.org/
https://es.wikipedia.org/wiki/Python
https://www.codecademy.com/es/tracks/python-traduccion-alespanol-america-latina-clone-1
http://www.pygame.org/hifi.html
https://en.wikipedia.org/wiki/Python_(programming_language
)
http://razonartificial.com/tutoriales-pygame/
https://wiki.python.org/moin/PyGame
https://es.wikipedia.org/wiki/Pygame
VI. AUTORES
Edwin Guillermo Sandoval Lozano, Estudiante de ingenieria
de sistemas de la Universidad de los Llanos Septimo semester.
Miguel Angel Daza Salamanca, Estudiante de ingenieria de
sistemas de la Universidad de los Llanos Septimo semester.
Smit Leonardo Parrado Velazques, Estudiante de ingenieria de
sistemas de la Universidad de los Llanos Septimo semester.
Ángel Alfonso Cruz Roa, Eng, M.Sc, Ph.D, Profesor de
tiempo completo - Universidad de los Llanos, Ingeniero de
sistemas de Universidad de los Llanos en 2005, terminó
el Master en Ingeniería Biomédica e inicia el Doctorado en
Sistemas y Computación en 2010 en la Universidad Nacional
de Colombia gracias concesión de doctorado
de COLCIENCIAS a las enseñanzas de doctorado en
Colombia.