Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
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 https://campusuccedu-my.sharepoint.com/personal/juan_munozri_campusucc_edu_co/Documents/Monografia.docx#_Toc74585168 https://campusuccedu-my.sharepoint.com/personal/juan_munozri_campusucc_edu_co/Documents/Monografia.docx#_Toc74585169 https://campusuccedu-my.sharepoint.com/personal/juan_munozri_campusucc_edu_co/Documents/Monografia.docx#_Toc74585170 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 artede 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 siempreestá 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 proyectode 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ónen 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 ytambié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 creadoresdel 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 otercera 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,
Compartir