martes, 27 de septiembre de 2016

COCO-NUT

Pantalla de presentación de COCO-NUT


Eres Jony de profesión recogedor de COCOS.
Tu misión recoger todos los cocos que se han
esparcido por una isla perdida cuando la sobre volabas con tu avioneta.



Así de simple y chorra es el argumento de COCO-NUT. Tan simple como su jugabilidad, bastante escasa por otra parte. ¿Entonces, que gracia tiene el juego?

Este juego lo programe a la vez que Jet Set Basic, para el concurso de Juegos de Bytemaniacos en el año 2006, pero esta vez para la categoría 10 Lineas BASIC 

Si, TODO el juego esta programado en 10 lineas. En 10 ENORMES lineas :)

Como os podéis imaginar la dificultad de hacer algo decente en tan solo 10 lineas es bastante extrema. Te obliga a pensar con mucho cuidado como plantearte todo el código y como agrupar las cosas para aprovechar al máximo cada linea.


Parte de la linea 10. Que ocupa la friolera de 12010 caracteres.
Para que os hagáis una idea la linea mas larga tiene 12010 caracteres. Esta linea en concreto es en la que se definen todos los niveles, posición de objetos, nombre del nivel, etc..

El control del personaje, colisiones y recogida de objetos esta todo metido en 3 lineas. Aquí las tenéis, a los que sepáis programar os parecerá interesante. 

4 LET k$=INKEY$: IF k$="q" OR k$="a" OR k$="Q" OR k$="A" THEN LET odx=dx: LET ody=dy: LET dy=-1: LET dx=0: IF k$="a" OR k$="A" THEN LET dy=1

5 LET k$=INKEY$: IF k$="o" OR k$="p" OR k$="O" OR k$="P" THEN LET odx=dx: LET ody=dy: LET dx=-1: LET dy=0: IF k$="p" OR k$="P" THEN LET dx=1

6 LET x=x+dx: LET y=y+dy: LET x=z(x+2): LET y=z(y+2): PRINT AT y,x; INK 5;"\c": PRINT AT oy,ox; INK 1;"\d": PAUSE vel: IF s$(y+1,x+1)="\b" THEN LET cocos=cocos-1: BEEP 0.04,8: LET puntos=puntos+10: LET s$(y+1,x+1)="\d": IF cocos<=0 THEN LET vel=vel-1: FOR i=1 TO 3: FOR j=0 TO 11: BEEP 0.065,j*i: NEXT j: NEXT i: GO TO 2

¿Y que otras características tiene? Pues no muchas mas, 7 gráficos diferentes para generar los escenarios y objetos, música y sonidos y un total de 10 niveles. Por supuesto, todo metido en el código del juego. No hay carga de archivos externos.

La primera pantalla del juego.
Como juego no es gran cosa, consiste en llevar a Jony por una serie de pantallas mas o menos laberínticas evitando chocar contra las paredes y algún otro objeto letal y recogiendo cocos.
Todo esto si puedes aguantar que la pantalla se genere ya que cada una tarda unos 30 segundos
La rutina encargada de generar cada pantalla está hecha en una sola linea, lo que la hace terriblemente lenta. 
Pero bueno es lo que hay en tan solo 10 lineas...

ENLACES

  • Juego, en formato .tap y .tzx
  • Código fuente, en formato .bas. Se puede abrir con Basin o con cualquier editor de texto plano como Notepad++

3 comentarios:

  1. Por $deity, ¡tengo que hacer algo así!
    Igual en la próxima gamejam.

    ResponderEliminar
  2. El primer comentario en el blog!! Yiijaa XD
    Es bastante entretenido machacarse el cerebro intentando comprimir todo en pocas lineas. No vale pa na pero pasas el rato :)

    ResponderEliminar
  3. Hola como te va, me gustaria conversar contigo temas de AMOS, yo tambien hago juegos en AMOS, te interesa?

    ResponderEliminar