4ª jornada (normas)

¡Hola a todos!

Espero que hayais sobrevivido a las vacaciones, porque nos quedan dos jornadas de infarto por delante.

Introducción

Como anticipo, os diré que la arquitectura de los dos juegos que quedan está relacionada, así podreis reutilizar parte del código para la quinta jornada De momento, para ir calentando os proponemos un COMECOCOS un tanto especial. Ya que irá por turnos y el comecocos podrá moverse en diagonal.
El enfoque principal de esta jornada es que trabajeis un poco con IAs sencillas (la de los fantasmas que siguen al comecocos), por eso el tema del movimiento por turnos. Un ejemplo  de como funciona el comecocos, por si alguno ha vivido estos últimos años debajo de una piedra. Recordad que lo vais a hacer por turnos:
  • http://www.thepcmanwebsite.com/media/pacman_flash/
¿Habéis  tenido la desgracia  suerte de dar prácticas de Lógica con PL-Man?. Pues el funcionamiento por turnos es parecido, pero los requisitos son más sencillos en nuestro caso:
  • http://plman.i3a.ua.es/
Para un ejemplo de Comecocos avanzado, os recomiendo el clásico español Mad Mix Game. Tiene powerups interesantes además del supercoco (avanzad un poco el video):
  • http://www.youtube.com/watch?v=CeBI_DGR9sg

Requisitos

El objetivo de esta jornada es hacer un juego estilo Comecocos  por turnos. Es decir:
  • Cuando pulsamos una tecla de movimiento, el comecocos se mueve una única casilla y el resto de entidades se mueven.
  • Si no pulsamos nada, el juego permanece a la espera
  • Se permiten movimientos en diagonal
  • Las teclas de movimiento para las 8 direcciones son:
    • Q: Arriba-Izquierda
    • A: Izquierda
    • Z: Abajo-Izquierda
    • X: Abajo
    • C: Abajo-Derecha
    • D: Derecha
    • E: Arriba-Derecha
    • W: Arriba
  • Se mantiene la tecla ESPACIO para aceptar en los menus y ESC para cancelar o salir del juego y los menús.
  • La pantalla del juego no debe exceder los 80×24, como siempre.
  • El mapa del juego puede tener dimensiones arbitrarias, si se usa scrolling.
  • El juego debe tener como mínimo 5 niveles de dificultad creciente
  • Se permite la generación aleatoria de niveles
  • Los niveles deben simular como mínimo las siguientes entidades
    • Comecocos: El protagonista del juego
    • Muro: Espacio sólido que ni comecocos ni fantasmas pueden atravesar.
    • Fantasma: Se mueven como el comecocos. Pueden tener una ruta programada o usar algun tipo de “Inteligencia” artificial. Tambien se pueden mover en diagonal. Si mueren, tienen que resucitar en un hueco aleatorio del mapa transcurrido un número fijo de turnos.
    • Coco: El comecocos debe comérselos todos para pasar de nivel.
    • SuperCoco: El comecocos se vuelve invencible durante N turnos y puede comerse a los fantasmas. La cantidad de turnos de invencibilidad se debe indicar en la pantalla de juego.
  • Podeis añadir tantas entidades extra como querais: puertas que necesitan llaves, armas, otros tipos de enemigos [pista]… os puede servir de cara a la jornada siguiente …[pista]
  • No se permite la E/S bloqueante salvo para leer algún nombre largo por pantalla
  • No se permite sonido, menos la típica campanita del terminal (Carácter ‘\a’ )
  • El sistema de puntuación dependerá como mínimo de la velocidad con la que se ha completado el nivel y el numero de fantasmas comidos. Podeis añadir bonus, logros y cualquier cosa extra que se os ocurra.

Entrega

  • Se enviarán las entregas y evaluaciones a ligabitheroes@byterealms.com
  • El asunto del mail será: “Entrega Jornada 4”.
  • Las entregas van en formato .tar.gz y deben incluir obligatoriamente los siguientes contenidos
    • Código fuente del juego
    • Archivo Makefile para compilar el juego
    • README Con el autor y una breve descripción del juego, así como las notas oportunas que se quieran explicar
    • COPYING Con una copia de la licencia GPL v3 en inglés
    • No se permiten ejecutables del juego, la entrega es estrictamente en código fuente
  • Recordad que la plataforma de evaluación es el Ubuntu de los Laboratorios EPS, que os podeis bajar y usar sin instalarlo en vuestro PC:
    • http://www.eps.ua.es/dvdubuntueps/
  • En la sección “Ejemplo de Uso” os podeis bajar un archivo de ejemplo, que podeis usar de base para vuestra entrega.
  • Las entregas que no cumplan los requisitos serán automáticamente descalificadas

Fechas

  • Entrega: Hasta el Viernes 16 de Septiembre de 2011 a las 23:59 pm
  • Se enviarán las entregas para su evaluación al día siguiente
  • Evaluación: Hasta el Martes 20 de Septiembre de 2011 a las 23:59 pm
  • Se publicarán  las evaluaciones y puntuaciones el Viernes 23 de Septiembre de 2011 a mediodía

Ejemplo de uso de StdPijo

  • Os podeis bajar un ejemplo de StdPijo uso desde el siguiente enlace, os recomendamos su uso y modificación
    • http://dl.dropbox.com/u/2756591/bitheroes-ejemplostdpijo.tar.gz

Consejos

  • Como la anterior jornada, las simulaciones como el Comecocos se pueden diseñar de manera fácil mediante programación orientada a objetos
  • Id pensando en temas de extensibilidad, como podemos añadir nuevos tipos de objetos al juego: Herencia, composición, ficheros externos de datos, etc.
  • Es buena idea crear algun tipo de formato externo de mapa para el juego. Así se pueden editar mapas sin necesidad de recompilar. Si los mapas se muestran en ASCII, el formato de fichero es obvio ;).
  • Si vais a dotar al los fantasmas de IA, lo primero que necesitareis programar es algun sistema de “radar” o “visión” para los fantasmas. Un enemigo que parece Dios no se percibe de manera muy “justa”.
  • Hablando de IA, no os compliqueis la vida con algoritmos raros. A veces la mejor IA son métodos sencillos, bien afinados mediante pruebas con el juego.

Esperamos ansiosos vuestras versiones retorcidas del PacMan. Happy Hacking!