2ª jornada (normas)

Hola a todos. Después del parón por exámenes, volvemos a la carga con una nueva Jornada de la Liga Bit Heroes. Esta vez vamos a programar un juego algo más complicado, con un bucle de juego como $DEITY manda y con gráficos ASCII algo más avanzados.  Para ayudaros un poco con los colores y la posición del cursor vamos a usar StdPijo, que es una pequeña biblioteca para programar juegos en ASCII.

Introducción

El juego que proponemos esta Jornada es un clon del Mined-Out. Una mezcla entre Frogger y Buscaminas. Aquí podeis disfrutar de la versión en Flash del juego:

http://www.playitontheweb.com/games/Mined-Out-game.htm
Requisitos del Juego
 
Aunque podeis incorporar variantes creativas, el juego debe mantener la mecánica básica del Mined-Out y respetar estas convenciones
  • No se permiten gráficos, pero se permite el uso de códigos ANSI para mostrar texto en colores y posicionar el cursor en la pantalla.
  • El área total de la pantalla de juego no debe exceder de 24 filas por 80 columnas. Esto es el tamaño de un terminal estándar.
  • Los controles del serán FIJOS y serán los siquientes
    • W – Arriba
    • A – Izquierda
    • S – Abajo
    • D – Derecha
    • Espacio – Aceptar/Adelante
    • ESC – Salir/Atrás
  • El jugador debe empezar desde un lado del mapa y terminar en el otro. Da igual si es horizontal o vertical
  • Al pasar de nivel se incrementa la dificultad
  • Se debe indicar en un marcador el número de minas que rodean al jugador en todo momento
  • Se debe dibujar en el mapa el rastro que ha seguido el jugador por el campo de minas
  • Cuando el jugador pise una mina, se mostrarán en pantalla la situación de todas las minas en el mapa
  • La puntuación del jugador dependerá, como mínimo, del tiempo que ha tardado en completar el mapa
  • Los campos de minas se generan de manera aleatoria, basados en la dificultad del nivel
    • Es decir, no existe un límite teórico de niveles
    • Para aliviar esta restricción, no es necesario comprobar si el nivel generado tiene solución o no.  Os perdonamos la vida en eso 🙂
  • No se permite leer del teclado de manera bloqueante, salvo para leer algún nombre en un hipotético ranking. Se puede usar StdPijo ncurses para cumplir con esto
  • No se permite la inclusión de sonido o música en el juego.
Entrega
  • Se enviarán las entregas y evaluaciones a ligabitheroes@byterealms.com
  • 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, 1 de Julio de 2011 a las 23:59 pm
  • Se enviarán las entregas para su evaluación antes del lunes, 4 de Julio
  • Evaluación: Hasta el Martes, 5 de Julio de 2011 a las 23:59 pm
  • Se publicarán las evaluaciones el Viernes, 8 de Julio.
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
Algunos Consejos
  • Obviamente, la estructura de datos más adecuada para representar el mapa es una matriz bidimensional
  • Para programar con StdPijo hay que instalar el paquete libncurses5-dev libncurses-dev
  • Si os apetece, podeis usar ncurses directamente en vez de StdPijo
    • http://es.tldp.org/Tutoriales/NCURSES/tutorial-ncurses.html
  • Para evitar dibujar muchas veces, podemos limitar el framerate del juego usando usleep
    • http://manpages.ubuntu.com/manpages/lucid/es/man3/usleep.3.html
  • Para medir el tiempo de manera más eficiente, usamos gettimeofday
    • http://es.tldp.org/Tutoriales/NCURSES/tutorial-ncurses.html

Estamos ansiosos de ver vuestros progresos. Happy Hacking !