Desarrollo de Videojuego Interactivo que Estimule la ...
Transcript of Desarrollo de Videojuego Interactivo que Estimule la ...
Desarrollo de Videojuego Interactivo que Estimule la Lógica de Programación
a Los Estudiantes de Ingeniería de Sistemas de Primeros Semestres de la Universidad
Cooperativa de Colombia
Juan Camilo Muñoz Rivera
Oscar Mauricio Peña Escobar
Asesor:
José Martín Delgado
Ingeniero en Sistemas
Universidad Cooperativa de Colombia
Facultad de Ingenierías
Programa de Ingeniería de Sistemas
Bogotá, 2021
Desarrollo de Videojuego Interactivo que Estimule la Lógica de Programación
a Los Estudiantes de Ingeniería de Sistemas de Primeros Semestres de la Universidad
Cooperativa de Colombia
Juan Camilo Carrillo Rivera
Oscar Mauricio Peña Escobar
Análisis sistemático de literatura para optar al título de ingeniero de sistemas
Asesor:
José Martín Delgado
Ingeniero en Sistemas
Universidad Cooperativa de Colombia
Facultad de Ingenierías
Programa de Ingeniería de Sistemas
Bogotá D.C
NOTA DE ACEPTACIÓN
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
PRIMERA ENTREGA
______________________________________
______________________________________
SEGUNDA ENTREGA
______________________________________
______________________________________
OBSERVACIONES
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
AGRADECIMIENTOS
En primera medida queremos agradecer a Dios por darnos la fuerza salud y entendimiento al
llegar a este punto del camino. En segunda medida agradecemos a nuestros padres y personas
aledañas, quiénes han sido un apoyo fundamental para este proceso educativo y crecimiento
profesional.
Por último, queremos agradecer a cada docente que nos atribuyó conocimiento para nuestro
crecimiento profesional y en especial a nuestro tutor que nos dio su apoyo guía en cada
momento de este proyecto.
RESUMEN
En el presente documento se plasma desde la planeación, diseño, y desarrollo de un
videojuego interactivo para estudiantes de primeros semestres de ingeniería en sistemas de
la Universidad cooperativa, esto con la finalidad de que por medio de este videojuego se
pueda enseñar de una manera didáctica los conceptos básicos de la programación por medio
de puzles sencillos.
Esta idea surge a consecuencia de la recolección de datos por medio de encuestas realizadas
a estudiantes de primeros semestres de la Universidad, en las cuales se busca determinar
porque se refleja una reducción al no optan por seguir la rama del desarrollo del software. Al
realizar un análisis detallado y una comparativa entre los estudiantes de primero y segundo
semestre de ingeniería de sistemas, se llega a conclusión que las metodologías
convencionales son un factor clave del por qué se presenta esta reducción.
Teniendo en cuenta el análisis de los datos recolectados, se opta por el desarrollo de un
videojuego en 3D en el motor Unity. En el cual, se reflejarán los conceptos básicos de la
programación yendo desde las variables, sentencias de decisión, y ciclos repetitivos. Esto con
la finalidad de que por medio de este videojuego se incentive y se muestre a los estudiantes
de primer semestre de ingeniería de sistemas de manera interactiva enseñar e incentivar el
aprendizaje de la programación.
CONTENIDO
1. Definición del Tema a Tratar9
1.1 Antecedentes10
2. Justificación11
3. Desarrollo Organizado y Sistemático de la Revisión Bibliográfica12
3.1 Marco Teórico12
3.1.1 Algoritmo12
3.1.2 Lenguaje de programación13
3.1.3 Programación Orientada a Objetos (POO)13
3.1.4 Librerías14
3.1.5 Sentencias15
3.1.6 Variables15
3.1.7 Estructura de decisión16
3.1.8 Ciclos repetitivos16
3.1.9 Arreglos (Arrays)17
3.1.10 Juegos interactivos18
3.1.11 Puzles19
3.1.12 Programación Extrema (XP)20
3.2 Marco Conceptual24
3.2.1 Unity24
3.2.2 Adobe Mixamo25
3.2.3 Adobe Fuse25
3.2.4 C#25
3.2.5 C++25
3.2.6 MySQL25
3.2.7 Entorno Virtual de Aprendizaje25
3.3 Revisión del Estado del Arte26
3.3.1 Análisis de las herramientas Unity y Blender para el desarrollo de video juegos
con enfoque educativo26
3.3.2 Videojuego educativo para ayudar a comprender los principios básicos de la
programación y desarrollar la habilidad lógica en niños de educación básica27
3.4 Diseño de la Solución28
3.4.1 Planificación29
3.4.1.1 Historias de Usuario29
3.4.1.2 Plan de entregas29
3.4.1.3 Plan de Iteraciones29
3.4.1.4 Reuniones diarias de seguimiento32
3.4.2 Diseño32
3.4.2.1. Simplicidad32
3.4.2.2 Manual de usuario36
4. Análisis y Discusión40
4.1 Análisis40
4.2 Discusión40
5. Recomendación41
6. Conclusiones42
Referencias43
Anexos47
Anexo 1. Encuestas realizadas a estudiantes de primer y segundo semestre de la
Universidad Cooperativa de Colombia.47
Anexo 2. Historias de Usuario54
LISTA DE TABLAS
Tabla 129
Tabla 229
Tabla 330
Tabla 430
Tabla 530
Tabla 631
Tabla 732
LISTA DE FIGURAS
Figura 133
Figura 233
Figura 334
Figura 4¡Error! Marcador no definido.
Figura 5 ................................................................................................................................. 30
Figura 6 ................................................................................................................................. 31
Figura 7 ................................................................................................................................. 31
1. Definición del Tema a Tratar
Para empezar, según (Fuentes Rosado & Moo Medina, 2017, pág. 1), para un
ingeniero de sistemas es obligatorio que aprenda a codificar algoritmos en algún lenguaje
de programación, sin embargo, estimular la lógica de programación no es un proceso tan
sencillo como lo es el resolver procesos matemáticos, o memorizarlos, dado a que según la
forma en la que se aplique, un problema se resolverá de distintas formas; unas más cortas
que otras.
Teniendo en cuenta que todo ingeniero debe aprender a programar, se realizó una
encuesta a los estudiantes de primer y segundo semestre de la Universidad Cooperativa de
Colombia con el fin de conocer su avance en el campo de la programación. Analizando las
respuestas, se puede evidenciar el interés por parte de los alumnos hacia los videojuegos y
mediante ellos facilitar el entendimiento sobre la programación dado a que a la mayoría de
las personas que empiezan a estudiar ingeniería de sistemas, les gustan los videojuegos.
Mediante la encuesta realizada, se da a entender que no a todos los estudiantes de la
carrera de ingeniería de sistemas se les facilita aprender a programar; todo esto es debido a
que en su camino de aprendizaje de bachillerato no se hizo énfasis en el arte de la
programación, por consiguiente se busca desarrollar un video juego, el cual será interactivo
para que los estudiantes de la Universidad Cooperativa de Colombia de primeros semestres
logren estimular su lógica y con ello se les facilite entender el flujo de la programación;
además, para los que se les dificulta programar, logren iniciar su camino en este arte sin
presentar demasiados conflictos a la hora de codificar.
Hablar del contexto “artístico” del código suena algo extraño, pero debemos
comprometernos en la búsqueda y experimentación de buenos trabajos que reflejen
el pensamiento creativo contemporáneo. Para ello debemos poder usar todas las
formas de expresión de la cultura contemporánea, y si nos preguntamos cuál es la
forma más pura del pensamiento creativo contemporáneo, pienso que es el código,
software es arte. (Barragán, 2008, pág. 5)
Por medio de este videojuego se quiere llegar a los estudiantes de primeros
semestres de la Universidad Cooperativa de Colombia por medio de puzles que, de manera
interactiva, estimulen y fortalezcan las bases del conocimiento en cuanto a la programación,
debido a que los estudiantes antes de ingresar a la universidad no se refleja un uso de algún
lenguaje de programación y dado a ello consideran la programación como un desafío.
El videojuego interactivo permitirá que los estudiantes de primeros semestres de la
Universidad Cooperativa de Colombia fortalezcan y estimulen su lógica de programación
con el fin de que puedan tener un mejor rendimiento académico.
Mediante la técnica de los puzles se puede estimular el aprendizaje de los conceptos
que se deseen enseñar sin la necesidad de que una persona los explique, además, si se
logran entender y aplicar, los estudiantes podrán reconocer y lo que han aprendido.
(Anguas, y otros, 2006)
Para lograr desarrollar este video juego, se analizarán las diferentes mecánicas de
puzles interactivos, los cuales permitan instruir al estudiante con el fin de que desarrolle
una agilidad en la solución de problemas. Se diseñará un entorno interactivo donde el
usuario pueda reconocer los diferentes usos de las sentencias más utilizadas en el lenguaje
de programación C++. Este desarrollo de software estará basado en diferentes bloques,
enfocados en la estimulación de la lógica conforme a las sentencias básicas usadas en el
lenguaje de programación C++.
1.1 Antecedentes
Según Bill Gates, fundador, filántropo y propietario de Microsoft “para programar
solo debes aprender a sumar o restar” (Code.Org, 2013), y también teniendo en cuenta una
frase de Mark Zuckerberg programador, fundador y propietario de Facebook:
Solo creo que tienes que empezar de a poco. Ese es uno de los mayores conceptos
erróneos sobre la informática y programación en general dado a que usted tiene que
aprender este gran cuerpo de información antes de poder hacer algo. No tienes que.
(Code.Org, 2013) .
Ambos empresarios muy representativos de la informática dan importancia a la
programación. Estas opiniones justifican la importancia de saber sobre algoritmia como
principio básico y primordial para programar sistemas operativos, programas aplicativos,
redes sociales, entre otras; y aunque al principio no es fácil comprender el tema de la
algoritmia, una vez aprendido se puede aplicar a cualquier proyecto: desde un sistema
operativo con una considerable cantidad de herramientas informáticas como Microsoft
hasta una red social con usuarios comunicados entre sí a nivel internacional como
Facebook. En conclusión, la dificultad para comprender la algoritmia se puede tratar desde
la niñez y en esta etapa de la vida y de la era digital donde los juegos están presentes, se
puede aprovechar un videojuego para que los niños tengan facilidad de aprender sobre la
algoritmia de una forma creativa y divertida.
Según Steve Jobs, cofundador y presidente ejecutivo de Apple Inc., todos
deberíamos aprender a programar, ya que programar te enseña a pensar y en algunos países
como China se aprobó un plan para que niños a partir de los 6 años comiencen a estudiar
programación (Esteve, 2012). En España se realizó un estudio que determinaba que el 76%
de los alumnos entre 12 y 16 años no manejan algún lenguaje de programación.(SINC,
2016).
Y en la pregunta de saber si es necesario que todos aprendan a programar, se
determina que no es necesario saber profundamente algún lenguaje como lo es Java, C++,
php, etc., sino saber algo básico como que es un algoritmo, o la estructura básica, para así
poder entender y aprovechar mejor las herramientas de los programas que se manejan en el
día a día.
En Colombia, el Ministerio de Tecnologías de la información y las Comunicaciones
(MinTIC) han lanzado diferentes campañas que fomentan al estudio de la programación,
una de ellas llamada “Yo puedo programar” que brinda cursos de programación gratuitos a
niños y jóvenes de 11 y 25 años, esto fue creado por Microsoft en alianza con MinTIC
(Ministerio de Tecnologías de la Información y las Comunicaciones, 2015) . En 2017 se
unió con la plataforma Platzi para la habilitación de cursos virtuales gratuitos, y se abren
cada vez más espacios que permiten enseñar a los jóvenes a interactuar con la tecnología,
para así facilitar la interacción entre el ser humano y las maquinas, generar interés por el
crecimiento tecnológico e igualar conocimientos. (Ministerio de Tecnologías de la
Información y las Comunicaciones, 2017)
2. Justificación
Conforme a los resultados obtenidos de las encuestas realizadas a los alumnos de
primer y segundo semestre de la Universidad Cooperativa de Colombia (Anexo 1Anexo 1,
se puede dar a entender que el 58,8% de los estudiantes de primer semestre no han
manejado un lenguaje de programación antes de entrar a estudiar la carrera, dado a esto, un
70,6% de los estudiantes consideran la programación como un reto dentro de la carrera
profesional, sin embargo este campo es al que más de la mitad de los estudiantes le llama la
atención con un 52,9%.
Dado a que al 43,5% de los estudiantes de segundo semestre de ingeniería de
sistemas de la Universidad Cooperativa de Colombia les parece regular la metodología de
aprendizaje en el campo de programación, un 39,1% considera la programación como una
materia que le generará dificultades en el transcurso de la carrera; este porcentaje a
comparación con el que se encuestó a los estudiantes de primer semestre de ingeniería de
sistemas, tiene un incremento considerable, ya que ningún estudiante de primer semestre de
ingeniería de sistemas considera la programación como un impedimento.
En cuanto la encuesta expuesta a los estudiantes de 1° y 2° semestre de ingeniería
de sistemas, la cual señala porque medio les gustaría prender a programar, se presenta un
incremento de estudiantes interesados en el aprendizaje por medio de un videojuego; se
puede evidenciar un aumento por parte de los estudiantes de 2° semestre a comparación con
los de 1° semestre. Basado en este interés y a que a mayoría de estudiantes les gustan los
videojuegos, se propone desarrollar un software el cual estimulará la lógica de
programación de los estudiantes de primer y segundo semestre la carrera de ingeniería de
sistemas de la Universidad Cooperativa de Colombia. Esto con el fin de dar a conocer un
software que incite al estudiante a estimular su lógica de programación por medio de
puzles, dado que en la evidencia expuesta por medio de encuestas se da a entender que los
estudiantes de 2° semestre presentan dificultad en lo relacionado a la programación.
Además de beneficiar a los estudiantes, dará a la universidad una herramienta propia de
apoyo en la formación profesional de sus estudiantes.
3. Desarrollo Organizado y Sistemático de la Revisión Bibliográfica
3.1 Marco Teórico
3.1.1 Algoritmo
El algoritmo es lo que siempre está presente en todo programa de computación, dado
que y según Francisco Noguera y Daniel Terren como muchos otros artículos y libros señalan
“los algoritmos son el resultado de aplicar el razonamiento a un problema: los pasos que hay
que seguir para resolver una situación en concreto.” (2013, pág. 115). Además, un algoritmo
no solo tiene el propósito de solucionar un problema en concreto, sino que puede llegar a
solucionar más de uno, cómo se puede expresar:
Un algoritmo constituye una lista bien definida, ordenada y finita de operaciones,
que permite encontrar la solución a un problema determinado. Dado un estado inicial
y una entrada, es a través de pasos sucesivos y bien definidos que se llega a un estado
final, en el que se obtiene una solución o varias. (Juganaru, Introducción a la
programación , 2014, pág. 2)
Los algoritmos son un aporte clave y primordial en el desarrollo de todo proyecto
enfocado al software, como es en nuestro caso. Los algoritmos deben ser de carácter preciso,
esto quiere decir que no importa que tanto se ejecute, siempre debe dar el mismo resultado.
Son finitos esto quiere decir, debe terminar en algún momento. (Vásquez, s.f.).
Entre las categorías que abarcan los algoritmos se encuentran los secuenciales,
condicionales y repetitivos. Estos, se pueden representar a su vez de dos maneras, ya sean de
carácter cualitativo o cuantitativo. Los algoritmos son vistos en la vida cotidiana, no importa
el idioma siempre tiene el fin de expresar una serie de pasos para un fin. Como lo hace notar
Vásquez en una de líneas de texto “Una receta de un plato de cocina se puede expresar en
español, inglés o francés, pero cualquiera sea el lenguaje los pasos para la elaboración del
plato se realizarán sin importar el cocinero.”. (salas, 2003).
3.1.2 Lenguaje de programación
Un lenguaje de programación es un lenguaje computacional que lo conforma un
conjunto de órdenes que trabajan al unísono, para el procesamiento de acciones consecutivas,
algoritmos y datos. Como define Enrique Quero en su libro: “Son conjunto de ordenes
(instrucciones y sentencias) diseñados y creados a través del razonamiento lógico y
almacenados en ficheros, respetando la sintaxis de un determinado lenguaje de
programación.” (2002, pág. 2). Estos programas tienen el fin de controlar el comportamiento
ya sea, físico o lógico de un software o una máquina. Todo lenguaje de programación tiene
a su disposición diferentes variables, métodos y funciones definidas por defecto, las cuales
facilitarán la formación de la estructura que llevará un orden lógico. Dado que las
computadoras poseen un lenguaje de máquina propio y al poseer nosotros un programa
escrito en lenguaje de programación, esto nos facilita la comunicación de los ordenadores.
Dado como se muestra en las siguientes líneas:
Los lenguajes de programación nos facilitan la comunicación con los ordenadores, ya
que nos ahorran tener que saber escribir código máquina. Éste es muy complejo y
tiene más en cuenta la estructura y la arquitectura del ordenador que el tipo de
problema que se tiene que resolver. (Javier Francisco Otera Noguera, 2013, pág. 29)
Un lenguaje de programación, el cual, a su vez, está definido por su sintaxis, que
establece e indica las reglas de escritura (la gramática), y por la semántica de los
tipos de datos, instrucciones, definiciones, y todos los otros elementos que
constituyen un programa. Un lenguaje de programación es un caso particular del
lenguaje informático; este último permite hacer programas, pero también describir
datos, configuraciones físicas y protocolos de comunicación entre equipos y
programas. (Juganaru, 2014, pág. 5)
De esta manera y por medio de los lenguajes de programación podemos hoy en día
crear software útil para la sociedad, desde videojuegos, aplicaciones web, API’s, entre otras.
Gracias a los lenguajes de programación nos brinda la oportunidad de desarrollar e innovar
nuevas tecnologías para el bien de personas o compañías.
3.1.3 Programación Orientada a Objetos (POO)
La programación orientada a objetos es conocida por ser uno de los paradigmas de la
programación en la cual se pueden modular partes del código de un proyecto. Nace con la
necesidad de la reutilización de código y la disminución de tiempo en el desarrollo de
software que a diferencia con la programación estructural. Como se puede plantear a
continuación: “La programación orientada a objetos es una de las técnicas más modernas que
trata de disminuir el coste del software, aumentando la eficiencia en la programación y
reduciendo el tiempo necesario para el desarrollo de una aplicación.” (Sierra, 2007). La
programación orientada a objetos tiene también como fin la maquetación o estructuración de
objetos físicos de uso cotidiano, llevándolo a lo digital. Estos se expresan por medio de
bloques, que encierran las características y las funciones que realizan.
Un objeto representa un concepto dentro de un programa y tiene la información
necesaria para abstraerlo: los datos que describen su estado y las operaciones que
pueden modificar este y determinan las capacidades del objeto. Los objetos tienen
un tiempo de vida (existen mientras está en ejecución el programa) y un
comportamiento, en el que los programas interactúan con los objetos mediante
interfaces de otros objetos. (López, 2014, pág. 105)
Una clase es una plantilla para crear objetos que constituye una abstracción del
mundo real, como la clase Burro, la clase persona, la clase cuenta, etcétera. Las
clases se nombran sustantivos en singular y poseen variables que definen la
información que se desea almacenar y métodos que definen las acciones que se
desean realizar. Las variables se nombran sustantivos y los métodos como verbos en
infinitivo. (Oviedo, 2015, pág. 207)
La programación orientada a objetos hoy en día es uno de los paradigmas más
utilizado ya que como se mencionó anteriormente nos ahorra tiempo a la hora de escribir
código. Además, nos permite la reutilización de este y no sigue una secuencia estructural,
sino que todo está encapsulado por medio de módulos (clases) para de esta manera poder
usarse en cualquier lugar sin seguir una secuencia explícita en la estructura del código.
También hay que resaltar que la programación orientada a objetos tiene un mayor grado de
dificultad a comparación con la programación estructural.
3.1.4 Librerías
Las bibliotecas o librerías nos proporcionan acceso a elementos de mucha
importancia en los lenguajes de programación. Estas librerías se encuentran en diversos
lenguajes como por ejemplo C++. Al contar con un cierto número de módulos en su interior
con funciones y procedimientos que son útiles a la hora de programar. Dando el chance de
ser usadas en cualquier momento, esto quiere decir que podemos reutilizar la librería
cuantas veces queramos sin necesidad de volver a escribir código. Cada librería en su
interior posee un cierto contenido de funciones las cuales son usadas dependiendo el tema
en específico, ya sea de carácter matemático, gráfico, salida o entrada, etc. Así lo afirma en
su libro Jordi Gómez y compañía: “Las bibliotecas de funciones nos proporcionan el acceso
a elementos muy importantes para la implementación de cualquier programa como pueden
ser los que nos permiten realizar entradas (por el teclado) y salida (por la pantalla),
operaciones, matemáticas, etc.” (Pere-Pau Vazquesz Alcocer, 2006, pág. 51).
Existen dos tipos de librerías las estáticas y las definidas por el programador. Las
estáticas, son las librerías que facilitan la programación, desde permitir el acceso de
periféricos físicos, modos gráficos, procesos matemáticos, etc. Las librerías fijas son
aquellas que son creadas por el desarrollador. Toda librería tiene un nombre que lo
identifica de las demás y disponen de diferentes tipos:
Librerías en código fuente: Vienen escritos en el lenguaje de programación usado.
Librerías compiladas: Son maduros objetos de la librería con el programa ya
compilado.
Librerías Dinámicas: Estas librerías son las que se encuentran el sistema operativo
Windows, son completamente independientes del programa.
Dependiendo de lo que se quiera realizar en un programa se pueden usar este tipo de
librerías o inclusive pueden ser creadas por los mismos usuarios. Cómo lo resalta Luisa
Villar y compañía:
Las librerías pueden ser creadas por usuarios o pueden venir definidas en las
herramientas que usamos para programar. Las librerías no incluyen un programa
simplemente deben hacer referencia al traductor para que se incluya dicha librería y de esta
manera puedan ser usadas sus funciones directamente (Luisa Garzón Villar, 2004, pág.
188).
3.1.5 Sentencias
Todo lenguaje de programación abarca en la serie lenguaje que posee unas
determinadas reglas por defecto, ya que por medio de esta se pueda teclear en lenguaje
natural, la lógica que interpretará el computador. Los lenguajes de programación tienen
desde sentencia de escritura, lectura, asignación de variables, estructura de decisión,
estructuras de repetición, etc.
3.1.6 Variables
Dado que las personas no pueden entender el lenguaje de máquina surgieron los
lenguajes de programación y con esto se desarrollaron las variables. Las variables son un
medio por el cual el ser humano puede asignar una porción de memoria en la cual se desea
almacenar información: “Como nosotros los humanos no manejamos la información de la
misma forma de los computadores, preferimos asignar etiquetas a la parte de la memoria
donde queremos guardar información y a estas etiquetas le llamamos variables.” (Razif,
2016).
Las variables dependientes del lenguaje de programación pueda que se declaren de
diferente manera, pero su significado en general siempre va a especificar lo mismo. Se
pueden encontrar desde variables de tipo entero, carácter, boolean, Strings, double, float,
constantes, etc.
Tipos de variables básicas:
Enteras: Al declarar un tipo este tipo de variable se guardará un número entero
Carácter: Esta variable este tipo de variable almacenará en su interior caracteres
(letras, Símbolos especiales, etc.).
Boolean: Este tipo de variable almacena sólo dos posibles valores el 1 y el 0
Double: Este tipo de variable almacena en su interior el número decimal de mayor
tamaño.
Float: Esta variable en su interior almacena el número decimal.
Constantes: Estas se caracterizan porque al declararse una variable con un dato en
específico, no se puede alterar, siempre tendrá el mismo valor declarado en un principio.
Hay que tener presente que cada variable al ocupar un espacio memoria ocupa cierta
cantidad de bytes. Además, cada variable tiene un límite de almacenamiento de bytes. “Una
variable sin importar el lenguaje de programación, es un espacio de memoria que contiene
un valor una variable tiene un nombre que se utiliza en la programación para hacer
referencia a un espacio de memoria en particular” (Arias, 2004, pág. 20).
3.1.7 Estructura de decisión
La estructura de decisión o estructura condicional es aquella que ejecuta una acción
de acuerdo con el valor asignado con anterioridad. De acuerdo este valor asignado puede
tomar dos posibles caminos. Este tipo de estructura está presente en todo lenguaje de
programación dado que es uno de los básicos y de mucha utilidad a la hora de asignar un
valor dado si toma un valor diferente al esperado.
Esta estructura decisión se puede declarar por medio del if y else. En algunos lenguajes de
programación podemos encontrar este esta estructura decisión más comprimida como en el
caso de PHP.
Si se encuentra que la condición es diferente de 0 entonces ejecutar la acción y
luego sigue con la próxima instrucción en el programa se encuentra que las
condiciones 0 no ejecuta la acción y sigue con la próxima instrucción en el
programa. (Santamaria, 1991, pág. 60)
Esta estructura condicional evalúa el dato entrante y al evaluarlo por medio del
asignado en dicha condición. Esta evaluará por cuál camino o ruta Cumple con dicha
sentencia. Esta sentencia también puede contar en su interior con otra sentencia, que son
conocidas como condicionales anidados. En las cuales se puede definir sí se cumple una
condición eso conllevaría a tomar otra decisión. Como lo expresa Becerra en su libro: “Las
instrucciones que se considera son controladas por un if, pueden incluir otras instrucciones
if en este caso se dice que las instrucciones if anidadas son una condición inicial que en su
interior posee otras posibles condiciones” (Santamaria, 1991, pág. 73).
Estructuras condicionales son una parte importante a la hora de programar van
desde la estructura simple del “if else” hasta las condicionales anidadas. También podemos
encontrar en múltiples lenguajes de programación, como el denominado “switch case”. El
switch case, es la parte simplificada del if anidado. Esto nos puede garantizar una mayor
facilidad a la hora de declarar múltiples condicionales y además de esto nos permite ahorrar
memoria a comparación con el if anidado. “El switch case nos permite seleccionar una
opción entre un conjunto de opciones de acuerdo el valor de algún parámetro” (Santamaria,
1991, pág. 79).
3.1.8 Ciclos repetitivos
Las estructuras repetitivas tienen la función repetir una condición n veces hasta que
se cumpla lo declarado. A esta repetición se le conoce como bucle y está presente en 3 tipos
de estructuras repetitivas while, do-while y For: “Estas estructuras de control o sentencia
repetitivas controlan el número de veces que una sentencia o lista de sentencias se ejecutan”
(Zahonero Ignacio Martinez, 2005, pág. 195). Estas 3 estructuras repetitivas poseen la
misma calidad anteriormente mencionada, pero a la hora de usarse se debe declarar de una
forma específico. Por ejemplo, la estructura do-while al declararse una sentencia, puede que
se ejecute una o más veces dependiendo de la decisión que tome internamente la máquina.
La diferencia de esta estructura con el For y el while radica en que, si la condición
no se cumple desde un primer momento, el buque se habrá ejecutado una sola vez,
es decir en la estructura do while el bucle se puede ejecutar una o más veces
(Didact, 2005, pág. 35)
Las estructuras repetitivas con los ciclos repetitivos son estructuras fundamentales y
básicas en la incursión de cualquier tipo de lenguaje de programación. Hoy día se han
añadido ciclos de sintaxis más corta, pero que cumplen con el mismo fin. Estos ciclos como
por ejemplo en los lenguajes javascript y PHP, se incluyen una estructura denotada como
Foreach y for in.
3.1.9 Arreglos (Arrays)
Un arreglo o array, es aquel que puede guardar en su interior cierta cantidad de
datos según se le defina su tamaño estos datos almacenados pueden ser de carácter entero
decimal y flotante. Los arreglos se caracterizan debido a que en cada índice se puede
ocupar un dato en memoria, comenzando desde la posición 0 hasta la posición n. Estos son
usados y se catalogan en dos tipos de arreglo unidimensional y arreglo bidimensional. “Un
array se declara de modo similar a otros tipos de datos excepto que se puede indicar al
compilador el tamaño y longitud del array” (C algoritmos, 2005, pág. 137). Existen dos
tipos de arreglos los unidimensionales y los multidimensionales:
Arreglos unidimensionales: Estos arreglos son los básicos en programación dado
que se caracterizan por poseer un solo índice, estos arreglos son similares a los vectores
usados en matemáticas dados que solo poseen una dimensión. Ejemplo: Vectores.
Arreglos bidimensionales: Estos arreglos se caracterizan porque en cada elemento
en su interior está ubicada en una fila y una columna, esto quiere decir, cada elemento tiene
una posición que se identifica mediante dos índices la fila y la columna. Comenzando desde
el índice 0,0 hasta finalizar en el índice n,n dependiendo del tamaño definido. Ejemplo:
Matrices.
En definitiva, los arreglos un unidimensionales y bidimensionales son una parte
esencial en la programación para principiantes dado que esta unidad comienzo a que las
personas interactúen en cómo funcionan los espacios de memoria en un programa:
Un arreglo unidimensional posee un nombre (un identificador), un tipo y una
dimensión. El nombre de un arreglo es un identificador del programa, el cual debe ser el
único al interior del bloque de definición. El tipo, por su parte, es un tipo escalar estándar,
un tipo apuntador o cualquier otro tipo definido por el programador; en este caso, se
excluye el tipo void. La dimensión es un número entero positivo que indica el tamaño del
arreglo. (Juganaru, 2014, pág. 148)
Un array bidimensional (tabla o matriz) es un array con dos índices, al igual que los
vectores que deben ser ordinales. Para localizar o almacenar un valor en el array se deben
especificar dos posiciones (dos subíndices), uno para la fila y otro para la columna.
(Joyanes, 2006, pág. 365).
Para finalizar los arreglos con esenciales para todo programador, ya que con estos
nos evitan el declarar muchas variables. En vez de esto con sólo una variable podemos
ingresar datos en una posición diferente. En la actualidad ya hay lenguajes de programación
como por ejemplo Python, el cual permite que se almacenen valores mixtos dentro de los
arreglos, esto quiere decir enteros y de tipo carácter.
3.1.10 Juegos interactivos
Los juegos interactivos son aquellas actividades universales que se caracterizan por
su singularidad a la contribución del desarrollo social, cognitivo y afectivo de las personas.
Los juegos interactivos desarrollan en niños y personas jóvenes desde habilidades de
comunicación, procesamiento al interpretar información.
La obra y la interacción con los juegos permiten que el niño aprenda reglas y
acciones impulsivas por placer. De este modo, los juegos actúan para él como
elementos mediadores entre el conocimiento ya cristalizado, construido, presente en
el nivel de desarrollo real, y las posibilidades y potencialidades existentes en la
Zona de Desarrollo Proximal (ZDP). (Gama, 2017, pág. 24).
Cómo se ha escrito con anterioridad los autores les quieren expresar qué gracias a la
interacción con los juegos, se permite que los niños aprendan reglas, se impulse su
desarrollo cognitivo, lingüístico y psicomotriz qué le será de gran ayuda a medida que vaya
creciendo. Los juegos interactivos también permiten que las personas y niños, adquieran
una mejor comprensión y atención a lo que le rodea, en el ámbito escolar o social (Garcia,
2020) . Por esta razón la importancia de los videojuegos en el desarrollo de niños es
importante dado que por medio de estos aprenden de forma interactiva.
Por esa razón, actualmente los videojuegos son una fuente de reconocimiento dado
que en estos se pueden inculcar ya sea desde historias, hechos científicos para fomentar la
imaginación e impulsar el desarrollo y el interés propio hacia un tema en particular:
Los videojuegos como una compleja mezcla de tecnología arte y narrativa en la que
se desarrollan integran elementos interactivos de diseño arte gráfico-música y calidad
industrial. Además, es la combinación que permite que a comienzos del siglo 21 los vídeos
del proyecto como un sector relevante dentro de la industria cultural promoviendo un solo
interés por parte de consumidores y empresas y 9 personas de las áreas académicas y de
investigación (Ángel Torres-Toukoumidis, 2010, pág. 20).
Como sea es expresado en citaciones anteriores, los videojuegos son parte cultural
actual del mundo. Dado que ya no son sólo una fuente de entretenimiento sino una fuente
educativa que además impulsa el desarrollo de diferentes destrezas humanas en los jóvenes
y niños de la actualidad. Ya que ahora estamos rodeados de medios tecnológicos, los
videojuegos ahora son un medio de aprendizaje moderno dejando atrás las antiguas
metodologías de aprendizaje.
3.1.11 Puzles
Los puzles son una forma de entretenimiento el cual su objetivo principal es
resolver una serie de acertijos, rompecabezas o pequeños juegos de habilidad qué
fortalezcan el desarrollo cognitivo en niños y en personas. Además, estos puzles ofrecen el
desarrollo lógico, psicomotriz y de memoria. Existen algunos puzles que se caracterizan por
ser juegos de habilidad y acción los cuales se caracterizan por resolverse a un ritmo muy
rápido que conlleva a la capacidad de respuesta y reflejos de forma más ágil. Existen otro
tipo de puzles que no conllevan una rápida acción de juegos, sino que su finalidad está más
enfocada a la reflexión y al pensar de manera más consciente.
Los puzles son videojuegos basados principalmente en acertijos, rompecabezas, y
pequeños juegos de habilidad. Estos juegos suelen tener una única solución válida por lo
que el campo de posibilidades de actuación creativa del jugador se ve muy reducido. Sin
embargo, es interesante comprobar cómo el reto y la curiosidad por descubrir la solución
actúan como un aliciente para aprender y promueven el aprendizaje (Morales, 2015, pág.
96).
La primera entrega de estos juegos de aprendizaje se remonta al uso de piezas
plásticas, madera o papel. Los cuales se caracterizan por poseer una forma singular con las
cuales encajan entre sí. El objetivo principal de este tipo de juegos es que por medio de
estas figuras se armara otra figura más grande que la que se conformaba. Principalmente
estos juegos eran usados por niños de temprana edad, pero al pasar de los tiempos esta
metodología de juegos de aprendizaje se ha inculcado en diversos videojuegos como, por
ejemplo: Tetris y Dr Mario. Estos juegos son muy populares dado que tiene la
denominación de ser de lógica e inteligencia, en la cual exige a los jugadores ejercer una
gran agilidad mental y motriz. Entre los diferentes desafíos qué presentan dichos puzles,
pueden ir desde problemas matemáticos, lógicos e incluso reconocimiento de patrones.
Conocido lo anterior y citando a Agustín Marrero estos puzles no sólo desarrollan
habilidades en niños, sino que además como comenta en su libro, es una estrategia para el
aprendizaje de estudiantes de ingeniería dado que como él resalta la principal falencia de
los jóvenes al embarcarse en la programación es la falta de un pensamiento estructural.
Además, por medio de estos puzles permitirá la mejora de habilidades matemáticas y la
resolución ante problemas.
La metodología de aprendizaje basado en puzles tiene como objetivo el fomentar en
estudiantes de ingeniería e ingeniería informática, el pensar en cómo estructurar y resolver
problemas que normalmente no se encuentran en los libros de texto tradicionales en la
materia. El objetivo es motivar al estudiante mientras se incrementa sus habilidades
matemáticas y de resolución de problemas mediante la discusión de una variedad de
problemas de la materia expresados en forma de puzles y sus estrategias de solución. (Darias,
2014, pág. 193).
Por medio de puzles no sólo podemos llegar a las estudiantes de ingeniería, sino que
además podemos fomentar a la demás población a él desarrollo de un pensamiento
estructural. Dado que cómo se nombró con anterioridad los puzles sirven para desarrollar
muchas habilidades cognitivas que posee el ser humano pero que no se han pulido o
descubierto.
3.1.12 Programación Extrema (XP)
Más conocida como “Extreme Programming”, es una metodología ágil la cual se
basa en la simplicidad y agilidad para realizar un proyecto, el cual puede ser realizado por 2
personas o más:
La metodología XP define cuatro variables para cualquier proyecto de
software: costo, tiempo, calidad y alcance. Además, se especifica que, de
estas cuatro variables, sólo tres de ellas podrán ser fijadas arbitrariamente
por actores externos al grupo de desarrolladores (clientes y jefes de
proyecto). El valor de la variable restante podrá ser establecido por el equipo
de desarrollo, en función de los valores de las otras tres. Este mecanismo
indica que, por ejemplo, si el cliente establece el alcance y la calidad, y el
jefe de proyecto el precio, el grupo de desarrollo tendrá libertad para
determinar el tiempo que durará el proyecto. (Joskowicz, 2008, pág. 7).
3.1.12.1 Valores
XP maneja 4 valores los cuales deben tenerse presente a la hora de realizar el
proyecto para que este tenga éxito:
Comunicación: En todo ámbito la comunicación es un factor bastante importante
ya que, por medio de esta, se intercambia o comparte información y por ello los procesos se
vuelven más claros. En XP es un valor esencial debido a que todo el equipo de trabajo debe
mantenerse informado conforme a las decisiones del cliente ya que pueden suceder cambios
en el modelo del proyecto.
Simplicidad: Todos los procesos deben ser entendibles en el proyecto y por ello se
debe realizar de la forma más sencilla, para que todos entiendan ya sean los procesos o el
código.
Retroalimentación: Esta debe ser permanente debido a que el cliente es el que la
debe brindar con el fin de tomar decisiones para las próximas iteraciones sobre el proyecto
y para cerciorarse del cumplimiento de sus necesidades.
Coraje: Se deben tomar decisiones conforme a los procesos del proyecto así se
tengan pérdidas ya que, si es necesario el cambio, se tiene que generar.
3.1.12.2 Ciclo de vida de Software en XP
XP propone desarrollar un ciclo de vida de software dinámico dado a que, en la
mayoría de los casos, al inicio del proyecto, los clientes no determinan la totalidad de los
requerimientos del proyecto. Por esa razón, XP maneja ciclos de desarrollo cortos
denominados iteraciones, esto con el fin de que en cada iteración se realice un análisis,
diseño, desarrollo y pruebas las cuales debe cumplir con los estándares de la metodología
(Joskowicz, 2008).
En XP se maneja la fase de exploración que es la que fija el alcance del proyecto,
las necesidades del cliente las cuales son plasmadas en las historias de usuario con el fin de
que se obtenga un tiempo estimado sobre el desarrollo de estas; el objetivo de esta fase es
definir una visión del proyecto. Luego de esta fase, viene la fase de planificación, en ella se
realizan reuniones con todos los integrantes del proyecto se reúnen con el fin de acordar un
orden de entrega conforme a las historias de usuario, su objetivo es formar el plan de
entregas o “Release Plan.” Finalmente, viene la fase de iteraciones, las cual se basan en el
desarrollo y las pruebas funcionales de las historias de usuario de acuerdo al orden
establecido (Rivera Meza, 2017).
Un proyecto se inicia con una fase de exploración donde se sientan las bases
para que sea exitoso su desarrollo. El plan de entrega a seguir es concebido durante
la planificación, con la participación del cliente y los desarrolladores. A
continuación, tienen lugar una serie de iteraciones que no concluyen hasta obtener
una primera versión del sistema, o una primera entrega que es lo mismo. (Ramírez,
2008, pág. 3)
3.1.12.3 Planificación
La planificación es la fase donde el cliente desarrolla las historias de usuario, el plan
de entregas, el plan de iteraciones y las reuniones diarias de seguimiento con el equipo del
proyecto, esto con el fin de darle una visión a corto, mediano y largo plazo al mismo.
3.1.12.3.1 Historias de Usuario
Son documentos que sustituyen a los casos de uso debido a que son descripciones
realizadas por parte del cliente las cuales brindan la información y el comportamiento que
debe tener el sistema de forma funcional. Mediante esta, los desarrolladores deberán
estimar el tiempo de desarrollo de lo que el cliente solicite (Joskowicz, 2008, pág. 10). El
valor de comunicación es muy importante en el desarrollo de las historias, ya que cuando se
empiecen a desarrollar, el desarrollador debe tener comunicación constante con el cliente
para que le brinde los detalles de lo que se desea hacer.
3.1.12.3.2 Plan de Entregas (Release Plan)
Es un cronograma donde el cliente planificará las iteraciones del proyecto conforme
a las historias de usuario y su complejidad; este deberá ser estudiado por el cliente, el
equipo de gestión y el equipo de desarrollo ya que en este se estimará el tiempo y cualquier
dato que no se cumpla en el tiempo establecido, afectará el rendimiento del proyecto. Es
recomendable realizar varias iteraciones dado a que en caso de que se genere un error,
habrá tiempo para resolverlo en alguna de estas iteraciones (Ferrer, 2002, pág. 4).
3.1.12.3.3 Plan de Iteraciones (Iteration Plan)
En XP un ciclo de iteración es la planificación del orden en el que se ejecutará el
desarrollo de cada historia de usuario, esta planificación se debe dar al comienzo del ciclo.
Estas historias de usuario irán relacionadas con una iteración escalada por prioridad, en esta
iteración se adjuntarán las historias de usuario que no han sido aprobadas en iteraciones
anteriores. Al final de un ciclo de iteración, todas las historias de usuario deben ser
probadas con el fin de que cumplan con los criterios de aceptación del cliente y no afecte el
desarrollo de ciclos anteriores.
Según (Joskowicz, 2008), las pruebas de aceptación que fallen en un ciclo anterior
deben ser analizadas para generar su corrección para que así se garantice que no vuelvan a
fallar.
3.1.12.3.4 Reuniones Diarias de Seguimiento (Stand-Up-Meeting)
Son reuniones que se realizan con el fin de que se mantenga una comunicación
grupal en la cual se compartan problemas y soluciones (Echeverry Tobón & Delgado
Carmona, 2007, pág. 33).
Ya depende de la estructura del proyecto la forma de realizarla, ya sea online o presencial.
3.1.12.4 Diseño
XP se apoya en su valor de la simplicidad al realizar el diseño, los conceptos que
sobresalen de este diseño a parte de la simplicidad son las soluciones puntuales (Spike
Solution), recodificación y las metáforas.
3.1.12.4.1 Simplicidad
En el diseño, la simplicidad se plasma al realizar un diseño de un modelo sencillo
pero que cumpla con los requerimientos del cliente.
3.1.12.4.2 Soluciones Puntuales (Spike Solution)
Cuando el equipo se enfrenta a un problema de diseño o implementación conforme
a una historia de usuario, el equipo podrá acudir a la herramienta de soluciones puntuales,
esta herramienta es una pequeña aplicación con la cual se intentará explorar el programa
para validar el grado de dificultad de la solución para así encontrarla (Echeverry Tobón &
Delgado Carmona, 2007, pág. 37).
3.1.12.4.3 Recodificación
Cuando se termina de escribir el código de un programa, es recomendable volverlo
a codificar de una forma más clara si es posible. XP sugiere recodificarlo para que cada vez
que se realice este proceso, el código será más fácil de entender, más eficiente y se acople a
la lógica de negocio que se implementará en el programa (Joskowicz, 2008, pág. 12).
3.1.12.4.4 Metáforas
El equipo debe plasmar la arquitectura del sistema en una “historia” con la cual el
grupo de desarrollo tenga una visión sobre el proyecto para que así se acoplen a este y
puedan reconocer los aspectos más importantes del sistema (Echeverry Tobón & Delgado
Carmona, 2007, pág. 37).
3.1.12.5 Desarrollo del Código
El código al igual que el diseño debe ser entendible y claro para todo el
equipo. Para el desarrollo es crucial contar con la disponibilidad del cliente, el uso de
estándares, la programación dirigida por las pruebas, la programación en pares, las
integraciones permanentes, la propiedad colectiva del código y el ritmo sostenido.
3.1.12.5.1 Disponibilidad del Cliente
XP requiere al cliente como parte del grupo del proyecto y que este tenga la
disponibilidad para cuando se requiera; el cliente es primordial para que un proyecto se
pueda llevar a cabo mediante la metodología XP. Cuando el proyecto inicial, el cliente es el
que debe brindar las historias de usuario; sin embargo, al no ser tan precisas para su
desarrollo, el cliente debe brindar los detalles necesarios a los desarrolladores para que se
pueda codificar lo que el cliente necesita y así evitar inconformidades a futuro y
desperdicio de tiempo con solicitudes de mejora (Joskowicz, 2008, pág. 13).
3.1.12.5.2 Uso de Estándares
Se requiere el uso de estándares para que el código sea entendible y más fácil de
recodificar.
3.1.12.5.3 Programación Dirigida por las Pruebas (Test-Driven-Programming)
XP propone realizar un desarrollo de código con base a pruebas unitarias, esto con
el fin de que se tengan todos los posibles errores controlados aplicando buenas prácticas y
así generar bloques de código limpios.
3.1.12.5.4 Programación en Pares
El desarrollo de parejas en XP aplica el valor de la comunicación, ya que hay una
mayor interacción entre los desarrolladores y se logra un mejor ambiente laboral, una mejor
productividad y cada desarrollador adquiere conocimiento de su pareja:
XP propone que se desarrolle en pares de programadores, ambos trabajando
juntos en un mismo ordenador. Si bien parece que ésta práctica duplica el
tiempo asignado al proyecto (y, por ende, los costos en recursos humanos),
al trabajar en pares se minimizan los errores y se logran mejores diseños,
compensando la inversión en horas. El producto obtenido es por lo general
de mejor calidad que cuando el desarrollo se realiza por programadores
individuales. (Joskowicz, 2008, pág. 13).
3.1.12.5.5 Integraciones Permanentes
Se debe trabajar mediante un sistema de control de versiones para que los
desarrolladores siempre desarrollen sobre la versión actual del sistema la cual no contenga
errores. XP propone que solo una pareja de desarrolladores debe integrar al mismo tiempo.
3.1.12.5.6 Propiedad Colectiva del Código
Todo el equipo de XP tiene la potestad de cambiar el código si es necesario, así
como realizar una mejora o una recodificación, esto con el fin de que el código cada vez sea
más sencillo y que el equipo se apropie de todo el código y lo pueda modificar en caso de
ver oportunidades de mejora. Hay que aclarar que estos cambios deben cumplir con lo
requerido por el cliente. (Joskowicz, 2008, pág. 14).
3.2 Marco Conceptual
3.2.1 Unity
Unity es un motor gráfico 2D, 3D gratuito el cuál se opera mediante el lenguaje de
programación C#. Por medio del enfoque que se quiera dar, se pueden desarrollar
aplicaciones interactivas, video juegos y animaciones en 2D o 3D. Además, las assets store
de unity, proporcionan una amplia variedad de modelados y texturas gratuitos que facilitan
la implementación en ambientes en videojuegos.
Unity se estructura mediante el manejo y la creación de escenas para el desarrollo de
la aplicación deseada, una escena puede ser cualquier parte del juego o la
animación, ya sea un nivel del juego o un área determinada. Se empieza con un
espacio en blanco en el cual se puede dar forma a todo lo que se desee crear usando
las herramientas de Unity. Este motor de Unity incluye además un editor de
terrenos, donde se puede esculpir la forma del terreno usando las herramientas
visuales que ofrece Unity, se puede pintar, texturizar, añadir hierba, colocar árboles
o similares, o inclusive se permite la importación de otros materiales provenientes
de otros motores de desarrollo. (Cerón Cardona & Bedoya Herrera, 2017).
3.2.2 Adobe Mixamo
Mixamo es una página web la cual permite crear o editar animaciones para
personajes 3D creados en otros programas. Con el fin de que se puedan descargar y utilizar
en algún motor gráfico (Adobe, 2019) .
3.2.3 Adobe Fuse
Fuse es un programa que funciona para diseñar personajes 3D los cuales se pueden
personalizar mediante una biblioteca de recursos de texturas de alta calidad con el fin de ser
exportador ya sea a un motor gráfico o a alguna herramienta de adobe (Adobe , 2020).
3.2.4 C#
C# es uno de los lenguajes de programación de alto nivel que pertenece a “.NET”.
Es una evolución de C/C++. Con este lenguaje se pueden escribir tanto programas básicos
como programas avanzados para ser implementados en internet. Este lenguaje permite usar
interfaces gráficas o textuales, ya depende del uso que se le desee dar (Sierra, Microsoft C#.
Curso de Programación. 2ª edición, 2011).
3.2.5 C++
Es un lenguaje de programación que proviene del lenguaje de programación C. Este,
tiene la potencia de procesamiento que le falta a C para ejecutar lenguajes de nivel superior.
C++ agrega capas de abstracciones y de objetos, para agregarlas, debe utilizar Linux.
También permite a los desarrolladores extender el código de programación para código lot
y embebido. C++ ha inspirado a otros lenguajes de programación como lo son Java,
Phyton, C#, entre otros (GlobalData plc, 2016).
3.2.6 MySQL
Es un sistema de gestión de base de datos relacionales que usa el lenguaje estándar
SQL. Se destaca entre varios gestores de bases de datos ya que sus características son la
velocidad, estabilidad y fiabilidad en el manejo de datos. Tiene bastantes usos para
almacenar diferentes tipos de información y es utilizado para el desarrollo de páginas web
dinámicas, portales web, sitios web y también para páginas web pequeñas (Niederauer,
2005).
3.2.7 Entorno Virtual de Aprendizaje
Es un espacio educativo alojado en el internet el cual está conformado por un
conjunto de herramientas informáticas que posibilitan la interacción didáctica. Está
constituido por dos dimensiones, una dimensión tecnológica que es la que le brinda las
herramientas o aplicaciones informativas con las cuales es posible construir el entorno y la
dimensión educativa la cual es la que representa el proceso de estimulación de aprendizaje
(Salinas, 2011).
3.3 Marco legal
Para el desarrollo de este videojuego se usó el motor Unity básico, esta con la licencia de
estudiante que proveen. De igual manera, se utilizó los recursos gratuitos que nos ofrece
unity en su asset store desde texturas y modelados para el ambiente. También, de las
páginas ambientcg.com, hdrihaven.com, es.cooltext.com y free3d.com, se hizo uso de las
texturas y modelos gratuitos. Para la parte de personajes, se usaron del sitio de adobe
Mixamo las animaciones del personaje y creación de este. Para la parte de sonidos y
ambientación se hizo uso de los recursos sin copyright de los sitios Infraction - No
Copyright Music, soundcloud.com y premiumbeat.com.
Se hacen las menciones de estos sitios, para enfatizar que, de acuerdo con el
cumplimiento de las políticas de uso mostradas en estos sitios visitados, no se usara estos
recursos con finalidad de lucro, sino al contrario de manera educativa para la obtención de
título profesional como ingeniero de sistemas.
3.3 Revisión del Estado del Arte
Se relacionan las investigaciones relacionadas con el análisis y desarrollo de video
juegos interactivos dirigidos a un público en especial con el fin de que la persona que
interactúe con el programa pueda estimular su lógica y aspectos cognitivos.
3.3.1 Análisis de las herramientas Unity y Blender para el desarrollo de video
juegos con enfoque educativo
El video juego educativo se considera un género independiente de los demás
géneros de video juegos. El desarrollo de un video juego requiere de creatividad,
organización ya que en este tipo de desarrollos se exige experiencia para abarcar todos los
objetivos y también es necesario tener las herramientas adecuadas para poder plasmar lo
requerido con el diseño:
Los modelos de educación actuales intentan que el alumno desempeñe un papel
activo en el proceso enseñanza aprendizaje, con el fin de desarrollar sus
competencias permitiendo estar altamente calificado y competente para asumir los
retos que las nuevas sociedades plantean. En los últimos años se ha prestado
especial atención al componente lúdico como un facilitador de estas tareas. La
lúdica enriquece el aprendizaje creando un espacio dinámico y virtual que
transforma el entorno e incluso la forma de interactuar con éste. El aprendizaje
lúdico tiene como elemento principal el juego. Mediante lúdica, el estudiante
comienza a pensar y actuar en medio de una situación determinada que fue
construida con semejanza en la realidad, con un propósito pedagógico. (Méndez,
Obviedo, Fallas, Vega, & Méndez , 2014).
Para el desarrollo de un video juego es crucial la visión y la trama que tendrá este,
ya que se debe construir una trama sólida y una interfaz amigable y sencilla, esto con el fin
de que el video jugador siempre quiera seguir jugándolo:
El planeamiento de la trama y el guion se realizó con reuniones durante varias
semanas, donde se realizaban bocetos, modelos, texturas, logotipos y la
escenografía en general. Así mismo se planearon los objetos, los cuales debían
responder a la solución por parte del personaje en relación con un problema
específico, mediante objetivos (misiones) que permiten avanzar en la trama, o pasar
de nivel, así como mejorar las estadísticas del jugador (como su estado vital). Otros
temas importantes que fueron tomados en cuenta en esta etapa temprana fueron la
banda sonora y los efectos de sonido. Se concluyó que estos estaban divididos en
dos facetas. Por una parte, sonidos de naturaleza como gotas, viento, agua, animales
nocturnos, entre otros. Y, por otra parte, sonidos fríos y oscuros que reflejaran el
ambiente pos-apocalíptico a causa de la destrucción ambiental. Con respecto a lo
que el jugador debía hacer con el personaje, se tuvo que tomar en cuenta el guion
principal y al mismo tiempo, las misiones, y que estas correspondieran con el
género del videojuego. (Méndez, Obviedo, Fallas, Vega, & Méndez , 2014).
3.3.2 Videojuego educativo para ayudar a comprender los principios básicos de
la programación y desarrollar la habilidad lógica en niños de educación básica
“Los videojuegos son parte del desarrollo social y cultural de las personas y llegan a
influir en su desarrollo físico, sensorial, mental y creativo.” Dice Ana Ticante y compañía
resaltan en su artículo, la importancia de la enseñanza de la programación no sólo es capaz
de fortalecer la capacidad de diseñar, inventar o crear, sino que además de eso es de vital
importancia para el desarrollo tecnológico en la sociedad. “Los juegos son una herramienta
útil para la obtención de conocimiento, donde a través de retos y actividades, el estudiante
es el protagonista de su propio aprendizaje” asimismo se puede evidenciar “Existen
videojuegos educativos para aprender muchas cosas, los más básicos enseñan a leer, sumar,
restar o hasta tocar instrumentos, aprender algún idioma, o sobre temas más específicos
como la biología” (Ticante Hernández, Herrera Orduña, Arguijo, Meléndez Armenta, &
Vázquez López, 2019).
Por otro lado, en este proyecto Ana Ticante resalta, como los videojuegos además
de fortalecer la destreza en jóvenes, sea introducido en áreas de medicina, como también en
la enseñanza de lenguajes de programación. Como ejemplo podemos tomar a Immune
Attack y Code Combat.
El aprendizaje de conceptos de programación no es como cualquier otro
aprendizaje, no es un proceso definido y no se trata sólo de memorización, para este
propósito los videojuegos educativos pueden ser una herramienta efectiva, donde el
jugador puede obtener conocimientos de programación en un ambiente educativo-
virtual e interactivo, donde pueden aumentar la motivación para el aprendizaje y
mejorar la comprensión y adquisición de nuevos conocimientos (Ticante
Hernández, Herrera Orduña, Arguijo, Meléndez Armenta, & Vázquez López, 2019)
En el anterior artículo se habla sobre la importancia de los juegos y sus usos en
áreas ajenas a la ingeniería, como es el caso de la medicina y de cómo he aportado un
método de enseñanza intuitivo e interactivo hacia la población joven. También, cómo por
medio de los videojuegos se puede obtener una herramienta que facilita el aprendizaje Y la
adquisición de nuevos conocimientos.
3.4 Diseño de la Solución
A continuación, se mostrarán las diferentes implementaciones del desarrollo del
proyecto con base a la terminología relacionada en el marco teórico y plasmada en el
diagrama de flujo.
3.4.1 Planificación
3.4.1.1 Historias de Usuario
Se desarrollaron las historias de usuario (
) conforme a lo que los requerimientos funcionales como lo son, la interfaz gráfica, las
diferentes pantallas y escenas, el guion y la trama del video juego, la banda sonora, los
comportamientos de las pantallas y los comportamientos del entorno y personaje,
conexiones a la base de datos y roles de usuarios.
3.4.1.2 Plan de entregas
Conforme a la dificultad de las historias de usuario se realiza el siguiente plan de
entregas:
Tabla 1
Plan de Entregas
Historias Iteración Prioridad Esfuerzo Fecha Inicio Fecha Final
Historia 1 1 Media 1 01/04/2021 04/04/2021
Historia 2 1 Alta 2 04/04/2021 15/04/2021
Historia 3 1 Alta 2 15/04/2021 27/04/2021
Historia 4 1 Media 2 27/04/2021 02/05/2021
Historia 5 2 Alta 3 02/05/2021 19/05/2021
Historia 6 2 Alta 3 19/05/2021 23/05/2021
Historia 7 3 Media 3 23/05/2021 26/05/2021
Historia 8 3 Media 1 26/06/2021 29/06/2021
Historia 9 3 Alta 3 29/06/2021 04/06/2021
Historia 10 3 Alta 3 04/06/2021 09/06/2021
Nota: Cronograma en base a la prioridad de las historias (elaboración propia)
3.4.1.3 Plan de Iteraciones
Conforme al plan de cronograma se realiza la planificación de las iteraciones.
Primera iteración: En a la primera iteración se han desarrollado los módulos de
registro e ingreso del usuario, los cuales para lograr su progreso se ha utilizado u aplicado
cada una de las herramientas que se destacan en la metodología XP.
Tabla 2
Primera Iteración
Número Nombre Módulo
1 Pantalla de presentación Usuario
2 Pantalla de configuración Usuario
3 Panel de sonido u
sensibilidad
Control
4 Pantalla de inicio Consulta Nota: Historias de usuario a trabajar en la primera iteración (elaboración propia)
Se muestra de manera general las tareas de ingeniería de la primera iteración:
Tabla 3
Tareas de Ingeniería Primera Iteración
Número de tarea Historia Nombre de la tarea
1 1 Diseña interfaz inicial del
juego
2 2 Diseño interfaz de
configuración
3 2 Planeación de niveles
4 2 Maquetación niveles
5 3 Movilidad de personaje
6 3 Animación de personaje
7 4 Programación interfaz
(empezar, salir,
configuraciones)
8 4 Implementación de texturas Nota: Tareas a trabajar en las historias de usuario relacionadas con la primera iteración (elaboración propia)
Segunda Iteración:
Tabla 4
Segunda Iteración
Número Nombre Módulo
5 Configuración Configuración y consulta
6 Tutorial Interacción Nota: Historias de usuario a trabajar en la segunda iteración (elaboración propia)
Se muestra de forma general las tareas de ingeniería para la segunda iteración.
Tabla 5
Tareas de Ingeniería Segunda Iteración
Número de tarea Historia Nombre de la tarea
1 5 Interfaz donde se plasmará
las diferentes
configuraciones principales
del juego.
2 5 Interfaz de sensibilidad y
sonido del juego
3 5 Interfaz de ayuda con
información útil a cerca del
juego.
4 5 Interfaz explicando los
controles para la movilidad.
5 5 Interfaz de creadores del
juego
6 5 Programación de continuar
o regresar entre escenas
7 6 Desarrollar animación de
movimientos básicos del
personaje
8 6 Programación de teclas y
cámara al personaje.
9 6 Programación de físicas de
personaje y objetos.
10 6 Programación del entorno y
objetos.
11 6 Programación de puzles y
eventos.
12 6 Animación a objetos y
entorno. Nota: Tareas a trabajar en las historias de usuario relacionadas con la segunda iteración (elaboración propia)
Tercera Iteración:
Tabla 6
Tercera Iteración
Número Nombre Módulo
8 Configuración del juego Configuración
9 Opciones Configuración
10 Lobby del juego Control Nota: Historias de usuario a trabajar en la tercera iteración (elaboración propia)
Se muestra de forma general las tareas de ingeniería para la tercera iteración:
Tabla 7
Tareas de Ingeniería Tercera Iteración
Número de tarea Historia Nombre de la historia
1 8 Programación sonido y
orientación.
2 8 Interfaz de configuraciones
de volumen.
3 9 Programación recargue de
escenas
4 9 Interfaz de instrucciones de
niveles
5 9 Programación de sonidos de
ambiente.
6 10 Programación sonidos de
personaje
7 10 Programación interacción
con objetos
8 10 Programación y
enlazamiento de niveles. Nota: Tareas a trabajar en las historias de usuario relacionadas con la tercera iteración (elaboración propia)
3.4.1.4 Reuniones diarias de seguimiento
Para el seguimiento de cada historia propuesta por el cliente se establecerá
reuniones diarias de desarrolladores y el cliente presente, para revisar el proceso de dichas
historias. Puntualizando temas cómo qué inconvenientes se han presentado en el transcurso
del desarrollo, cómo se ha seguido el cronograma propuesto para la entrega de cada historia
y compartir soluciones qué maximicen el desarrollo.
3.4.2 Diseño
3.4.2.1. Simplicidad
El siguiente apartado se mostrarán las figuras 1-6 de pantallazos del juego ya
finalizado en su totalidad.
Figura 1
La figura 1 muestra la interfaz del ingreso del usuario
Figura 2
En la figura 2 se visualiza el lobby principal del juego en donde aparecerá el
personaje y se podrá ir a diferentes niveles dependiendo la opción que se escoja.
Figura 3
La figura 3 se muestra u mensaje de bienvenida y una pequeña sinopsis del juego
Figura 4
En la figura 4 se da un vistazo a los controles principales que permitirán la
movilidad del personaje y vehículo.
En la figura 5 vistazo del nivel encargado de presentar los variables que son usada
en la programación.
Figura 5
En la figura 6 se muestra el nivel encargado de mostrar las sentencias condicionales.
En la figura 7 se muestra el nivel encargado de mostrar los ciclos repetitivos por
medio de unas pitas de carreras.
3.4.2.2 Manual de usuario
Como resultado final, se realizó el manual de usuario en donde se brindan las
instrucciones de las mecánicas del video juego a la persona que vaya a jugar.
Figura 6
Figura 7
Para la interacciona con los banners en el lobby, se usa la letra e y se realiza el cambio de
dialogo con q.
Para tomar objetos se usa el click izquierdo y se suelta con el click de scroll del mouse
Las mecánicas de movimiento se realizan con las letras a, w, s, y d. Para correr se usa
manteniendo el click derecho.
Para realizar saltos se ejecuta con la tecla espacio
Para la manipulación del automóvil, se usan de movimiento las teclas a, s, w y d. Para
frenar se usa la tecla la tecla sostenida s. el movimiento de la cámara se realizará con el
mouse y para reiniciar el nivel se usará la tecla i.
En este manual se habla de los comandos que se presentan en el juego, de igual manera, al
iniciar el juego se presentara un pequeño esquema de los controles que se usaran el todo el
juego.
4. Análisis y Discusión
4.1 Análisis
En este proyecto se llegó desde la etapa de diseño hasta la de desarrollo. Abarcando
una investigación a fondo de tecnologías que aplicaremos en nuestro videojuego como
también de antecedentes posteriores qué propusieron o desarrollaron una idea parecida a la
nuestra. También se condensa la metodología ágil XP, la cual se resaltan desde el
cronograma, historias por parte del usuario, organización, asignación de tareas y además se
caracteriza por no ser necesario la estructuración de todo el proyecto desde un comienzo,
dado que en el transcurso del tiempo se pueden ir haciendo modificaciones, pero se tendrá
una idea inicial. Igualmente, se implementó el diseño de acuerdo con la metodología,
llevando desde un orden en el desarrollo del proyecto, asignación de dificultad,
complejidad, prioridad y hasta la asignación de tiempos de entrega por parte de los
desarrolladores. A consecuencia de la aplicación de la metodología XP en nuestro proyecto,
se llega a presenciar de manera más simple dado que se puede evidencia que conformar el
desarrollo y terminación del proyecto. En vista a lo expresado con anterioridad se da a la
finalidad del producto final desde interfaces iniciales y sus correspondientes niveles,
cumpliendo con la idea principal del juego; representar de una manera sencilla lo básico en
la programación.
4.2 Discusión
A pesar de que hoy en día aún se siguen viendo a los videojuegos de una manera
negativa, decidimos incursionar en el desarrollo de un videojuego que abarca el
fortalecimiento de estudiantes de ingeniería. Dado que es una de las principales dificultades
que se presentan a los futuros aspirantes a ingenieros de sistemas. Para cambiar su manera
de pensar a la hora de percibir los problemas, como se puede presenciar en las
investigaciones citadas y también referenciadas en este documento. Se evidencia qué los
videojuegos no impactan de manera negativa a jóvenes, sino que, al contrario, despierta en
ellos una forma de aprender de manera intuitiva al desarrollarse diferentes retos o pruebas
que se presenten en transcurso. Por esta razón y dejando a un lado las críticas negativas
decidimos incursionar para llegar a los jóvenes de una manera fácil y sencilla de
fortalecimiento lógico. En la actualidad, podemos encontrar diversas herramientas para
aprender a programar, pero viéndose que el problema trasciende más a fondo. Si, cualquiera
puede aprender a programar, por medio de libros, cursos o las metodologías de aprendizaje
convencionales, pero ¿qué herramientas conocemos que sean intuitivas y bajo en el
esquema de un videojuego para estudiantes? Por medio de un videojuego no solo será
entretenido, sino que además podrías ser un medio que refuerce las enseñanzas de los
estudiantes.
5. Recomendación
En esta primera entrega del proyecto se dará en estado beta, dado que no se llegará a
poner en prueba en estudiantes de primer semestre en la ingeniería de sistemas. Pero coma
cabe aclarar que queda la posibilidad de una segunda o tercera entrega, siguiendo los
mismos objetivos o ideas principales de este proyecto como englobando la idea principal de
este trabajo. Esta idea queda disposición de cualquier persona que sienta curiosidad o que
quiera llevar más allá en el aprendizaje de estudiantes de primer semestre de la ingeniería
en sistemas.
6. Conclusiones
Como conclusión a la finalización del desarrollo de este videojuego el cual cumple
con el objetivo de plasmar en su interior de forma didáctica conceptos básicos como las
variables sentencias de decisión y los ciclos repetitivos de la programación. Cabe aclarar
que no se llegó a poner en práctica en estudiantes de primeros semestres dado que esta
primera entrega es una beta, esto quiere decir que queda abierta la posibilidad a cualquier
persona que quiera indagar en el desarrollo de una segunda o tercera entrega.
Referencias
Adobe . (13 de 03 de 2020). Encuentre respuestas a preguntas comunes sobre Adobe Fuse
CC (Beta) y servicios relacionados. Obtenido de adobe:
https://helpx.adobe.com/beta/fuse/faq.html
Adobe. (04 de 11 de 2019). Animar personajes 3D con Mixamo. Obtenido de adobe:
https://helpx.adobe.com/es/creative-cloud/help/animate-characters-mixamo.html
Ángel Torres-Toukoumidis, L. M. (2010). Juegos y sociedad. Mexico: Mc Graw Hill.
Anguas, J., Díaz, L., Gallego, I., Lavado, C., Reyes, A., Rodríguez, E., . . . Valero, M.
(2006). La técnica del Puzzle al servicio del aprendizaje de la. Obtenido de
researchgate:
https://www.researchgate.net/profile/Eva_Rodriguez7/publication/228359182_La_t
ecnica_del_Puzzle_al_servicio_del_aprendizaje_de_la_programacion_de_ordenado
res/links/0c96051caf6fd0d3c4000000.pdf
Arias, Á. (2004). Aprende a programar C.
Barragán, H. (2008). Software: ¿arte? Obtenido de banrepcultural:
https://www.banrepcultural.org/artenlared/sccs/02/barragan.pdf
C algoritmos, p. y. (2005). Luis Aguilar Joyanes. MCGraw-Hill.
Catalinas, E. Q. (2002). Sistemas operativos y lenguajes de programación. Editorial
Paraninfo.
Cerón Cardona, A., & Bedoya Herrera, P. A. (2017). MANUAL BASICO DE UNITY 3D
COMO APOYO AL DESARROLLO TURÍSTICO NACIONAL. Obtenido de
amazonaws.
Code.Org. (26 de 02 de 2013). "Code Stars" - Short Film [archivo de vídeo]. Recuperado el
19 de 04 de 2020, de Youtube:
https://www.youtube.com/watch?time_continue=6&v=dU1xS07N-
FA&feature=emb_title
Darias, A. M. (2014). Cuadernos de innovacion educativa.
Didact, S. (2005). MAnual de programacion lenguajes C++. MAD.
Echeverry Tobón, L. M., & Delgado Carmona, L. E. (2007). Caso Práctico de la
Metodología Ágil XP al Desarrollo de Software. Obtenido de amazonaws:
https://s3.amazonaws.com/academia.edu.documents/45543592/0053E18cp.pdf?resp
onse-content-
disposition=inline%3B%20filename%3D2_CASO_PRACTICO_DE_LA_METOD
OLOGIA_AGIL_X.pdf&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-
Credential=ASIATUSBJ6BACDBXQW7V%2F20200423%2Fus-
Esteve, J. (22 de 11 de 2012). Xataca. Obtenido de Xataca:
https://www.xataka.com/otros/debe-ensenarse-programacion-en-todas-las-carreras-
de-la-universidad
Ferrer, J. (10 de 10 de 2002). Programación eXtrema y Software. Obtenido de geofisica:
http://www.mmc.geofisica.unam.mx/Replicas/LuCAS/Presentaciones/200211hispal
inux/ferrer/robles-ferrer-ponencia-hispalinux-2002.pdf
Fuentes Rosado, J. I., & Moo Medina, M. (2017). Dificultades de aprender a programar.
Revista Educación en Ingeniería, 6.
Gama, R. L. (2017). Game over: juegos electronicos y veolencia. UOC.
Garcia, I. (11 de 03 de 2020). Todo papas. Obtenido de
https://www.todopapas.com/ninos/educacion/la-importancia-de-los-juegos-
interactivos-infantiles-en-la-educacion--6704
GlobalData plc. (08 de 07 de 2016). What is C++? Obtenido de ProQuest LLC:
https://bbibliograficas.ucc.edu.co:2149/docview/1802712221?accountid=44394
Javier Francisco Otera Noguera, D. R. (2013). Programación. En D. R. Javier Francisco
Otera Noguera, Programación (pág. 115). Editorial UOC.
Joskowicz, J. (10 de 02 de 2008). Reglas y Prácticas en extreme Programming. Obtenido
de amazonaws: https://s3.amazonaws.com/academia.edu.documents/31398587/xp_-
_jose_joskowicz.pdf?response-content-
disposition=inline%3B%20filename%3Dxp_jose_joskowicz.pdf&X-Amz-
Algorithm=AWS4-HMAC-SHA256&X-Amz-
Credential=ASIATUSBJ6BAHPM2T653%2F20200420%2Fus-east-1%2Fs3%2
Joyanes, L. A. (2006). Programación en Pascal. McGraw-Hill.
Juganaru, M. M. (2014). Introducción a la programación. Editorial Patria.
Juganaru, M. M. (2014). Introducción a la programación . En M. M. Juganaru, Introducción
a la programación . Grupo Editorial Patria.
López, L. J. (2014). Programación oritada a objetos C++ y Java. Patria.
Luisa Garzón Villar, E. L. (2004). Informativa Volumen ll. Sevilla: MAD.
Méndez, G., Obviedo, E., Fallas, G., Vega, C., & Méndez , A. (2014). Análisis de las
herramientas Unity y Blender para el desarrollo de videojuegos con un enfoque
educativo. Obtenido de amazonaws:
https://s3.amazonaws.com/academia.edu.documents/33748007/Analisis_de_las_her
ramientas_Unity_y_Blender_para_el_desarrollo_de_videojuegos_con_un_enfoque_
educativo.pdf?response-content-
disposition=inline%3B%20filename%3DAnalisis_de_las_herramientas_Unity_y_B
Ministerio de Tecnologías de la Información y las Comunicaciones. (19 de 10 de 2015).
Miles de niños colombianos aprenderán a programar desde Puntos Vive Digital.
Obtenido de Ministerio de Tecnologías de la Información y las Comunicaciones:
https://www.mintic.gov.co/portal/inicio/Sala-de-Prensa/Noticias/13710:Miles-de-
ninos-colombianos-aprenderan-a-programar-desde-Puntos-Vive-Digital
Ministerio de Tecnologías de la Información y las Comunicaciones. (30 de 10 de 2017).
MinTIC y Platzi abren cursos virtuales gratuitos para fortalecer habilidades TIC de
los emprendedores colombianos. Obtenido de Ministerio de Tecnologías de la
Información y las Comunicaciones: https://www.mintic.gov.co/portal/inicio/Sala-
de-Prensa/Noticias/61415:MinTIC-y-Platzi-abren-cursos-virtuales-gratuitos-para-
fortalecer-habilidades-TIC-de-los-emprendedores-colombianos
Morales, J. M. (2015). Serious games: Diseño de videojuegos con una agenda educativa y
social. UOC.
Niederauer, J. (2005). Integrando PHP 5. Obtenido de amazonaws:
https://s3.amazonaws.com/academia.edu.documents/34869982/php.pdf?response-
content-
disposition=inline%3B%20filename%3DGuia_de_Consulta_Rapida.pdf&X-Amz-
Algorithm=AWS4-HMAC-SHA256&X-Amz-
Credential=ASIATUSBJ6BAKYHP5KFY%2F20200424%2Fus-east-
1%2Fs3%2Faws4_requ
Oviedo, E. R. (2015). Lógica de programación orientada a objetos. Ecoe Ediciones.
Pere-Pau Vazquesz Alcocer, J. M. (2006). Programción en C++ para ingenieros . Madrid:
Espain Paraninfo S.A.
Ramírez, D. P. (2008). METODOLOGÍAS ÁGILES.¿CÓMO DESARROLLO. Recuperado
el 20 de 04 de 2020, de amazonaws:
https://s3.amazonaws.com/academia.edu.documents/52482210/1174-1242-1-
PB.pdf?response-content-
disposition=inline%3B%20filename%3DMETODOLOGIAS_AGILES._COMO_D
ESARROLLO_UTI.pdf&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-
Credential=ASIATUSBJ6BAKNVWHWHB%2F20200420%
Razif, K. A. (1 de 09 de 2016). Medium. Obtenido de Medium: https://medium.com/10-
goto-10/algoritmos-pseudoc%C3%B3digo-estructuras-de-decisi%C3%B3n-y-
repetici%C3%B3n-917169a36ce4
Rivera Meza, I. D. (2017). DESARROLLO E IMPLEMENTACIÓN DE UN SISTEMA DE
CÓDIGO DE BARRAS CON LA METODOLOGÍA XP PARA OPTIMIZAR EL
CONTROL DE ASISTENCIA EN LA JUNTA ADMINISTRADORA DE SERVICIOS
DE SANEAMIENTO QUILCAS. Obtenido de Universidad Peruana de los Andes:
http://repositorio.upla.edu.pe/handle/UPLA/232
salas, J. J. (2003). Introducción a la programación teoríca y practica. San Vicente:
Editorial Club Universitario.
Salinas, M. I. (01 de 04 de 2011). Entornos virtuales de aprendizaje en la escuela: tipos,
modelo didáctico y rol del docente. Obtenido de amazonaws:
https://s3.amazonaws.com/academia.edu.documents/33050741/Eva1.pdf?response-
content-
disposition=inline%3B%20filename%3DEntornos_virtuales_de_aprendizaje_en_la.
pdf&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-
Credential=ASIATUSBJ6BABLBSC6XJ%2F20200424%2Fus-east-1
Santamaria, C. A. (1991). Lenguaje C++. Bogotá: CODICE LTDA.
Sierra, J. C. (2007). Programcion Orientada a Objetos con C++. RA-MA.
Sierra, J. C. (04 de 03 de 2011). Microsoft C#. Curso de Programación. 2ª edición.
Obtenido de Google Libros: https://books.google.es/books?hl=es&lr=&id=EK8-
DwAAQBAJ&oi=fnd&pg=PT6&dq=que+es+C%23&ots=aiSENyvqHn&sig=ctAK
IFvhbLEpvSXhX-Lh5mwNs2Y#v=onepage&q=que%20es%20C%23&f=false
SINC. (20 de 04 de 2016). Sinc La Ciencia es Noticia. Obtenido de
https://www.agenciasinc.es/Noticias/La-programacion-una-gran-desconocida-para-
alumnos-y-padres
Ticante Hernández, A. C., Herrera Orduña, C. M., Arguijo, P., Meléndez Armenta, R. Á.,
& Vázquez López, A. H. (2019). básica, Videojuego educativo para ayudar a
comprender los principios básicos de la programación y desarrollar la habilidad
lógica en niños de educación. Veracruz: Research in Computing Science. Obtenido
de
https://www.rcs.cic.ipn.mx/2019_148_7/Videojuego%20educativo%20para%20ayu
dar%20a%20comprender%20los%20principios%20basicos%20de%20la%20progra
macion.pdf
Vásquez, C. B. (s.f. de s.f. de s.f.). Algoritmo. Obtenido de https://moodle2.unid.edu.mx/:
https://moodle2.unid.edu.mx/dts_cursos_mdl/lic/IC/EA/AM/06/Algoritmos.pdf
Zahonero Ignacio Martinez, L. A. (2005). Programación en C: metodología, algoritmos y
estructura de datos. McGraw-Hill.
Anexos
Anexo 1. Encuestas realizadas a estudiantes de primer y segundo semestre de la
Universidad Cooperativa de Colombia.
Anexo 2. Historias de Usuario
Numero historia: 1
Nombre historia: Pantalla de presentación
Fecha: 20/04/2020
Entrevistado (usuario): Oscar Peña
Tiempo estimado: 1 día
Descripción:
En la página de inicio los usuarios pueden interactuar con los botones de ingreso y registro.
Numero historia: 2
Nombre historia: Registro usuario
Fecha: 20/04/2020
Entrevistado (usuario): Juan Muñoz
Tiempo estimado: 5 días
Descripción:
Espacio en el cual solicite los nuevos usuarios datos básicos como nombre, apellido, edad,
y sexo. Como también su correspondiente correo electrónico y además de eso una
contraseña para el ingreso.
Los datos de los usuarios se deben almacenar en una base de datos.
Numero historia: 3
Nombre historia: Ingreso usuario
Fecha: 20/04/2020
Entrevistado (usuario): Oscar Peña
Tiempo estimado: 5 días
Descripción:
Para el ingreso se requerirá el correspondiente correo electrónico y su contraseña de cada
uno de los usuarios.
Debe hacerse comprobación de todo dato ingresado con respecto a lo guardado en la base
de datos.
Numero historia: 4
Nombre historia: Pantalla de inicio
Fecha: 20/04/2020
Entrevistado (usuario): Oscar Peña
Tiempo estimado: 2 días
Descripción:
Al registrarse al usuario se le presentará una pantalla de bienvenida en la cual se le mostrará
su progreso en el juego y su rendimiento en base a la solución de los puzles
Se presentará la opción de salir, empezar y configurar.
Nota: Este proceso también quedará almacenado dentro de una base de datos.
Numero historia: 5
Nombre historia: Configuración (ingreso)
Fecha: 20/04/2020
Entrevistado (usuario): Oscar Peña
Tiempo estimado: 5 días
Descripción:
Se podrá desplegar un listado de idiomas entre los cuales se encontrarán español, inglés y
alemán. También se encontrará una opción de ayuda para principiantes mostrando cómo
será la modalidad de juegos.
Implementación de un apartado que muestra el contacto, ya sean para inquietudes o él
envió de mensajes generales en base a algún error que se encuentre dentro del juego.
Implementar un espacio en donde se encuentren los avisos legales de este juego, como
también los créditos de los correspondientes creadores.
Se presentará un botón de regreso pide guardar configuraciones
Numero historia: 6
Nombre historia: Tutorial
Fecha: 20/04/2020
Entrevistado (usuario): Oscar Peña
Tiempo estimado:
Descripción: 6 días
Al iniciar el juego, se dará una bienvenida al jugador presentando los controles básicos que
se usarán el transcurso de todo el juego. Se deberán explicar los controles de movimiento
de salto y velocidad.
Se deberá presentar una pequeña introducción de cómo será la mecánica del juego por
medio de un puzle.
Se presentarán los objetos interactivos que rodearán al usuario.
Numero historia: 7
Nombre historia: Pausa de juego
Fecha: 20/04/2020
Entrevistado (usuario): Oscar Peña
Tiempo estimado: 2 días
Descripción:
En esta sección se podrán visualizar las opciones cómo reanudar configuraciones, opciones,
salir y guardar.
Numero historia: 8
Nombre historia: Configuraciones del juego
Fecha: 20/04/2020
Entrevistado (usuario): Oscar Peña
Tiempo estimado: 1 día
Descripción:
En esta sección se encontrará todos los relacionados con las configuraciones de
sensibilidad, graduación de sonido, música y orientación de la cámara.
Debe estar presente en las opciones denegar la salida de audio.
Numero historia: 9
Nombre historia: Opciones
Fecha: 20/04/2020
Entrevistado (usuario): Oscar Peña
Tiempo estimado: 3 días
Descripción:
Visualizar las teclas designadas en cada una de las acciones que pueda hacer el usuario en
el juego. Además de esto el usuario podrá alterar y asignar las teclas de acciones de su
personaje.
Asignar los botones uno con las configuraciones por defecto y otro para guardar los
cambios hechos.
Numero historia: 10
Nombre historia: Guardado
Fecha: 20/04/2020
Entrevistado (usuario): Oscar Peña
Tiempo estimado: 5 días
Descripción:
Implementar el guardado automático como también en el menú de pausa esto para
garantizar que se guarde todo el proceso de los usuarios. También se tiene que garantizar
que, al momento de salir el usuario del juego, se confirme si desea guardar su proceso.