-- Main() -- Inicio Mostrar_Menu(); Mientras(true){ Switch(opcion){ case nueva_partida: IniciarPartida(); JugarPartida(); //aņadido FinalizarPartida(); Break; case cargar_partida: MostrarGuardadas(); si (EligeUna()){ CargarPartida(); JugarPartida(); //aņadido FinalizarPartida(); // aņadido } si_no{ Break; } case salir: SalirPrograma(); Break; } } Fin -- JugarPartida() -- Inicio Mientras(true){ GestionarGraficos(); GestionarEntrada(); Procesar(); } Fin GestionarGraficos() es una funcion que consiste en pintar el Laberinto o las posiciones de los guardias y el prisionero en cada caso, en funcion a la tecla pulsada. Si estamos dentro del laberinto, hay que pintar el tiempo, el objeto obtenido, y la salida abierta cuando se resuelve el puzzle. Si estamos fuera, hay que pintar la posicion de los guardas, su angulo de vision, los objetos que obstaculizan el angulo, y nuestra posicion, ademas de los dados. GestionarEntrada() se encarga de procesar las teclas que ha pulsado el jugador, si pulsa la tecla de menu, si pulsa direccion, si pulsa la tecla de tirar dados, etc... y pasar esos datos a la funcion Procesar(). Procesar() se encarga del videojuego en si. Actua en consecuencia, segun donde se encuentra. Si estamos dentro, por mucho que se pulse la tecla de tirar dados, no se obtendra tirada. Si se pulsa menu, hay que mostrar el menu. Si se pulsa una tecla de direccion, y hay un obstaculo que lo impide (pared, camion, roca...) no se puede avanzar. Ademas hay que tener en cuenta que si se acaba el tiempo, la partida habra concluido. FinalizarPartida() lo que hace es liberar recursos y mostrar las puntuaciones obtenidas.