El bosque encantado [en FreeBASIC]

Descripción del contenido de la página

[Proyecto abandonado:] Juego de aventuras de texto en escrito en FreeBASIC.

Proyecto abandonado. Iniciado en 2010-03-23. 20% completado.

Etiquetas:

Este proyecto de aventura conversacional, iniciado en marzo de 2010 y actualmente aparcado, es una versión en FreeBASIC de El bosque encantado, escrita por Kevin Jones en el BASIC de la computadora Commodore 64 y publicada a mediados de los 1980 en la enciclopedia Mi computer, página 1478 (Mi computer es la versión española de la enciclopedia Home Computer Course).

El bosque encantado original no tiene nada especial, es una aventura pequeña y sencilla escrita en un BASIC clásico y desestructurado, sin ninguna sofisticación, y rudimentaria incluso para la época... Por eso precisamente era una buena candidata para mi objetivo: familiarizarme de forma fácil con FreeBASIC, un BASIC libre, moderno, compilado y multiplataforma en el que desde hacía tiempo quería realizar algunos proyectos. Hacer una conversión de lenguaje durante la cual cualquier cambio sería una mejora significativa parecía un buen aliciente para aprender las peculiaridades de FreeBASIC.

Pero poco después de iniciar la tarea me empecé a preguntar si hubiera sido más fácil escribir el programa desde cero en vez de partir del código original, que estaba muy desestructurado (como era habitual en ese tipo de BASIC s). Por otra parte creo que, con sus muchos tipos de datos y su necesidad de declarar por duplicado los procedimientos y funciones, Free BASIC se me atragantó... Por todo ello, y porque tenía otros proyectos más interesantes en marcha, siete meses después haber escrito la primera línea, y con el código aún en fase muy temprana, aparqué el proyecto en espera de mejor ocasión para ocuparme de él.

Poco después tuve más suerte con un proyecto paralelo de intención similar, en OPL+ (lenguaje mucho menos potente pero más amigable): El bosque encantado [en OPL+].

Código fuente

Muestro algunos ejemplos del código en su estado 2010-10.


' El bosque encantado de Friburgo

' A simple text adventure in Spanish, written in FreeBASIC.

' Copyright (C) 2010 Marcos Cruz (http://programandala.net)
' Licencia/Permesilo/License: http://programandala.net/license

' This a FreeBASIC port of "El bosque encantado" (for Commodore 64), by Kevin Jones,
' published in "Mi computer" (the Spanish version of "Home Computer Course"), page 1478.

La introducción y el borrador del bucle principal:

' -------------------------------------------------------------
' Intro

tell("Bienvenido al bosque encantado de Friburgo")
print
tell("Al despertarte de un profundo sueño, el suelo del bosque está suave y seco.")
tell("No sabes cómo has llegado hasta aquí pero sabes que, para estar a salvo, debes encontrar el poblado que linda con el bosque.")
print
tell("Miras a tu alrededor tratando de orientarte.")
print
tell("Pulsa cualquier tecla para empezar.")

sleep
cls

' -------------------------------------------------------------

sub main()

  ' Main loop.

  ' 2010-03-24 First draft.

  randomize
  current_location=int(rnd*locations+1)

  describe_location()
  do
    if not special_location() then
      get_command()
      interpret_command()
      if not known_command then
        tell("No comprendo.")
      end if
    end if
  loop

end sub

Procedimiento para listar las salidas de un escenario:

sub list_exits(north as byte,east as byte,south as byte,west as byte)

  ' List the given exists.
  ' Every parameter is a location or zero.

  ' 2010-03-23 First version.

  if north or east or south or west then
    message="Hay salida"
    if (north>0) + (east>0) + (south>0) + (west>0) < -1 then
      ' there's more than one exit
      message=message+"s" ' plural
    end if
    message=message+" hacia "
    if north then
      message=message+exit_join(0,east or south or west)+"el norte"
    end if
    if east then
      message=message+exit_join(north,south or west)+"el este"
    end if
    if south then
      message=message+exit_join(north or east,west)+"el sur"
    end if
    if west then
      message=message+exit_join(north or east or south,0)+"el oeste"
    end if
    tell(message+".")
  end if

end sub


Impresión de textos formateados:


sub tell(text as string)

  ' Print a text without breaking words.

  ' 2010-03-23 First version.

  dim word_start as integer = 1
  dim word as string
  dim character as integer
  text=text+" "

  for character=1 to len(text)
    if mid(text,character,1)=" " then
      word = mid(text,word_start,character-word_start)
      if len(word)>(columns-pos) then
        print
      else
        if pos>1 then
          print " ";
        end if
      end if
      print word;
      word_start = character+1
    end if
  next character
  print

end sub


Páginas relacionadas

El bosque encantado [en OPL+]
[Proyecto abandonado:] Juego de aventuras de texto escrito en OPL+ para Psion 5mx.
Cómo no llegar a ser un escritor de aventuras conversacionales
Compendio de consejos prácticos, avalados por la experiencia, para no llegar a ser escritor de aventuras conversacionales.