Introducción

Algoritmos para juegos, parte del Grado en Diseño y Desarrollo de Videojuegos de la URJC, se presenta como una de las asignaturas más desafiantes de tercer año (o cuarto, si estás en el doble grado). Probablemente ya te hayan contado como funciona, por estudiantes de cursos superiores que ya han pasado por la asignatura. Seguro que has oído historias de terror de ejercicios imposibles, exámenes de mucha presión y “jueces” que no perdonan ni una.

No te voy a engañar — la asignatura es difícil, en gran medida por el tiempo limitado, la gran cantidad de algoritmos a estudiar y la compaginación con otras asignaturas del mismo cuatrimestre (¿oigo por ahí Entornos Multijugador?), pero quiero que este año sea diferente. Por eso he preparado esta selección de apuntes, ejercicios y contenidos multimedia. Mi objetivo es que no solo consigas aprobar la asignatura, sino que además, en la medida de lo posible, sientas que estás aprendiendo algo útil, y disfrutes mientras refuerzas tus habilidades de programación.

Esto es Algoritmos para juegos. Mucha suerte y ánimo.

Distribución de contenidos

Durante los próximos días habrá más novedades, incluyendo los últimos tres temas y las soluciones de los ejercicios

Contenidos de teoría

Introducción a Python

Antes de meterte de lleno en el mundo de los algoritmos, tendrás que aprender los entresijos del lenguaje de programación Python, que es el que usaremos a lo largo de la asignatura.

  • Te damos la bienvenida a Python
  • Sintaxis y consideraciones generales
  • Condicionales y bucles
  • Estructuras de datos básicas
  • Todo sobre entradas y salidas
  • Interpretando ejercicios
  • Funciones

Algoritmos sobre grafos

Caminos, ciclos, árboles... Quién iba a decir que un puñado de puentes hace 300 años iba a dar tanto de qué hablar...

  • Introducción a la teoría de grafos
  • Matrices y listas de adyacencia
  • Recorrido en profundidad
  • Recorrido en anchura
  • Ordenación topológica (toposort)
  • Recorrido de laberintos

Algoritmos voraces

Estos algoritmos tienen hambre, pero de eficiencia. En ocasiones no son perfectos, pero pueden hallar soluciones rápidas a una multitud de problemas en pocos pasos y de forma sencilla.

  • Introducción a los algoritmos voraces
  • Cambio de monedas
  • Problema de la mochila fraccional
  • Selección de actividades

Voraces sobre grafos

Es hora de demostrar los conocimientos que has adquirido en los temas de algoritmos sobre grafos y voraces, porque aquí vamos a combinar ambos conceptos para crear algoritmos bastante interesantes y con muchas aplicaciones prácticas.

  • Introducción a los voraces sobre grafos
  • Algoritmo de Dijkstra
  • Algoritmo de Prim
  • Algoritmo de Kruskal

Divide y vencerás

¿Cómo podemos resolver un problema muy grande? Fácil, dívidelo a la mitad. Y vuelve a dividirlo. Y otra vez. Y una vez más si hace falta.

  • Introducción a los algoritmos de divide y vencerás
  • Búsqueda binaria

Vuelta atrás

En la vida real no puedes retroceder, arreglar tus errores y cambiar el destino, pero en estos problemas con algoritmos de vuelta atrás sí que puedes. Todas las veces que quieras, además.

  • Introducción a los algoritmos de vuelta atrás
  • Mochila binaria (cero-uno)
  • Problema de las ocho reinas
  • Laberintos
  • Caminos y ciclos hamiltonianos

Ejercicios y applets interactivos

Se recomienda acceder a los applets desde un navegador de escritorio o una tablet.

Tema 0: Introducción a Python

Ejercicios

0.1 - ¡Hola, Python! 0.2 - Pirámide de cajas 0.3 - Calificaciones 0.4 - Playlists 0.5 - La calculadora humana 0.6 - Habitaciones de hotel 0.7 - Tres en línea

Tema 1: Algoritmos sobre grafos

Ejercicios

1.1 - Peajes 1.2 - Caverna oscura 1.3 - Genealogía intrincada 1.4 - Venta de entradas

Applets interactivos

Recorrido en profundidad (DFS) Recorrido en anchura (BFS) Ordenación topológica (toposort)

Tema 2: Algoritmos voraces

Ejercicios

2.1 - ¿Cuántas pesetas? 2.2 - Mad Hot Festival 2.3 - Isla Wuhu

Applets interactivos

Mochila Monedas

Tema 3: Voraces sobre grafos

Ejercicios

3.1 - SimCity 3.2 - Recogida de pedidos

Applets interactivos

Algoritmo de Dijkstra Algoritmo de Prim

Tema 4: Divide y vencerás

Ejercicios

4.1 - El precio justo 4.2 - Voy en un coche 4.3 - ¡Descalificados!

Applets interactivos

Búsqueda binaria

Tema 5: Vuelta atrás

Ejercicios

5.1 - Juegos de Steam 5.2 - Lámparas de Layton 5.3 - Sudoku 5.4 - Tranvía de Móstoles

Applets interactivos

Mochila 0-1 Sudoku