lunes, 27 de agosto de 2012

Retro Invaders, ultimas publicaciones

Retro Invaders, ultimas publicaciones

Link to RetroInvaders

MSXBlog de Konamito: Lavado de cara de la sección de juegos MSX

Posted: 27 Aug 2012 04:32 PM PDT

Durante las últimas semanas he estado bastante ocupado trabajando a ratos en la actualización de la sección de juegos MSX que desde hacía ya un tiempo quería mejorar. Las ideas principales del cambio eran hacer más accesible la información al visitante y activar la posibilidad de compartir información en las redes sociales. Creo que he conseguido  [ Read More ]

El Retroviajero: RETROREPORTERO - Especial "Los Mercenarios 2"

Posted: 27 Aug 2012 04:20 PM PDT

Fueron las grandes estrellas del cine de acción en los ochenta y mediados de los noventa, protagonizaron las películas más taquilleras en aquellos maravillosos años, pero claro… pasaron su época, otros, con más pena que gloria, les sucedieron… pero han vuelto para reclamar su lugar en el Olimpo de los mejores… Con el estreno de la película "Los Mercenarios 2", tres grandes iconos vuelven a la actualidad, junto a otros mitos del género en los ochenta: Sylvester Stallone, Arnold Schwarzenegger y Bruce Willis. La película, por supuesto, debéis verla, en general no está mal, pero es que los últimos 40 minutos son épicos y B-R-U-T-A-L-E-S. No digo más.

Trío de Ases... Un sueño hecho realidad

El caso es que, como jóvenes y tiernos infantes que éramos, nuestro deseo era ser como ellos ¿Cómo? Muy sencillo… con nuestros queridos ordenadores, evidentemente. El hecho es que era muy típico trasladar las aventuras cinematográficas de nuestros actores favoritos a nuestros humildes sistemas, con lo cual se aseguraban unas buenas cifras en ventas. Desde luego, no voy a valorar la calidad de los juegos, pero, honestamente, la mayoría estaban bastante bien y permitían desfogarnos en nuestro afán por parecernos a nuestros héroes.

Desde estas líneas, haciendo un paréntesis en mi previsión de publicación de entradas, y como "homenaje" a estos íconos del cine de sudor y cerveza, quiero comentar muy por encima la trayectoria videojueguil que tuvieron estos actores en nuestros queridos computadores. Realmente, si nos ceñimos únicamente al Spectrum, Amstrad, C64… podemos ver que no fueron tantas las películas versionadas. Es más, nos tendríamos que remontar a otros sistemas y consolas para ver un catálogo de títulos más extenso, pero no es lo que nos interesa ahora...

Comenzamos, como no, con el Chuache. Cinco películas protagonizadas por éste gigante austríaco en los ochenta y principio de los noventa tuvieron su respectivo videojuego, todos ellos mínimamente aceptables, pero con cierta disparidad. 

IIIAAAA!!! Chuache "Científico"
 
Empezamos por el "Predator", donde controlando a "Arnie", nos internamos en la jungla mientras eliminamos a los guerrilleros enemigos y huimos del depredador. En la práctica, el control confuso y la rapidez con la que nos eliminan convierten lo que podía haber sido un gran juego en una experiencia frustrante. No obstante, merece unas partidas. Puede que le cojáis el gusto.

Versión C64

En "The Running Man", encontramos cinco fases exactamente iguales, donde correremos hacia la derecha derrotando a los pocos enemigos que nos aparecerán, hasta encontrar al pertinente jefe final. Intercaladas entre las fases tendremos unos niveles extra consistentes en un puzle que nos regenerará toda la energía si logramos completarlo. Juego algo monótono pero mínimamente divertido. 

Versión C64

Extrañamente le tengo cariño a este juego, sobre todo su versión Amstrad, el cual tuve en su tiempo, y me encantaba la introducción, con la silueta blanca recorriendo las letras del título en el centro de la pantalla, como en la peli. En fin, pura nostalgia…

Corre, Chuache, corre...

El siguiente es "Red Heat (Danko: Calor Rojo)", Beatm´up monótono, soso y largo como pocos. El todo en el juego es golpear y esquivar cuanto enemigo sale a nuestro paso. El avance de nuestro personaje es automático, y el nivel no acabará hasta rellenar el letrero del título. No obstante la incesante aparición de enemigos provocará una mosqueante frustración en el jugador. Pruébalo, pero posiblemente no aguantes ni el primer nivel.

Versión Spectrum

Por último tenemos posiblemente los dos mejores juegos del Chuache: "Total Recall (Desafío Total)", complicado arcade con geniales gráficos en cualquier versión, todas recomendadas.

 
Versión Spectrum

El otro es "Terminator 2", otro arcade genial, difícil, con múltiples y diferentes fases, de la que recomiendo especialmente la versión C64, con dos niveles más.

Versión Amstrad

Sly queda por detrás, con solo tres juegos en su haber, pero todos buenos. Tenemos los dos RAMBOS, para los cuales no voy a decir nada, puesto que tienen su correspondiente análisis, el cual os recomiendo leer,  en "Cine en 8 bits", y el tercero en discordia, "Cobra".

No siento las piernasss 
 
Éste juego ofrece su mejor versión en Spectrum, con un divertido arcade donde tendremos que eliminar cuanto enemigo salga a nuestro paso. Obviamente, el desarrollo del juego en sus tres versiones es idéntico, pero la versión "Speccy" cuenta con un sentido del humor y una simpatía general inexistente en las otras que la hace merecer el primer puesto en su ranking particular.

Versión Spectrum

El último, pero no menos importante, es Bruce Willis, quién tuvo igualmente su hueco en nuestros queridos ordenadores. 

Camilo Willis

Escasa pero buena participación, con tres juegos, entre ellos las dos primeras entregas de la saga "Die Hard (Jungla de Cristal)", quienes cuentan con su "Cine en 8 bits" correspondiente. El tercer juego es "Hudson Hawk (El Gran Halcón)", donde Willis encarnaba a un dicharachero ladrón, y en el que efectivamente tendremos que robar unas obras de arte en varios escenarios. Divertido en cualquier versión.

Versión Spectrum

Pues bueno, creo que eso es todo… ejem… esperad un segundo… He olvidado mencionarlo… el más grande… el más fuerte… Chuck Norris - ¿COMOOOO? ¿Él tiene un videojuego? Debe ser el mejor videojuego del mundo… - Ehnn, pues no, me temo. Es más, "Chuck Norris Superkicks" es posiblemente el peor juego del Commodore 64, única plataforma (junto a Atari 2600) donde salió, y con razón. En fin, mirad la captura y llorad por Chuck, porque él nunca llora…

Versión C64

Esperad un momento, tengo una nota de los programadores con la verdad sobre el juego: En la primera versión del juego, Chuck era  tan fuerte y poderoso que debieron reprogramar el juego para mantenernos a salvo.

"Gracias a mi patada giratoria, la tierra comenzó a girar"

Locomosxca-world: King Kong 2: La leyenda Revive (MSX2)(Ultimate translation)

Posted: 27 Aug 2012 03:47 PM PDT

No hace mucho ya hable por aquí de la traducción del King Kong2 al español y es que hace un par de semanas Imanok con la ayuda de Manuel Pazos ha retraducido dicho juego en lo que a textos se refiere y el titulo inicial que a ser grafico necesitaba trastear un poco mas el juego. Pero eso no es todo y como la lista es larga os la pongo para que veáis que se lo han currado, por lo cual creo que esta será la traducción definitiva. Lista de mejoras: -Nueva pantalla de título traducida. ...

[[ This is a content summary only. Visit my website for full links, other content, and more! ]]


Gamers Up!: The Ultimate History of Video Games

Posted: 27 Aug 2012 03:00 PM PDT


Hoy os traemos una propuesta que seguro que a muchos fans de los videojuegos le puede interesar, se trata de un libro que cuenta la historia de los videojuegos como nunca antes hemos podido leer, con anécdotas, historias ocultas, y todo aquello que está detrás de nuestro hobby favorito.

El libro empieza contando cómo se empezaron a comercializar las primeras máquinas de pinball y los problemas legales que tuvieron que superar para poder ser usadas en los EE.UU. hasta 30 años más tarde pasando por la era dorada de los arcades, la caida de Atari, los lanzamientos de las consolas de 8, 16, 32 bits... etc... con todo lujo de detalles y datos interesantes.

Imaginaos todo lo que se puede contar en 624 páginas, si estáis interesados, en Amazon se puede comprar a muy buen precio, la única pega es que no lo han editado aún en castellano.


Pixelacos: 20 años de Super Mario Kart

Posted: 27 Aug 2012 02:46 PM PDT

Y es que 20 años no son nada. Tal día como hoy en 1992 Lakitu nos daba luz verde a una de las mejores sagas de carreras arcade, aunque en Europa no lo disfrutaríamos hasta enero del 93.

El juego nos permite escoger uno de los míticos personajes de la franquicia Super Mario para que conduzca nuestro pequeño kart. Me atrevería a afirmar que este detalle no es el más importante de la saga. Si hay algo que le hizo triunfar por encima de sus carismáticos personajes son su jugabilidad, su diversión y su adicción infinita.

El título fue un claro representante del flamante modo 7 que tanta presencia tuvo en la 16 bits de Nintendo y que lo dotaba de una apariencia espectacular para la fecha.El tercer juego más vendido de la Supernintendo hizo historia y de él surgieron (y aun le surgen) multitud de clones y competidores que intentaron aproximarse a su fórmula de éxito con más o menos acierto. Street Racer, Wacky Wheels o Sonic Drift son algunos ejemplos.

Con 7 títulos a sus espaldas (más 2 arcades) y el último de ellos lanzado hace menos de un año, es sintoma de que la saga goza de buena salud y que con toda seguridad seguiremos disfrutando por muchos años de las carreras del fontanero.

Sito, vete ahora mismo a echar unas partidillas y así celebras el aniversario de uno de tus juegos favoritos de toda la historia.

El Spectrum Hoy: Y Don Quijote venció a los gigantes

Posted: 27 Aug 2012 12:50 PM PDT

Si hay un género muerto en el mundo de los videojuegos, ése es sin duda el de las aventuras conversacionales o de texto. Es cierto que todavía se publica alguna de vez en cuando, pero siempre dentro de círculos muy restringidos de aficionados al vintage informático y con una repercusión testimonial, cuando no aún menor.

Jack the Ripper, ejemplo de aventura de texto clásica que fue uno de los primeros juegos en recibir la calificación para mayores de 18 años por la crudeza de sus descripciones.

Los conversacionales llegaron en un momento de la historia en que la informática y los videojuegos eran primitivos y elitistas, destinados a gente que ocupaba cargos de responsabilidad en áreas tecnológicas de laboratorios, grandes centros de computadoras y sitios así. "Intelectuales", en definitiva. La popularización de los videojuegos y el desembarco de estos en el hogar gracias a ordenadores y videoconsolas cada vez más asequibles y con mayor potencia, sobre todo durante los años ochenta, llevó al nacimiento de una serie de géneros más adecuados para el usuario casual que sólo buscaba evadirse de lo cotidiano un par de horas al día, pero las aventuras conversacionales también encontraron su hueco: entonces, como ahora, no todos los jugones se contentaban con el simple hecho de apolillar las neuronas masacrando hordas extraterrestres y preferían algo que les obligase a discurrir, a echar mano del ingenio para resolver enigmas. En los años noventa, la evolución de la informática y su masificación hasta extremos desconocidos con anterioridad enterraron el género conversacional prácticamente de la noche a la mañana: las nuevas aventuras gráficas eran más atractivas y fáciles de manejar (no necesariamente de resolver) merced al aprovechamiento de los crecientes recursos disponibles, e iban dirigidas a una nueva generación de jugadores que, con razón, ya no estaba dispuesta a perder el tiempo rebanándose los sesos sólo para adivinar la forma correcta de darle una orden a su personaje, el llamado "síndrome de la palabra exacta", que por culpa de las limitaciones de micros como el Spectrum y la ineptitud de ciertos programadores llevó a episodios tan grotescos como el que se describe en este sensacional artículo sobre Zipi y Zape, cuya resolución precisó de veinte años y una investigación detectivesca porque nadie sabía qué palabras había que utilizar para resolver uno de los puzles del juego.

A buen seguro el peor conversacional de la historia. Y por supuesto, es español.

Hay que decir, no obstante, que los conversacionales cumplieron su función especialmente en Europa, donde tendieron un puente utilizado por muchos para introducirse en el fascinante mundo de la literatura fantástica y los juegos de rol, ganándose numerosos seguidores en un momento en que ciertos aficionados a los videojuegos no tenían nada mejor que echarse a la boca porque el RPG era algo virtualmente desconocido fuera de Estados Unidos y porque, simple y llanamente, los ordenadores domésticos de la época no daban para más. Los mayores éxitos se alcanzaron en Inglaterra, donde había un mayor porcentaje de público juvenil / adulto dispuesto a malgastar su vida con los videojuegos pero donde el rol puro y duro de Ultima y similares no tenía cabida. En España, empero, la situación era diametralmente opuesta: al secular atraso del país respecto a sus vecinos del continente, había que sumarle la concepción generalizada de que los videojuegos eran "cosas de niños" más próximas como entretenimiento al Tente o los Clicks que a algo más serio como, pongamos, el cine. El sistema educativo era casi tan desastroso como ahora (casi), ninguneando la enseñanza de idiomas frente a asignaturas como Religión al punto de que famosos presentadores de TV como José María Íñigo o Jesús Hermida, capaces de expresarse con soltura en inglés, eran vistos por el resto de la plebe del mismo modo en que se observa un lienzo cubista. Todo eso, junto a un mercado de dimensiones ridículas en el que no valía la pena gastar dinero en traducir un videojuego y no existían leyes que obligasen a ello, explica muy claramente por qué las aventuras de texto, densas, lentas y potencialmente aburridas, jamás se comieron un pijo en tierras ibéricas. ¿Jamás? Bueno, ciertamente no: hubo al menos una ocasión en que "conversar" con el ordenador llegó a ser un fenómeno popular.

No deja de resultar curioso que uno de los primeros videojuegos desarrollados en España (en 1984, con el Spectrum recién desembarcado desde UK) fuese un conversacional, Yenght, cuyo valor no va más allá de ser el primero de su tipo en castellano. Hasta 1987, los diversos intentos (tampoco muchos) para hacer del conversacional un género con posibles en la tierra del jamón serrano oscilaron entre la completa indiferencia y el absoluto fracaso: el idioma seguía siendo un obstáculo infranqueable y el escaso apego del público español hacia este tipo de productos desalentaba a programadores y distribuidores, aunque The Hobbit se ganó un buen grupo de talifanes (siempre teniendo en cuenta lo minoritario de este asunto) pese a estar en purirtito inglés, merced a la novela de Tolkien y a la gran calidad atesorada por el juego en sí, una de las mejores aventuras que jamás se han realizado. Incluso la sesuda revista ZX, poco dada en sus primeros tiempos a ver al Spectrum como artefacto para jugar, le dedicó una exhaustiva guía que nos sirvió a muchos para darle una oportunidad, avanzar en la práctica del inglés y, ya que estábamos, animarnos a leer la novela por primera vez. Otro pequeño hito llegó en 1985 con Gremlins: the Adventure, que alguien decidió traducir oficialmente al castellano. La popularidad de la cinta de Joe Dante era aún muy grande en todo el mundo y el juego, diseñado por el antiguo ingeniero de telecomunicaciones Brian Hodwarth incidiendo en la riqueza gráfica a costa de sacrificar la calidad del parser (el intérprete de comandos que "traduce" al ordenador las órdenes que el jugador le escribe), estaba hecho para atraer a un público más numeroso del acostumbrado en esta clase de saraos. La fórmula funcionó más o menos bien, aunque tampoco para tirar cohetes, con algunos detalles de traducción ciertamente chocantes como la necesidad de escribir "empujar botón" en lugar de "pulsar botón" para efectuar dicha acción y otras lindezas por el estilo.

http://www.youtube.com/watch?v=2NXVejxfTTQ

La solución a Gremlins… en inglés. Que ya va siendo hora de que aprendáis de una vez el idioma, joer.

Así llegamos al mencionado 1987 en el que los conversacionales, merced al auge de otros géneros como las conversiones de recreativa tan de moda entonces, parecían cosa del pasado. Y miren por dónde, cuando menos se lo esperaba todo el mundo llegó el bombazo que puso a las aventuras de texto en el mapa del videojuego español. En ello tuvo mucho que ver tanto la confianza que Dinamic Software depositó en el proyecto, orquestando para el caso una potente campaña publicitaria, como la bajada de precios que a principios de ese año llevó el PVP de los videojuegos desde las 2.500 pesetas (carísimos) hasta las 875 (asequibles, lo que animaba a probar fortuna comprando cosas que de otro modo no comprarías nunca).

Don Quijote fue muy bien recibido teniendo en cuenta los precedentes y su éxito abrió las puertas a un mercado que hasta entonces no existía en España, espoleando a la creación de un buen número de aventuras comerciales durante los años siguientes, algo que antes parecía inimaginable. El género conversacional atravesaba ya cierta decadencia en Inglaterra y a España el boom llegó con retraso, pero podría decirse que era mejor llegar tarde que no llegar. En Dinamic tenían una espina clavada tras el fracaso de Yenght y Cobra´s Arc (algo así como la versión española de Shadowfire) y decidieron coger el toro por los cuernos seleccionando el trabajo de un joven programador freelance llamado Jorge Blécua, buen aficionado a las aventuras. De este modo fue como Arquimedes XXI llegó a las tiendas durante los primeros compases de 1987. Se trataba de un conversacional bastante tosco incluso para aquel momento, con un parser hecho en BASIC pero fácil de acabar y dotado de unos gráficos algo esquemáticos aunque vistosos. Un juego claramente orientado a aventureros novatos, cuyo aceptable éxito animó a Dinamic a fijarse en el siguiente y muy ambicioso proyecto de Jorge, que firmaba sus obras escribiendo su nombre al revés (EGROJ) y para la ocasión ya se había entrenado a fondo en el uso de un parser profesional, el Graphic Adventure Creator o GAC. Dinamic llegó incluso a adquirir los derechos de la legendaria serie dibujos animados producida por Cruz Delgado y José Romagosa en 1979 con la idea de darle al juego un aspecto gráfico que recordase al de la serie y poder usarlo en la publicidad. La intención estaba muy clara: apelar a la fibra sensible de quienes habían visto la serie de niños y ocho años después, convertidos en adolescentes o jóvenes universitarios, buscaban un entretenimiento que fuese más lejos del típico matamarcianos, habitualmente destinado a un público más pueril. Una jugada maestra que dio buenos resultados.

 Nunca me gustaron los conversacionales. Aunque a The Hobbit le deba algunas cosas y no me negaba a probar, llevado por mis ansias de curiosidad, cuantos juegos de este tipo caían en mis manos, la realidad es que no llegué a engancharme con ninguno. Si bien en aquella época no tenía mucha querencia por los arcades puros, muchos directamente injugables por difíciles, puestos a elegir géneros menos adrenalíticos optaba por videoaventuras y juegos de estrategia tal que simuladores y cosas así antes que aquellos "libros interactivos" sin apenas acción, lentos y hasta incómodos de jugar por culpa del teclado de los primeros Spectrum como el Gomas o el Plus, más adecuado para utilizarse como sonda anal que para escribir. Pese a todo, el Quijote cumplía con lo que se esperaba de él y no me pareció un mal juego cuando por fin pude probarlo, si bien el GAC enseguida mostraba sus limitaciones, con apariciones estelares del "síndrome de la palabra exacta" nada más empezar y otras carencias que entorpecían el desarrollo de la partida de manera bastante absurda. En eso no se diferenciaba demasiado de cualquier aventura de texto al uso, si bien se notaba el esfuerzo realizado para hacerla "amistosa" a jugadores poco habituales y, al mismo tiempo, enganchar a usuarios duchos en estas lides que estuviesen hartos de tener que jugar leyendo y escribiendo en inglés.

Muestra de la diversión que puede ofrecernos una aventura de texto: el parser no entiende “leer” refiriéndose al libro, hay que especificarle que quieres “leer el libro”. Jrandioso.

Un esfuerzo loable que, pese a sus limitaciones como digo, obtuvo su recompensa. Ya fuese por su calidad, ya fuese por el acoso publicitario, ya fuese por ambas cosas a la vez, el hecho es que Don Quijote triunfó y fue una especie de pistoletazo de salida para el conversacional en España, que se puso de moda. Pero el idilio no duró demasiado: el fracaso de Los pájaros de Bangkok al año siguiente, basado en el afamado libro de Manuel Vázquez  Montalván, hizo añicos, esta vez para siempre, la tensa relación entre Dinamic y las aventuras de texto. Egroj dejó la compañía madrileña para fundar su propia casa de software, Odisea, bajo la cual publicó Abracadabra, también usando el GAC y también con una calidad bastante aceptable, pero con el que no logró demasiada repercusión. Sería su último juego. Capítulo aparte merece la aventura (nunca mejor dicho) de la compañía valenciana AD, fundada por Andrés Samudio en 1989 y mítica entre los aficionados españoles al género, que aún tienen grabado en su cerebro los momentos vividos con La aventura original, La diosa de Cozumel o Jabato. Pese a todo fue un episodio efímero que nunca rebasó el umbral de una mínima rentabilidad y finalmente concluyó en 1993, sin haber logrado sobreponerse a la diáspora que arrasó a la industria española del videojuego ni haber sabido engancharse al carro de la modernidad impuesto por Lucas Arts y sus aventuras gráficas. Sus juegos, pese al elevado grado de sofisticación de su intérprete, el DAAD, y su alta calidad técnica, pertenecían a una época muerta.

Jabato en versión para Commodore Amiga. ¿Prefieren jugar a esto o al Monkey Island en el mismo ordenador? Pues eso.

Ésa es, ni más ni menos, la sensación que uno tiene cuando juega con una aventura conversacional como Don Quijote. Echarse una partida con un producto de esta clase es como salir a la calle vistiendo una armadura medieval. Nadie que haya empezado en esto de los videojuegos a partir de los años noventa entenderá cómo fue posible que alguien gustase de perder el tiempo con algo así y, en muchos casos, encima comprarlo. Sólo una persona con la mente perturbada, como yo sin ir más lejos, tendría los santos cojones de estar una veintena de minutos frente a su ordenador jugando a pensar la forma correcta de darle una orden, usando verbos en infinitivo como el que los usa para hablar a los indios en una peli de vaqueros.

QBlog: Sandy QXT 640

Posted: 27 Aug 2012 11:58 AM PDT

El QXT 640 es un clon del Sinclair QL y fue la respuesta de Sandy al ordenador CST Thor 1 de la compañía CST (otro clon del Sinclair QL). Básicamente el Sandy QXT 640 estaba formado por la placa base original de QL con 128K RAM a la que se la añadía una ampliación “Super QBoard” de la propia Sandy con 512K RAM, un puerto Centronics, el Super Toolkit II, una controladora de disquetes con una 1 o 2 disqueteras, un teclado tipo IBM-AT, una fuete de alimentación interna de 60W y 3 slots de expansión. El sistema conservaba uno de los microdrives que se colocaba debajo de una de las disqueteras.

Se comercializaron varias versiones del QXT 640. La versión con una disquetera costaba 654 libras y con doble disquetera 699 libras. También estaba disponible en forma de kit para que el usuario pudiera construir el ordenador a partir de su QL original, el precio del kit era de unas 259 libras.

Sandy QXT-640

Sandy QXT-640


Archivado en: Hardware Tagged: Clon Sinclair QL, Sandy

QBlog: Recursividad en SuperBASIC

Posted: 27 Aug 2012 11:49 AM PDT

La recursividad es uno de esos temas que la mayoría de la gente con poca experiencia en programación seguramente ha oído hablar, pero pocos lo comprenden verdaderamente. Si pregunta a esa gente que ha oído hablar de la recursividad probablemente le conteste que la recursividad es algo así como “una rutina que se llama a si misma”.

Esa es una descripción razonable, aunque es algo más que eso. Si una rutina se llamara a si misma continuamente (como en el siguiente ejemplo), ésta se estaría ejecutando de forma indefinida, o al menos mientras el ordenador no agote su memoria.

  1000 DEFine PROCedure MENU  1010   MENU  1020 END DEFine MENU  

Además de ser una rutina, que se llama a sí misma (o se describe en el términos de sí misma), una rutina recursiva debe tener un mecanismo para garantizar las circunstancias en las se debe llamar a sí misma y cuando se debe proceder a una salida de dicha rutina o un retorno del mencionado procedimiento (o función). Como la recursividad es un tema difícil de explicar clara y brevemente en palabras sencillas, voy a presentar unas pocas rutinas de ejemplo para demostrar los usos de la recursividad en la programación en SuperBASIC.

La mayoría de los programadores que comprenden y utilizan la recursividad son capaces de detectar las tareas que requieren el uso de la recursividad, casi por instinto, pero pocos son capaces de explicar exactamente cómo llegaron a esa decisión. Sin embargo, una vez dominada la recursividad, ésta puede ser una poderosa y eficiente herramienta de programación.

La recursividad puede ser pensada como un proceso en el que una tarea puede ser desglosada en partes más manejables y pequeñas de una forma ordenada. Por lo tanto, la solución a esa tarea o problema se describe en términos de soluciones a problemas similares más pequeños. En este punto, los cerebros de muchas personas tienden a fundirse tratando de seguir las explicaciones, por lo que vamos a considerar un ejemplo muy simple para tratar de ilustrar lo que esto significa.

Supongamos que usted tiene un ejército. Su oponente tiene también un ejército con el mismo número de soldados que usted, por lo que seguramente no le guste la idea de entrar en una batalla donde existe un alto riesgo de que muchos de sus mejores soldados puedan ser asesinados o heridos. Así que decide optar por la estrategia de dividir a su enemigo en grupos más pequeños para simplificar el ataque. Esta estrategia podría ser denominada "divide y vencerás" – la reducción de un problema por medio de la división en varias secciones más pequeñas hasta que se haya terminado.

define procedure Conquista (grupos)    Si todos divididos entonces retornar    Dividir en otra sección (grupos - 1)    Conquistar ese grupo  end define

Tomemos ahora un ejemplo simple de la impresión de una serie de números del 1 al valor ‘n’ (cualquier número entero). Normalmente, enfocaremos el problema simplemente llamado a un procedimiento o instrucción de IMPRIMIR dentro de un bucle FOR. Sin embargo, podríamos escribir lo mismo mediante una rutina recursiva. Lo que estamos tratando de hacer es muy simple para intentar concentrarnos en la teoría y no en el problema en sí mismo. Empezaremos por desglosar el proceso en componentes más simples. Tenemos que imprimir los números, cada uno de los cuales es más grande que el tiene ante sí.

define procedure imprimir_numero (valor)    Si hemos alcanzado el límite, entonces salir          de este prodecimiento    Imprimir el siguiente número con imprimir_numero         (valor - 1)    Imprimir el número en la pantalla  end define

Esto es un pseudocódigo. Ahora vamos a escribir el código en un correcto SuperBASIC.

10 CLS : Print_Number_Up_To 10  20 :  100 DEFine PROCedure Print_Number_Up_To (value)  110   IF value = 0 THEN RETurn  120   Print_Number_Up_To value-1  130   PRINT value  140 END DEFine Print_Number_Up_To

La línea 110 comprueba si se debe ejecutar una vez más el bucle o si se deja de ejecutar la llamada. La línea 120 llama al mismo procedimiento 10 veces, y en cada llamada se decrece el valor pasado al procedimiento en 1 (al igual que un bucle al contar). Esto se va ejecutando hasta que el valor sea igual a 0 (10 veces). En definitiva se está llamado al mismo procedimiento para imprimir pero con 10 parámetros diferentes, cada llamada tiene un parámetro que es diferente a la llamada anterior, en este caso es el valor de la llamada anterior menos 1. Una vez que los 10 valores se calculan, hay 10 procedimientos, cada uno listo para imprimir su propio valor. Después de la décima definición, cuando el valor del parámetro “valor” se ha convertido en 0, los retornos comienzan a entrar en vigor de tal forma que hay 10 vueltas atrás. Recuerde que cada retorno vuelve a la llamada más reciente al procedimiento definido, de modo que la impresión se sucede en el orden inverso a aquel en el que los números se han definido.

La línea 10 hace una primera llamada al procedimiento con el valor más alto (en este caso 10). En esta primera llamada, el valor es 10, por lo que el retorno no es ejecutado. El programa a continuación pasa a la línea que contiene la llamada a imprimir un número pero especificando un nuevo valor. El próximo número en dicha llamada es el 9, con lo que el procedimiento se llama de nuevo con "valor-1", o 10-1 en este caso. Esta llamada aún no retorna ya que el valor que se le pasa a la rutina sigue sin ser 0, con lo que se invocará de nuevo a si mima con el valor 9-1 u 8. Este se ejecuta una y otra vez hasta que se alcanza el valor 0, entonces los beneficios de la rutina recursiva empieza a entrar en acción. Cuando se alcanza el 0, la llamada que retoma su ejecución era cuando el parámetro pasado tenía el valor 1, por lo que éste se imprime en primer lugar. Luego retornará cuando el valor contenía 2, y así sucesivamente hasta retornar a la primera llamada donde el valor tenía 10. Espero que todo esto tenga sentido para usted. En caso de que no, aquí va una traza de la ejecución del programa.

10 llamada a Print_Number_Up_To con "value" = 10  100 definición del procedimiento, se le da el valor 10       a la variable llamada "value"  110 se evalúa la expresión si "value" ha alcanzado      el valor de 0  120 el valor 0 no se ha alcanzado, entonces llamamos al      procedimiento otra vez con el valor de 10-1, (o 9)  100 regresa a la definición del procedimiento.       Esta vez, value=9  110 comprueba si se ha alcanzado 0, en este caso aun no.  120 se invoca de nuevo al procedimiento con       value-1 (9-1, u 8)  100 ... y así sucesivamente hasta que el value=0  110 se llega en este momento a value=0, así que se retorna       desde este procedimiento a la llamada anterior donde      el valor previo de value era 1 (recuerde que nosotros       llamamos la última vez en la línea 120 convalue=1)  130 ahora se imprime el valor (1)  140 end define - fin de llamada al procedimiento, así       que se retorna a la llamada anterior, esta llamada fue      ejecutada cuando value contenía el valor de 2.       Retornando a la siguiente sentencia después de       la línea 120 que contenía la llamada.  130 se imprime el valor actual (2) y así sucesivamente      hasta que se imprimen los 10 valores. 

Por supuesto, enfocar este problema de imprimir números de esta manera es como utilizar un martillo para cascar una nuez. Pero me parece que ayudan a explicar la técnica porque se trata de un ejemplo corto y bastante fácil de seguir paso a paso. Escribir cada paso sobre el papel le ayudará a entenderlo.

La recursividad a menudo se utiliza cuando se necesita una rutina similar para una serie de operaciones o donde los cálculos que se exijan sólo contienen una ligera diferencia en cada llamada a la rutina, pero donde la rutina sea suficientemente capaz de hacer frente a estas variaciones y las condiciones finales son suficientemente bien conocidas por ser claramente definibles. Esto es muy importante en la recursividad, la prueba a realizar cuando la rutina tiene que dejar de llamarse a si misma es vital para garantizar el correcto funcionamiento y el éxito en la finalización correcta. El siguiente ejemplo no es un programa real (¡no intente ejecutarlo como un programa BASIC!), es un “recorte” de código que le ayudará a mostrar el algoritmo de una forma simplificada de cómo funciona de forma general una rutina recursiva.

DEFine PROCedure Rutina_Recursiva (parámetro)    LOCal lista de valores locales    ... aquí se coloca el código que se precise    IF fin condición THEN RETurn    Rutina_Recursiva con parámetros variable    Acciones que se ejecutan mientras       se desenreda la llamada recursiva  END DEFine

La rutina establece el valor de sus propias variables cada vez que se ejecuta la llamada, además comprueba si el final de condición se cumple o no, entonces se llama a sí misma de nuevo con datos ligeramente diferentes, según sea necesario. Una cosa que podría ser no obvio es la necesidad de variables locales en el procedimiento. Si necesita crear variables temporales para calcular o apoyar a los valores que difieren en cada llamada al procedimiento, es necesario que las diferentes variables en cada llamada no destruyan los valores con que hemos trabajado, esto en muchas ocasiones es difícil de establecer.

En esta etapa, puede que no sea obvio el por qué alguien necesite o quiera usar la recursividad. La primera vez que me enfrenté a la recursividad hace algunos años, me pareció una especie de técnica repetitiva inventada por alguien muy inteligente que quería impresionar a los demás con una especie de código mágico que nadie pudiera entender. Siempre parece como si hubiera una forma más simple de hacer las cosas sin un código tan enrevesado. De alguna manera esto es cierto, por lo general hay una forma no recursiva de resolver un problema implementado como una llamada recursiva, pero por lo general suele ser más largo, menos elegante y menos eficiente (por no hablar de más lento). El arte reside en ser capaz de detectar los casos en que la recursividad es un beneficio para el programador. En cierta medida, este viene con experiencia y con conocimiento de un “estándar” en aplicaciones y rutinas donde se utiliza la recursividad. En términos de los procesos del pensamiento, usted tiene que meditar repetidamente patrones en los que se debería aplicar, o cuestionarse si una tarea se puede dividir y hacer más eficiente en secciones (de tipo “divide y vencerás”). Recuerdo que en una lectura de un libro de texto, hace algún tiempo, se mencionaba que la recursividad es un acto de fe, ya que es muy difícil seguir exactamente lo que uno hace en una rutina recursiva, es difícil estar seguro de que la rutina se llevará a cabo exactamente como usted espera o como piensa que se llevará a cabo. Seguramente cuando usted escriba la rutina al final se sorprenderá a si mismo de lo que la rutina está haciendo realmente.

A continuación le presentaré algunos ejemplos reales de rutinas recursivas, algunas usarán funciones y otros procedimientos. Espero que al menos algunos de estos ejemplos le ayude a ver cómo funciona la recursividad, y el motivo por el cual la recursividad puede ser una técnica de programación muy útil.

- Factoriales. Esta rutina matemática es uno de los ejemplos clásicos de la recursividad como técnica de programación. Se trata de calcular el total de una serie de productos de números, desde 1 hasta n. n! que es pronunciado como “n factorial”, consiste en el producto de todos los números enteros desde 1 hasta n.

n! = n * (n-1) * (n-2) … * 2 * 1

- Exploración de un sub-directorio. La rutina permite explorar todos lo ficheros que cuelgan de todos los sub-directorios de un disco duro (o disquete de alta capacidad). Sólo funciona en sistemas con «nivel 2» de directorios (creados con el comando MAKE_DIR básico, por ejemplo).

- Una rutina de ordenación de cadenas muy rápida, llamada “Quicksort”, donde los datos se van dividiendo en grupos más pequeños, cada uno de los cuales se van ordenando y dividiendo hasta quedar la lista totalmente ordenada. El algoritmo consiste en una rutina que se llama a si misma para ir ordenando los pequeños grupos que se van creando.

- Una rutina de relleno, donde polígonos irregulares se pueden rellenar con un determinado color. Esta rutina no es tan rápida como otras que se puedan encontrar en programas comerciales, pero funcionan correctamente. Desafortunadamente se requiere un toolkit para el uso de una instrucción que nos da el color de un pixel de la pantalla. Yo he usado mi propia extensión, PIXEL% x,y (donde x e y son las coordenadas de un punto en una pantalla estándar del QL, 512×256) pero se puede utilizar rutinas equivalentes como las de Simon N. Goodwin, las cuales se pueden llamar cambiando la instrucción y empleando los parámetros adecuados. De hecho, hay dos rutinas, una muy simple, que ilustra el principio básico (que funciona, pero no es muy eficiente), y la segunda, que incluye un elemento de buffering (o apilado) para reducir el coste general y llamar a la rutina de trabajo más rápidamente que el primer ejemplo.

- El rompecabezas llamado Torres de Hanoi. Consiste en tres varillas verticales y un número indeterminado de discos que determinarán la complejidad de la solución. No hay dos discos iguales, están colocados de mayor a menor en la primera varilla ascendentemente, y no se puede colocar ningún disco mayor sobre uno menor a él en ningún momento. El juego consiste en pasar todos los discos a la tercera varilla colocados de mayor a menor ascendentemente. Las reglas son: 1) Sólo se puede mover un disco cada vez, 2) un disco de mayor tamaño no puede descansar sobre uno más pequeño que él mismo y 3) sólo puedes desplazar el disco que se encuentre arriba en cada varilla. No es un problema muy complejo de resolver, pero muestra cómo utilizar las técnicas de recursividad para resolver el rompecabezas de una manera elegante.

1. Factoriales

Esta rutina nos permite calcular el producto de una serie de números hasta llegar a un valor dado. El término “n!” (pronunciado n factorial) se utiliza para representan este producto.

n! = n * (n-1) * (n-2) … hasta … * 2 * 1

Así por ejemplo 5! es 5*4*3*2*1, que resulta 120. Esto se puede codificar con un bucle FOR de la siguiente manera:

INPUT 'Factorial de > ';n  LET factorial = 1  FOR number = n TO 1 STEP -1    LET factorial = factorial*number  END FOR number

Esto es perfectamente válido, pero vamos a hacer lo mismo empleando una función recursiva. El cálculo se puede realizar siguiendo las mismas etapas tal cual está escrito en la fórmula anterior, la multiplicación de un número por un número menos de la secuencia hasta llagar a 1. Por lo tanto, la secuencia incluye (i) el cálculo del número próximo, (ii) la actualización del valor total multiplicando el total por el próximo valor hasta que lleguemos hasta el último valor que es 1.

100 INPUT 'Factorial de > ';n : PRINT Factorial(n)  110 DEFine FuNction Factorial (num)  120   IF num = 1 THEN RETurn 1  130   RETurn num * Factorial (num - 1)  140 END DEFine

Esta rutina en realidad es algo más extensa que la primera, aunque se debe en parte a la definición de la función. Esta función devuelve el primer número multiplicado con la llamada a si misma con el siguiente valor descendente como parámetro. Cuando se llega a 1 tenemos simplemente que devolver ese valor 1 (línea 120) en lugar del cálculo de la multiplicación con el siguiente número de la serie (línea 130).

2. Lectura de subdirectorios

Esta rutina sólo tiene sentido para aquellos que tengan instalados en sus QL las facilidades de manejo de subdirectorio. Esto incluye la Gold Card, Super Gold Card, QXL, los emuladores de Atari ST-QL, también son validos aquellos sistemas con Trump Cards o SuperQBoards con una actualización nivel-2 de la ROM (actualización de Jurgen Falkenburg o Jochen Merz).

Al hacer un DIR de un disquete o disco duro que contiene directorios se obtienen los archivos del directorio actual y los nombres de los posibles subdirectorios, los cuales se muestran precedidos del símbolo ‘->’. Para obtener una lista de los archivos de esos subdirectorios se tiene que hacer otro DIR de ellos. Si esa lista contiene a su vez otros subdirectorios se deben ejecutar de forma sucesiva los comandos DIR sobre ellos para obtener la lista completa de todos los ficheros y subdirectorios del disco. Nos será útil plantear, para evitar esto, un procedimiento o rutina para explorar todos los archivos de todos los directorios a partir de un directorio concreto especificado. Así cuando empezamos a rastrear siguiendo adelante debemos explorar todos los subdirectorios, pero una vez agotado un camino debemos iniciar otros caminos si los hubiera hasta completar toda la exploración. De esta forma lograríamos enumerar todos los archivos y subdirectorios.

Aquí hay un resumen de cómo vamos a construir la rutina:

procedure extender_dir (unidad,directorio)    Variables locales    Abrir directorio    Si fallo, retornar    Leer todo los nombres en directorio      ¿se ha terminado? si es así, cerrar directorio y salir del bucle      obtener seiguiente fichero      ¿es un nombre de directorio?        si, hacer extender_dir en ese direcotorio llamada recusriva         no, imprimir ahora el fichero      fin si    final del bucle de lectura de nombres  fin de procedure

y así es como he decidido escribir la rutina en SuperBASIC:

  100 REMark extended dir of all sub-directories  110 Extended_DIR 'win1_',"  120 :  130 DEFine PROCedure Extended_DIR (drive$,directory$)  140   LOCal loop,ch,d$,fp,n$  150   ch = FOP_DIR (drive$&directory$) : REMark open channel to directory  160   IF ch  0 THEN  220       REMark a directory length of 0 may be a deleted file  230       BGET #ch: REMark file type byte  240       IF CODE(INKEY$(#ch)) = 255 THEN  250         REMark this name is a subdirectory, so we need to DIR this  260         REMark if you want directory names printed, add this  270         REMark PRINT d$;' ->'  280         Extended_DIR drive$,d$  290       ELSE  300         PRINT d$  310       END IF  320     END IF  330     fp = fp + 64  340   END REPeat loop  350 END DEFine Extended_DIR  

Tenga en cuenta que la rutina, tal como está, no imprime los nombres de directorios sino sólo los nombres de archivo. Para imprimir los nombres de directorios, al igual que un comando DIR, debe eliminar la declaración REMark de la línea 270. Recuerde que la llamada a la rutina debe hacerse con dos parámetros, el primer parámetro con la unidad y el segundo con el nombre del directorio. Éstos se usan por separado dentro del cuerpo de la rutina.

3. Rutina de ordenación Quicksort

La rutina "quicksort" es una de las rutinas de ordenación más rápidas que pueden ser programadas en SuperBASIC. He encontrado dos variantes. La primera variante es más fácil de usar, pero no es tan rápida como la segunda variante, que tiene ciertos requisitos especiales que la hacen un poco menos conveniente en cuanto a su uso.

Quicksort hace su trabajo barajando punteros a las secciones de datos que van a ser ordenados y ordenando esas en secciones más pequeñas. Esto reduce el número total de pasadas a través de los datos que ralentiza otras rutinas de ordenación tales como el método “Burbuja” (Bubble Sort). Ya hemos utilizado la frase “divide y vencerás” para describir cómo trabajan algunas rutinas recursivas, y esto es precisamente lo que hace esta rutina de ordenación.

Esta rutina no es un ejemplo de rutina recursiva muy fácil de seguir – si usted desea seguir paso a paso el funcionamiento del programa, trate de asignar un pequeño conjunto de datos que se vayan a ordenar y trate de hacer un seguimiento, en cada parte del programa, de cómo se van clasificando dichos datos hasta conseguir el objetivo de ordenar la lista completa.

Este procedimiento en SuperBASIC está diseñado para ordenar cadenas; para ordenar arrays de números simplemente cambie las cadenas en la rutina (el nombre termina con $) por variables numéricas (enteros, finalizando con %, o variables de coma flotante). El segundo parámetro es el índice inferior del array que va a ser ordenado, generalmente 0, y el tercer parámetro es el índice más alto de dicho array (NO el total de número de items) generalmente el número total de elementos-1, siempre y cuando el primer subíndice sea 0.

  100 Q_Sort array_name$,0,entries%-1
110 : 120 DEFine PROCedure Q_Sort (array$,bottom,top) 130 LOCal sort_loop,low,high,ptr 140 low = bottom 150 high = top 160 ptr = bottom 170 REPeat sort_loop 180 IF low >= high THEN EXIT sort_loop 190 IF array$(low) > array$(high) THEN 200 REMark need to swap these strings 210 temp$ = array$(low) 220 array$(low) = array$(high) 230 array$(high) = temp$ 240 REMark how do we shuffle pointers to sections 250 IF ptr = low THEN 260 low = low + 1 270 ptr = high 280 ELSE 290 high = high - 1 300 ptr = low 310 END IF 320 ELSE 330 IF ptr = low THEN high = high - 1 : ELSE low = low + 1 340 END IF 350 END REPeat sort_loop 360 IF ABS(top - bottom) THEN RETurn : REMark can't sort 1 item! 370 Q_Sort array$,bottom,ptr - 1 380 Q_Sort array$,ptr + 1,top 390 END DEFine Q_Sort

4. Relleno de gráficos

Una rutina de relleno de gráficos consiste en llenar un área de la pantalla (regular o irregular) con un determinado color. Sea cual sea el color de relleno, la rutina debe asegurarse de no pintar zonas fuera del contorno delimitado por el área (polígono regular o irregular). La rutina de relleno comienza a partir de un punto situado dentro del área que se quiere rellenar, a partir de ahí, la rutina va poco a poco rellenando del color elegido el área demarcada. Imagine el boceto de una casa con ventanas, puertas y el techo ya diseñado. A partir de algún punto en la pared, se cubre toda la superficie de pared de toda la casa de un determinado color pasando alrededor de las ventas y puertas sin salirse fuera.

El principio básico es que, cualquiera que sea la línea a partir de la cual vamos a empezar el llenado, buscaremos a la izquierda para ver si podemos llenar, luego buscaremos la derecha para comprobar lo mismo, a continuación miramos encima y a continuación debajo para ver si podemos avanzar en esas direcciones. Si podemos hacerlo llenaremos con nuestro color elegido y a continuación seguiremos haciendo lo mismo hasta que no podamos ir más lejos. Debemos volver sobre nuestros pasos al punto que partimos en caso de que no podamos avanzar por una determinada dirección. Con un polígono irregular, lo que suele ocurrir es que se llena en la medida en que se pueda avanzar y, a continuación, empezar desde el punto de comienzo para encontrar otra dirección a partir de la cual se pueda continuar con el trabajo, y así sucesivamente. A este tipo de relleno a menudo se denomina por inundación (flood) porque emula a cómo el agua va inundando un lugar, llenando poco a poco bit a bit.

Esta rutina difiere con respecto al comando FILL del QL en el sentido que puede hacer frente a las llamadas formas re-entrante (formas irregulares que se pueden doblar de nuevo en si mismas). El comando FILL del QL funciona de una manera diferente a este tipo de relleno, y eso significa que (por lo general) es más rápido que la rutina de llenado por inundación, pero la rutina por inundación puede hacer frente a una variedad más amplia de formas y polígonos que se vaya a rellenar, por lo tanto, es capaz de llenar formas irregulares bastante complejas, mientras que para hacer lo mismo es posible que necesite más de un comando FILL del QL para rellenar una figura compleja correctamente. La otra gran diferencia es que la rutina por inundación trabaja correctamente sólo después de que el perímetro haya sido dibujado completamente, mientras que el comando FILL almacena los puntos y líneas a rellenar como un esquema del perímetro a dibujar, normalmente rellenando la figura cuando el perímetro esté cerrado. De cara al usuario hay poca diferencia, el resultado final es normalmente similar, pero para el programador hay una gran diferencia en cuanto a la codificación de las dos rutinas.

Para hacer que la rutina por inundación funcione, nosotros necesitamos una rutina que examine el color de un determinado pixel en la pantalla. Muchos toolkits de extensión al BASIC suministran utilidades de este tipo (por ejemplo la función PIXEL del DIY Toolkit). En esta rutina yo he usado una extensión llamada PIXEL% que requiere los siguientes parámetros (adapte esta rutina a las extensiones que usted usa). Desafortunadamente, el SuperBASIC estándar del QL carece de una función de este tipo.

x = coordenada x a través de la pantalla
y = coordenada y hacia abajo en la pantalla

Ambos, ‘x’ e ‘y’ asumen que estamos en una ventana que cubre el total de la pantalla, por ejemplo 0,0 es la esquina superior izquierda de la pantalla.

El esquema de la rutina no es demasiado difícil de comprender, pero la forma final de las rutinas es horrible para tratar de entenderlas, especialmente en lo más avanzado de las dos rutinas, que incluye un sistema de buffering para reducir el número masivo de llamadas recursivas realizada por el sistema, asi como una ayuda para acelerar la segunda rutina en comparación con la primera.

  procedimiento relleno_desde punto comienzo x,y     si punto no rellenable entonces retornar    rellenar a la izquierda de este punto     rellenar a la derecha de este punto     desde izquierda a derecha      relleno_desde punto encima esta linea       relleno_desde punto debajo esta linea     fin escaneo izquierda a derecha   fin definición procedimiento  

Esto puede ser escrito de la siguiente forma, usando la mencionada extensión PIXEL%(x,y). Las primeras 3 líneas dibujan una caja dentro de otra con una brecha entre ellas, que va a ser rellenada por la rutina. La segunda línea en el procedimiento Fill_Outline (IF y<0 OR y>255) protege el programa cuando el color de relleno intenta ir fuera de la parte superior o inferior de la pantalla. La rutina es llamada pasándole 4 parámetros al procedimiento Fill_Outline:

  x = coordenada x a partir de la que se comienza el relleno (0 a 511)  y = coordenada y a partir de la que se comienza el relleno (0 a 255)  direction = dirección en que la rutina rellena, -1 = arriba, +1 = abajo  colour = número del color de la tinta usado en el relleno  
  100 WINDOW 512,256,0,0 : CLS : INK 7  110 BLOCK 100,100,50,50,7 : BLOCK 96,98,52,51,0  120 BLOCK 60,80,70,60,7   : BLOCK 56,78,72,61,0  130 Fill_Outline 100,55,-1,7 : REMark -1 = upward, +1 = downward  140 STOP  150 :  160 DEFine PROCedure Fill_Outline (x,y,direction,colour)  170   LOCal loop,a,lp%,rp%  180   IF y < 0 OR y > 255 THEN RETurn  190   IF PIXEL%(x,y) = colour THEN RETurn  200   lp% = x  210   REPeat loop  220     IF lp% = 0 THEN EXIT loop  230     IF PIXEL%(lp%-1,y) = colour : EXIT loop  240     lp% = lp% - 1  250   END REPeat loop  260   rp% = x  270   REPeat loop  280     IF rp% = 511 THEN EXIT loop  290     IF PIXEL%(rp%+1,y) = colour : EXIT loop  300     rp% = rp% + 1  310   END REPeat loop  320   BLOCK rp%-lp%+1,1,lp%,y,colour  330   FOR a = lp% TO rp%  340     Fill_Outline a,y+direction,direction,colour  350     Fill_Outline a,y-direction,-direction,colour  360   END FOR a  370 END DEFine Fill_Outline  

El problema con esta rutina es que se llega a un callejón sin salida y, a continuación, ha de volver sus pasos hacia atrás para llenar en una dirección opuesta, esto consume mucho tiempo para algunas figuras. Podemos mejorar esto añadiendo un buffer que filtra algunos puntos en la dirección opuesta que no pueden ser rellenados, lo que a su vez significa que no tiene que volver sobre una gran cantidad de píxeles que ya se han llenado. Aún así sigue existiendo un retraso después del llenado en el último punto, pero se puede ahorrar tiempo utilizando una pila o un buffer similar a este. En el relleno de puntos en la dirección opuesta se actualizan a medida que la rutina va en una dirección, por lo que la pila (actualmente un array de enteros) crece para recordar las coordenadas rellenables fuera del punto de relleno original, entonces una vez que la rutina para en esa dirección, empieza a leer coordenadas de píxel de la pila para recordar donde volver. A continuación, trata de avanzar en la dirección opuesta, pero en caso de encontrar otra vez puntos fuera de la dirección de relleno que pueda comprobar más tarde, también los añade a la pila. Y así continúa el proceso hasta que haya terminado todos los puntos.

  100 WINDOW 512,256,0,0 : CLS : INK 7  110 BLOCK 100,100,50,50,7 : BLOCK 96,98,52,51,0  120 BLOCK 60,80,70,60,7   : BLOCK 56,78,72,61,0  130 Fill_From 100,55,-1,7 : REMark -1 = upward, +1 = downward  140 STOP  150 :  160 DEFine PROCedure Fill_From (fx,fy,direc,col)  170   LOCal xst%(512),yst%(512),stack%  180   REMark this routine requires a 'stack'  190   DIM xst%(512),yst%(512)  200   stack% = 0 : REMark nothing on stack at first, of course!  210   Fill_Outline fx,fy,direc,col  220 END DEFine Fill_From  230 :  240 DEFine PROCedure Fill_Outline (x,y,direction,colour)  250   LOCal loop,a,lp%,rp%  260   IF y < 0 OR y > 255 THEN RETurn  270   IF PIXEL%(x,y) = colour THEN RETurn  280   lp% = x  290   REPeat loop  300     IF lp% = 0 THEN EXIT loop  310     IF PIXEL%(lp%,y-direction) > colour THEN xst%(stack%) = lp% :               yst%(stack%) = y-direction : stack% = stack%+1  320     IF PIXEL%(lp%-1,y) = colour : EXIT loop  330     lp% = lp% - 1  340   END REPeat loop  350   rp% = x  360   REPeat loop  370     IF rp% = 511 THEN EXIT loop  380     IF PIXEL%(rp%,y-direction) > colour THEN xst%(stack%) = rp% :               yst%(stack%) = y-direction : stack% = stack%+1  390     IF PIXEL%(rp%+1,y) = colour : EXIT loop  400     rp% = rp% + 1  410   END REPeat loop  420   BLOCK rp%-lp%+1,1,lp%,y,colour  430   FOR a = lp% TO rp%  440     Fill_Outline a,y+direction,direction,colour  450   END FOR a  460   REPeat loop  470     IF stack% = 0 : EXIT loop  480     stack% = stack% - 1  490     Fill_Outline xst%(stack%),yst%(stack%),-direction,colour  500   END REPeat loop  510 END DEFine Fill_Outline  

La rutina tiene el inconveniente de que en figuras muy complejas puede provocar el agotamiento del espacio de la pila. En la gran mayoría de los casos, una pila de 512 espacios será suficiente. Estas rutinas tienen como ventaja que muestran en la pantalla la mayor parte de lo que está sucediendo, así que usted puede hacerse una idea de cómo “piensa” la rutina. Después de un tiempo, incluso con figuras complejas, ¡puede predecirse cómo va a ser rellenada la figura!

5. El puzzle de las Torres de Hanoi

El puzzle de las Torres de Hanoi consta de tres varillas y varios anillos de diferente diámetro. Lo que usted tiene que hacer es mover todos los anillos de la primera varilla a la segunda siguiendo las normas siguientes. Sólo puede mover un anillo a la vez. Ningún anillo puede colocarse en una varilla donde un anillo más pequeño quede debajo de uno mayor (es decir, los anillos grandes no pueden colocarse encima de uno menor). Por lo tanto, debemos utilizar la tercera varilla como almacén temporal. Sólo se puede desplazar el anillo que se encuentre en la parte superior de la varilla. De esta manera podemos ir desplazando los anillos de la primera varilla a la segunda de tal manera que al final del rompecabezas la segunda varilla contenga todo los anillos en el mismo orden que se encontraban en la primera varilla. Se puede dar una solución a este problema simplemente usando una rutina recursiva para mover progresivamente los anillos de una varilla a otra. Puede, si lo desea, agregar rutinas para animar la solución. Si usted es realmente ambicioso, y ha visto el pequeño robot de Tony Firshman y Reeves Laurence en el stand de TF Serivces en los “QL Shows” controlado por un QL equipado con una interfaz y Minerva, ¡tal vez desee considerar la manera de programar el robot para que pueda solucionar este puzzle! El programa puede hacer frente a cualquier número (dentro de lo razonable) de anillos, siempre empezando con el anillo 1 para el más pequeño y el número más alto para el anillo más grande. Con un número de varillas pequeño, podemos seguir los movimientos, por ejemplo, con una pequeña pila de monedas, siempre y cuando se puedan recordar que moneda estaban en qué anillo. Con más de 3 ó 4 anillos las instrucciones pueden llegar a ser bastante largas, dada la necesidad de estar rotando continuamente los anillos para evitar que el animo más grande esté por encima de otro más pequeño.

He aquí un programa en SuperBASIC que resuelve el rompecabezas.

100 REMark Towers of Hanoi puzzle  110 INPUT'How many rings > ';rings  120 Hanoi rings,1,2,3  130 :  140 DEFine PROCedure Hanoi(r,peg_a,peg_b,peg_c)  150   IF r = 0 THEN RETurn  160   Hanoi r-1,peg_a,peg_c,peg_b  170   PRINT'Move ring ';r;' from peg ';peg_a;' to peg ';peg_b  180   Hanoi r-1,peg_c,peg_b,peg_a  190 END DEFine Hanoi

Por ahora, podría ser suficiente para comprender cómo trabaja esta rutina el emplear una pila de monedas y reproducir la secuencia según la imprime el programa. Escriba un flujo generalizado de lo que hay que hacer y verá que el patrón a seguir emerge en su cabeza sin darse cuenta. Verá entonces que el problema es fácil de resolver. Escribir un programa para resolver esto no es una tarea obvia, especialmente para producir una solución tan corta como esta.


Fuente:
Artículo original: http://www.dilwyn.me.uk/docs/articles/recursion.zip
Dilwyn Jones (Tal-y-bont, Gales, Reino Unido).


Archivado en: Programación Tagged: recursividad, SuperBASIC

El Mundo del Spectrum: Colorean el Rodland 21 años después

Posted: 27 Aug 2012 10:22 AM PDT

Siempre se comentó la ocasión perdida por los desarrolladores de la versión Spectrum de Rodland de hacer un videojuego colorido como el Arcade. El estilo gráfico en forma de bloques, su sistema de juego sin scroll y lo colorido del original lo hacían firm ...

Transmedia Parade: Future Wars (1989, Delphine Software International). Evolución de las interfaces de las av. gr

Posted: 27 Aug 2012 09:51 AM PDT

En esta aventura tomamos el manejo de un limpiacristales de lo más corriente que encuentra un dispositivo que le transporta misteriosamente atrás a los tiempos medievales. La exploración de ese nuevo mundo hace que entremos en un universo donde los viajes en el tiempo son posibles y descubre que en el futuro, el mundo está en guerra con una raza alienígena.

coleccionpc: Ishar: Legend of the Fortress (Silmarils / Proein / 1992)

Posted: 27 Aug 2012 08:59 AM PDT

Se trata de la secuela de Crystals of Arborea y primero de la trilogía Ishar. Con gráficos muy pintorescos y escenarios muy variados, Ishar promete al jugador largas horas de diversión, resolviendo intrincados puzzles y variadas quests que llevarán hasta el final de la historia. Posee un sistema avanzado a su época de toma de decisiones y empatía de parte de los personajes del equipo para poder realizar reclutamientos y despidos de miembros.

La jugabilidad es bastante buena, salvo por ciertas incomodidades a tener en cuenta como tener que clickear sobre los botones de Ataque que se encuentran sobre los retratos de los personajes, dificultando a la hora de un encarnizado combate un juego mas fluido.

Altamente recomendado para quien gusta de un buen juego de rol.

Contenido del juego: Caja de plástico transparente de mayor tamaña que la de un CD, carátula frontal, trasera y lateral del juego, manual de instrucciones y 2 diskettes de 3 1/2.

Detalles: Se trata de una edición en caja de plástico muy típica de Proein. Este tipo de caja suele ser muy dada a dañarse en la zona donde se engarzan las dos partes de la caja. Por lo demás… típicas pegatinas para indicar formato, gráfica, …

Otras ediciones: desconocido.

Imágenes del contenido:

P1160730 P1160731 P1160732 P1160733 P1160734 P1160735 P1160736 P1160737

Vídeo del juego:


SolidState: Tu Micro Commodore Nro.13 muy pronto

Posted: 27 Aug 2012 08:46 AM PDT

Faber ha donado el número 13 de Tu Micro Commodore mensual, que yo ya tenía pero incompleto.

En esta semana comenzaré con el escaneo de este número.

Hago público mi agradecimiento a Faber por su donación.
Pronto novedades ;)

Mi templo de los videojuegos: MI TOP 100 DE MUSICA EN LOS VIDEOJUEGOS (60-51)

Posted: 27 Aug 2012 07:57 AM PDT


Poco a poco y nos hemos acercado ya a la mitad de esta enorme lista, ni yo pensaba que seria capaz de realizar un post tan largo como este Top 100.

Seguimos pues con las músicas entre 60 – 51:

60 – Súper Mario Bros 2 ( NES ). Todos los temas. Un Mario diferente, al que muchos no adoran como tal, pero yo si lo hago, gran banda sonora.
 
 

59 – Chrono Trigger ( SNES ). Intro. Te as pasado este mítico JRPG?, Pues este debería ser el primer tema que te viene a la cabeza.
 
 

58 – Súper Mario Bros ( NES ). Tema Principal. Uno de los mas famosos de la historia de los videojuegos.
 


57 – Final Fantasy VI ( SNES ). Batalla de jefes. Al ataque!
 


56 – Streets of Rage ( Megadrive ). Pantalla 1. Que temas más cañeros tenia este juegazo, junto con la buenísima melodía de la intro.
 


55 – Súper Mario 64 ( N64 ). Varios temas. Un juego de leyenda y una banda Sonora a su altura.
 


54 – The Legend of Zelda Link's Awakening ( Gameboy ). Marín. Como algo que suena tan Chip de 8bits, me pudo enamorar tanto.
 


53 – Final Fantasy VII Crisis Core. Escenas finales. Imposible olvidar la escena final de este juego, gracias también a su gran música.
 


52 – Daytona USA ( SEGA ). Tema de carrera/ Intro. Day-------toooooonaaaaaaaaa!!!!
 


51 – Policenauts ( Playstation ). Tema final. Impresionante Tema final de Policenauts, que a muchos les sonara porque salía durante el logo de Konami en Metal Gear Solid 1 de Playstation.
 
 

Aquellos viejos cacharros: El fútbol antes de Fifa y Proevolution Soccer.

Posted: 27 Aug 2012 07:57 AM PDT


   Como todas las demás, la industria del videojuego, busca tener beneficios, para ello buscan enfocar sus productos al público mayoritario, es por ello que vemos que si triunfa un determinado juego veamos aparecer varios clones del mismo, las películas o personajes más o menos relevantes tienen su traslado a las pantallas para emular sus aventuras, desde los inicios de los videojuegos el deporte rey no iba a pasar inadvertido a las empresas.

     Hasta llegar a los productos actuales han pasado muchos años, los equipos principalmente son los causantes de estos cambios, ahora podemos disfrutar de una experiencia mucho más real, los jugadores no controlados por el jugador se desenvuelven de manera eficaz por el campo, las características de cada jugador son imitadas casi a la perfección, tanto en lo físico como en lo técnico, el entorno nos acerca al ambiente de un partido real, con la recreación de estadios y aficiones, algunos apuestan por el realismo, al tener los derechos de las más importantes ligas y jugabilidad, otros por un grado más realista del juego, aunque en las últimas ediciones la versión de FIFA se hayan llevado el gato al agua, este año la respuesta de Konami con su PRO parece que va a volver la lucha de otras temporadas.



        ¿Son mejores los juegos de fútbol actuales que los de los años 80?, rotundamente sí, la jugabilidad, realismo, detalles han ganado mucho, pero estos inicios se merecen un homenaje. Así que durante unas cuantas entradas recordaremos la importancia del avance en diagonal, el juego individual y demás tácticas del fútbol digital de los ochenta, habrá recuerdos para juegos de recreativa y sobre todo para los programas de commodore, así que espero que esta nueva serie sea de vuestro agrado.


Retro Arkasil Party: Cita :Retro Arkasil Party 2012

Posted: 27 Aug 2012 03:58 AM PDT

RETRO ARKASIL PARTY 2012
Confirmada la fecha con la concejalía de Cultura a falta de confirmarse el lugar de costumbre. Este año os invitamos, como siempre, a acompañarnos y celebrar con BOTE DE NOCILLA EN MANO, los 30 años de estos grandisimos equipos: la panera y la tabletla de chocolate.

old8bits: Memorias de núcleos magnéticos

Posted: 27 Aug 2012 03:57 AM PDT

Los primeros ordenadores usaban memorias de propagación o de retardo, como las de mercurio o los tubos Williams, había otras como las de alambre, que usaban un alambre al que se hace vibrar, según la longitud tardaba mas o menos en detectarse al final del alambre la vibración. Pero todas Estas memorias eran delicadas, las de propagación dependían mucho de la dilatación del medio, por lo que

Retro Arkasil Party: ¡¡¡Esto no se hace!!!

Posted: 27 Aug 2012 03:31 AM PDT

Siento realmente estas lineas en el blog. pero aún arriesgando la sensibilidad de quien pueda verlo, tenia que plasmarlo.
Bien, no se si esto que he localizado en una tienda asiática de todo a 100, es publicidad de alguna empresa sin escrúpulos (y evidente fracaso de marketing), o un desparrame de imaginación de algún chinito ilustre, con visión de futuro.
Mencionar que la talla de la misma es de un asiático de edad media, es decir, de niño de 12 años europeo, por esta razón no me agencie ninguna, con el consiguiente alivio de tener que explicar a mi esposa tal adquisición.

Por cierto y con esto me despido, No he dicho que el personaje a quien plagia, es .... adivinarlo.

Retro Arkasil Party: Amor Paternal

Posted: 27 Aug 2012 03:31 AM PDT

25 de Mayo de 2012, se cumplió el 35 Aniversario del estreno de Starwars (25 de Mayo de 1977). Pos eso. Aprovecho...Así retomo un poco el Blog, que lo tenia olvidadico.
Capitulo 4: Amor paternal?.

TENTÁCULO PÚRPURA: neogeox, porqué no

Posted: 27 Aug 2012 02:29 AM PDT

No Gravatar

Porqué no me la voy a comprar, eso si hasta que no baje de precio si finalmente sale, recordad que sigo pensando que no saldrá a la luz, y alto! ojalá lo haga… se den el gran batacazo y me cueste 50 euros en unos meses… total… una más para la cole!

¿porqué no?

Fuera de fase, como se dice en star trek cuando algo no esta en la linea temporal adecuada, esta consola debió salir antes que las dingoo o similares ya que solo (supuestamente) emulará roms de neogeo, olvidémonos de actualizaciones y hacks, hasta de homebrew, es una megadrive de razor que ejecutara roms de neogeo… nada más!

Cara, cara de cojones, una megadrive con lector de SD cuesta menos de 40€ y ellos mismo  anuncian una consola, la GameGadget que con Android o la Yinlips que también con este SO puede emularlo todo… TODO!

cosas que no encajan:

¿una pantalla panorámica para emular juegos de neogeo?

¿2560 x 1600 pixels de resolución máxima para emular juegos de neogeo? y en 4,3 pulgadas (10,9 cm, igual que un SII)

¿porque no hay ninguna foto “real” de la consola, todo se ve desde mi punto de vista, dibujos hechos con algún programa…

En la web sigue poniendo que se venderá a 500 libras, 636.86 euros???? ya hay precios en la web, 130 dolares la consola sola, 200 por la consola, la base y un mando, y un mando suelto que aun no tiene precio, todas las opciones con 20 juegos pre-cargados, ¿se podrán añadir roms o solo leerá un misterioso formato de rom propia?

¿demandará Apple a Blaze por la similitud con un iphone4?

la ranura de la SD contiene un pequeño agujero negro donde la luz no llega ¿no?

Hablando de las dimensiones, no os parece raro ni sospechoso que sea cuadrada? observad una cosa que me acabo de dar cuenta… aquí tenéis una comparativa que me acabo de sacar de la manga con un Samsung Galaxy S2, la Neo Geo X esta y una PSP, las medidas de las dos consolas existentes las he sacado de Wikipedia (y que tengo un S2 en mi mesa)

Click para ampliar

Basándome en que las 3 tienen pantalla de 4,3 (menos PSP que es de 4, alto) he hecho una comparativa corta/pega a escala… y aquí tenemos, amigos, como será la Neo Geo X, ahora coged los que tengáis una PSP y “cuadrarla”, incluso será un poco más grande… a mi lo primero que me viene a la cabeza es esto:

soy el HAMO del fotoxó

Esto si, en todas partes toda la prensa no para de lamerle el culo a la empresa que sea que crean que lo va a sacar, porque insisto, Blaze no es SNK, Blaze tiene los derechos de SNK para hacer una copia o para meter un juego de NeoGeo en tablets compatibles con Windows CE si le peta. Parecen redactores de revistas de videojuegos… asco…

FacebookTwitterMeneameEmailPrintShare

Commodore Plus: Dino Eggs

Posted: 26 Aug 2012 11:06 PM PDT


Uno de los juegos que no podéis dejar de probar alguna vez es este magnífico arcade de plataformas, divertido, original y bien acabado que nos presentó Micro Fun en 1984. Dino Eggs fue el mayor éxito de esta compañía, no demasiado prolífica, que solo editó 2 títulos mas, que han pasado mas desapercibidos, pero que nos dejó buen sabor de boca con este, lleno de genialidades y buen hacer. 


Nuestra misión es la de transportarnos al pasado mediante unas puertas e ir recogiendo la mayor cantidad de huevos de dinosaurio posible para poderlos preservarlos en el presente. Deberemos cogerlos, cada vez un máximo de 3 y traerlos al presente, repitiendo la operación hasta que no quede ninguno en pantalla. Mientras, habrá que ir esquivando todo ser viviente que se mueva por la pantalla, capturar los pequeños dinosaurios, saltando por encima de ellos, e ir apilando los trozos de madera para crear pequeñas hogueras y prevenir el ataque de la madre de los dinosaurios. Todo de manera mas o menos frenética pero muy jugable y divertida. 



Descarga de las instrucciones desde Project64
Descarga del juego desde GAMEBASE

Game Museum: Incredible Crisis

Posted: 26 Aug 2012 11:00 PM PDT

Titulo : Incredible Crisis
Año : 1999
Desarrolladora :  Polygon Magic
Plataforma : PlayStation
Genero : Acción

Es un axioma que la cultura mundo occidental y la cultura del mundo oriental son totalmente diferentes.

En otras palabras, todo el mundo sabe que nuestros gustos no tienen nada que ver con los gustos de países como Japón.

Es algo totalmente natural, pues sus raíces culturales son totalmente dispares. Su historia no se parece casi nada a la nuestra y nuestra sociedad no ha tenido ningún contacto con la suya hasta hace relativamente poco.

Esos hechos han causado que el mundo oriental y el occidental hayan evolucionado cada uno de manera distinta, haciendo que sus gentes tengan una manera distinta de pensar y unos gustos diferentes.

Como es lógico esos gustos diferentes han  sido reflejados en las obras que han creado cada cultura, ya sean libros, pinturas, películas e incluso videojuegos. Como sabrá cualquier aficionado, los juegos orientales y los occidentales son totalmente diferentes.

Y es que  la industria japonesa del videojuego, como claro reflejo de su sociedad, creaba juegos que gustaran a su publico. Si para ello se debía crear géneros que no existían, se hacían o se adaptaba un genero extranjero como eran los juegos de rol y se creaba el JRPG.

El juego de hoy pertenece a uno de esos géneros únicos en Japón y es nada mas y nada menos que el genero de los minijuegos. Estos genero es algo peculiar, pues consiste en ajuntar varios minijuegos en uno solo, sin la necesidad de un argumento ni una lógica.

Uno de los extraños minjuegos de Incredible Crisis

La única premisa es que esos minijuegos serán simples, muy cortos y sobre todo divertidos. Un ejemplo actual de este tipo de juego seria la conocida saga WarioWare.

Este genero suele ser muy popular en Japón, teniendo numerosos seguidores y vendiendo estos juegos una barbaridad. Por desgracia en nuestras tierras no suele tener ese éxito y por ello esos juegos no suelen salir del país nipón, aunque e vez en cuando alguno llega como es el caso de Incredible Crisis.

Realmente ese es el motivo por el que a este juego se le tengan tanto cariño, pues pese a que haya otros muchos mejores en su mismo genero fue de los poco que pudimos probar e incluso para algunos, fue el primer juego de este tipo.

Antes he dicho que estos títulos suelen ajuntar minijuegos sin ningún tipo de lógica ni explicación. Pues bien pese a que el juego no tiene ningún tipo de lógica, mas tarde veremos porque se llama Incredible Crisis, intenta al menos darnos una base argumental y explicarnos una historia. Y esa es una de las gracias del titulo.

Todo empieza en el Japón actual, con una familia la mar de corriente. Compuesta por el padre Taneo, la madre Etsuko y sus dos hijos Ririka y Tsuyoshi, a mas de la abuela que vive con ellos.

La introducción nos va presentando uno por uno mientras empiezan el día. Parece ser que va a ser otro día normal hasta que abuela les comenta que es su cumpleaños y que desea celebrarlo con toda la familia. Así que pide a los demas miembros de la familia que regresen pronto a casa para celebrar una cena familiar.

La familia al completo

A partir de ese momento nuestro objetivo sera ayudar a esa familia en su objetivo de volver a casa, pues el día que les espera sera de todo menos normal. Pues como dice el titulo, ese día sera una crisis increíble.

En realidad el argumento principal sera lo de menos, pues hasta el final no se volverá hacer referencia sobre la abuela y su fiesta de cumpleaños, sirviendo únicamente de excusa para plantearnos los minijuegos. Lo que realmente viviremos sera el día de cada miembro de la familia y la locuras que le pasaran.

Por ello el juego esta dividido en cuatro capítulos, uno por Taneo, otro por Etsuko y otros dos para Tsuyoshi y Ririka. Deberemos de jugarlos en ese orden y no en el deseado, esto puede parecer un fallo pero una vez juguemos entenderemos el porque. Las cuatro historias están interconectadas y jugarlos de forma aleatoria no tendría sentido.

Es realmente elogiable las historias de cada personaje, están repletas de situaciones absurdas y muy cómicas. En ningún momento llegaremos a imaginarnos que sera la siguiente, por ejemplo tenemos al padre que empezara en una oficina trabajando y acabara sacando agua de un bote de pesca en mitad del mar.

Y el apartado que es de nota, es como están hiladas las historias con los minijuegos. Como podéis imaginar, las situaciones absurdas serán los minijuegos en si. Los hay de todo tipo desde saltar vallas, apretar botones rápidamente, de pensar e incluso esquivar ambulancias.

¿ Que sera lo próximo que le pasara al pobre Taneo?

No obstante, pese a tener una historia bastante elaborada si los minijuegos fueran una basura. el juego no valdría nada. Por suerte el juego nos ofrecer pruebas variadas, muy divertidas y lo mas importante, muy sencillas de controlar.

Antes de cada prueba, un cartel nos informara de que debemos hacer en cada minijuego y como debemos controlar al personaje. Normalmente el objetivo sera sencillo y se controlara con la cruceta mas un botón o como máximo dos. El juego desea que te concentres en el objetivo, por ello presenta un control sencillo y rápido.

Además, normalmente tendremos varios intentos en cada prueba, pudiendo fallar algunas ocasiones sin peligro a morir. En otras pruebas sin embargo tendremos que hacerlo a la primera, pero normalmente suele estar compensadas siendo estas las mas sencillas.

Aun así no os fiéis, pues el juego no es sencillo y alguna que otra prueba puede ser todo un desafío. Por suerte cada tres o cuatro pruebas podremos grabar partida haciendo posible que podamos continuar desde ese punto.

En conclusión, estamos ante un gran juego de minijuegos, muy divertido, adictivo y con mucho humor. Sus historias te harán reír, sobre todo si eres fan del humor absurdo japones. A mas tiene la ventaja de estar traducido al castellano.

Un juego imprescindible si te encantan este tipo de juegos, le echaras horas y horas hasta finalizarlo.

Pinche aquí para ver el vídeo

No hay comentarios:

Publicar un comentario

Sigue todas las entradas por email