Cooking Code: Juego Para Aprender a Programar Con Realidad Virtual
Total Page:16
File Type:pdf, Size:1020Kb
Treball final de grau GRAU D'ENGINYERIA INFORMATICA` Facultat de Matem`atiquesi Inform`atica Universitat de Barcelona Cooking Code: Juego para Aprender a Programar con Realidad Virtual Autor: Iv´anG´omezJim´enez Director: Dra. Inmaculada Rodr´ıguezSantiago Realitzat a: Departament de Matem`atiques i Inform`atica Barcelona, September 14, 2020 Abstract (English) The present project focuses on creating an educational game that allows kids, between the ages of 12 and 16, to get involved in the programming world.Therefore, this game belongs to the serious games's scoupe, wich have as main goal the education. The game is based on the metaphor of a Burger, set in a futuristic era where robots and humans coexist as equals. The player will be the chef of the restaurant, having to learn to read the orders that arrive and carry them out successfully. The main difficulty is that the requests do not arrive in natural language, but in a kind of pseudo-code. This context allows the user to find himself performing simple actions known as making a hamburger, focusing his attention on trying to understand the steps to be carried out through basic, conditional and iterative programming sentences. The chosen platform has been virtual reality, specifically the Oculus Quest. Apart from being a novel technology, it provides very important benefits such as immersion or achieving much more realistic interactions with the environment. As a result of all this, it seeks to create an innovative, fun game that puts the world of programming within the reach of new generations. Abstract (Castellano) El presente proyecto se centra en la creaci´onde un juego educativo que permita a ni~nos,de entre 12 y 16 a~nos,introducirse a la programaci´on. Por lo tanto, este juego se sit´uaen el ´ambito de los serious games, los cuales tienen como objetivo principal la formaci´on. El juego se basa en la met´aforade una hamburgueser´ıa, ambientada en una ´epoca futurista d´onderobots y humanos conviven como iguales. El jugador ser´ael cocinero del restaurante, teniendo que aprender a leer los pedidos que lleguen y realiz´andoloscon ´exito.La principal dificultad est´aen que los pedidos no llegan en lenguaje natural, sino en una especie de pseudoc´odigo.Este contexto permite al usuario encontrarse realizando acciones sencillas y conocidas como hacer una hamburguesa, poniendo el foco de su atenci´onen tratar de entender los pasos a realizar a trav´esde sentencias de programaci´onb´asicas,condicionales e iterativas. La plataforma escogida ha sido la realidad virtual, concretamente las Oculus Quest. A parte de ser una tecnolog´ıa novedosa, proporciona beneficios muy importantes como la inmersi´ono conseguir interacciones con el entorno mucho m´asrealistas. Como resultado de todo ello, se busca crear un juego innovador, divertido y que ponga el mundo de la programaci´onal alcance de las nuevas generaciones. Abstract(Catal`a) L'actual projecte es centra en la creaci´od'un joc educatiu que permeti a nens, d'entre 12 i 16 anys, introduir-se a la programaci´o.Per aix`o,aquest joc es situa a l’`ambit dels serious games, els quals tenen com a objectiu principal la formaci´o.El joc es basa en la met`aforad'una hamburgueseria, ambientada a una `epoca futurista on robots i humans conviuen com iguals. El jugador ser`ael cuiner del restaurant, aprenent a llegir les comandes que arriben i realitzant-les amb `exit. La principal dificultat est`aque les comandes no arriben en llenguatge natural, sin´oen una mena de pseudocodi. Aquest context permet a l'usuari fer accions simples i conegudes com fer una hamburguesa, posant l’atenci´oen tractar d'entendre els passos a seguir a trav´esde sent`enciesde programaci´ob`asiques,condicionals i iteratives. La plataforma seleccionada ha sigut la realitat virtual, concretament les Oculus Quest. A banda de ser una tecnologia molt nova, proporciona beneficis molt importants com la immersi´oo aconseguir interaccions amb l'entorn 2 molt m´esrealistes. Com a resultat de tot aix`o,es vol crear un joc innovador, divertir i que posi el m´on de la programaci´oa l'abast de les noves generacions. 3 ´Indice ´Indice de figuras i 1 Introducci´on 1 2 Objetivos 1 2.1 Objetivo general.........................................1 2.2 Objetivos espec´ıficos.......................................2 3 An´alisisde la competencia2 3.1 No basados en realidad virtual.................................3 3.1.1 Scratch..........................................3 3.1.2 Human Resource Machine...............................4 3.2 Basados en realidad virtual...................................5 3.2.1 CoSpaces.........................................5 3.2.2 Job Simulator.......................................6 4 Tecnolog´ıas 7 5 An´alisis 10 5.1 Requisitos funcionales...................................... 10 5.2 Casos de uso........................................... 10 5.3 Grupos de usuarios........................................ 14 5.3.1 Grupo de usuarios 1: j´ovenes no iniciados en la programaci´on............ 14 5.3.2 Grupo de usuarios 2: j´ovenes iniciados en la programaci´on.............. 14 5.4 Personas.............................................. 14 6 Dise~nodel juego 15 6.1 Canvas de dise~no......................................... 15 6.2 Pedidos.............................................. 17 6.2.1 Instrucciones condicionales............................... 18 6.2.2 Instrucciones iterativas.................................. 19 6.3 Jugabilidad y mec´anicas..................................... 19 6.3.1 Curva de aprendizaje.................................. 20 6.3.2 Feedback del pedido................................... 20 6.3.3 Sistema de logros..................................... 21 6.3.4 Control de errores: Undo................................ 22 6.3.5 Distribuci´onde la mesa de pedidos........................... 22 6.3.6 Colores y modelos.................................... 23 6.4 M´usica............................................... 23 7 Dise~node la aplicaci´on 23 7.1 Diagrama de clases........................................ 23 7.1.1 Controlador de partida.................................. 25 7.1.2 Undo........................................... 25 7.1.3 User............................................ 26 7.1.4 Controlador de men´us.................................. 26 7.1.5 Pedidos.......................................... 26 7.1.6 Creaci´onde ingredientes................................. 28 7.1.7 Feedback......................................... 28 7.2 Diagrama de flujo......................................... 30 7.3 Estructura de la base de datos................................. 32 7.4 Patrones de dise~no........................................ 33 7.4.1 Factory.......................................... 33 7.4.2 Singleton......................................... 34 7.4.3 MVC........................................... 34 7.5 Requisitos generales para el desarrollo............................. 35 7.5.1 Software.......................................... 35 7.5.2 Hardware......................................... 35 8 Implementaci´on 35 8.1 Implementaci´ondel juego.................................... 35 9 Conclusiones y trabajo futuro 40 10 Bibliograf´ıa 41 ii A Ap´endiceI - Gu´ıade instalaci´on 42 B Ap´endiceII - Entrevista Jesus Arbues 46 iii iv ´Indice de figuras 1 Pantalla en un proyecto de Scratch (Fuente: https://ladiversiva.com/) ........3 2 Nivel en Human Resource Machine (Fuente: https://bit.ly/2ZzVhKZ)..........4 3 Programaci´onvisual con Blockly (Fuente: http://manuelalmonacid.blogspot.com/)..5 4 Cocina de Job Simulator (Fuente: https://bit.ly/32oDF6z)................6 5 Oculus Quest (Fuente: https://www.oculus.com/quest/).................7 6 Controladores Oculus Quest (Fuente: https://ocul.us/3itUnqR).............8 7 Diagrama de casos de uso (Fuente: propia).......................... 11 8 Foto de Joel (Fuente: https://bit.ly/32nR1jI)....................... 15 9 Foto de Raquel (Fuente: https://bit.ly/32rOAfK)..................... 15 10 Canvas de dise~no(Fuente: propia)............................... 17 11 Primer pedido b´asico(Fuente: propia)............................. 17 12 Pedido condicional (Fuente: propia).............................. 18 13 Pedido iterativo (Fuente: propia)................................ 19 14 Logro al realizar un pedido condicional (Fuente: propia)................... 21 15 Logro al realizar 10 pedidos condicionales (Fuente: propia)................. 21 16 Logro al realizar treinta pedidos condicionales (Fuente: propia)............... 22 17 Diagrama de clases del proyecto (Fuente: propia)....................... 24 18 Clase controladora de la partida (Fuente: propia)....................... 25 19 Clase controladora de la funcionalidad Undo.......................... 26 20 Clases referente al usuario (Fuente: propia).......................... 27 21 Clases controlador de los men´us(Fuente: propia)....................... 27 22 Clases referentes a los pedidos (Fuente: propia)........................ 28 23 Clases referentes a la creaci´onde ingredientes (Fuente: propia)............... 29 24 Clase generadora del feedback del pedido (Fuente: propia).................. 29 25 Inicio de partida (Fuente: propia)................................ 30 26 Men´ude inicio (Fuente: propia)................................. 31 27 Desarrollo de la partida (Fuente: propia)............................ 31 28 Generadores............................................ 36 29 Selecci´on.............................................. 36 v 30 Ingrediente cogido........................................