--- En hispamsx(_en_)yahoogroups(_punto_)com, msx_forever <msx_forever@y...>
escribió:
x> Deseo programar mi primer juego para MSX y he pensado en hacer
uno
x> conversacional con una foto por pantalla y bajo ella texto
explicativo y
x> tambien alguna pregunta para avanzar a la siguiente pantalla.
x> En basic sería algo así?:
x> 10 cls: key off: print "primera pantalla"
x> 20 load "pantalla1.sc2"
x> 30 a$=inkey$
x> 40 if a$= "N" then 100
x> 50 if a$= "S" then 110
x> ...
x> ...
x> 100 ' carga de la nueva pantalla según S.
x> 110 ' carga de la nueva pantalla según N.
Hombre, si quieres programar una conversacional en BASIC, y encima
con los IFs a pelo, vas a quererte morir cuando vayas por la
pantalla 10, te vas a quedar sin memoria, y las instrucciones de la
conversacional se te van a quedar limitadas a los IFs que metas en
cada pantalla... o sea, NUNCA la programes así :) (aunque yo en mis
principios hice muchas, eh?)
Me tocas la fibra, ya que a mi me gustan mucho las conversacionales,
me hecho muchas en BASIC, me hice un parser SSP1.0, etc.. así que te
daré unas pistas.
NOTA: Estas indicaciones son en MSXBASIC y las hago de memoria, si
tengo algún fallo, pues lo decís :).
Introducción
------------
La idea es crear un programa donde puedas moverte por todas las
pantallas con total comodidad y desarrollar los movimientos básicos
de una conversacional: moverte, examinar, manipular objetos, etc...
llamemosle Parser, ok?. Llegando a este punto, la idea será definir
las estancias del mapa, objetos, etc... y que el ordenador lo haga
todo evitando utilizar condicionales "a pelo". ¿Te parece?.
Papel
-----
Lo primero -y lo mejor de una conversacional- es el guión. Es lo que
ambienta y hace que los puzzles tengan sentido (y lo que engancha al
jugador). Si en tu guión resulta que al ENTRAR EN HABITACION, de
pronto mueres sin saber porqué, pues tu aventura no valdrá un
pimiento y enfurecerás al jugador, ok?.
Definir el mapa
---------------
Bueno, metamonos en faena...
Primero tienes que definir el mapa de la aventura, usease, las
localizaciones de las pantallas. Te pongo un ejemplo, que es como lo
hacía yo en los principios de los tiempos:
...
100 dim pa$(32),n(32),s(32),e(32),o(32)
110 for t=1 to 32:rem *pensando en limitarlo a 32 pantallas
120 read pa$(t),n(t),s(t),e(t),o(t)
130 nextt
...
1000 data "En el antiguo cuarto de estar no quedan más que un viejo
butacón y una vieja alfombra.",1,0,0,0
1010 data "Aquí pones lo que quieras para la segunda
pantalla.",0,1,0,0
...
Bueno, ¿que tenemos aquí?. ¡Pues las descripciones de las pantallas
y el mapa de todo nuestro mundo definido dentro de unas arrays de
una dimensión!. ¿Y para que sirve esto?. Pues es la base de todo, ya
que ahora podemos tener perfecto control de todo. Bueno vamos por
partes... por cada pantalla tenemos 5 datos: la descripción (texto),
la pantalla a la que vamos si escribimos NORTE, la pantalla a la que
vamos si escribimos SUR, la pantalla a la que vamos si escribimos
ESTE, y la pantalla a la que vamos si escribimos OESTE (yo también
metía las variables EN,SA,SU y BA para ENTRAR, SALIR, SUBIR y BAJAR,
pero bueno...). Si, con estos datos cargados, utilizamos una
variable para saber en que pantalla estamos (PA), lo tenemos todo
hecho (en cuanto al mapa, eh?, que todavía nos falta MUUCHO para
hacer la conversacional). Ahí va el primer ejemplo:
Lo tienes en la carpeta /BASIC/CONVERS/moverse1.BAS
Bien, es hiper rustico. Solo funcionan las mayúsculas y solo sirve
para moverse, pero algo es algo!!!. Ya tenemos un mundo que podemos
definir y movernos!. Ala, a modificar un poco el listado que os
paso, que luego te cuento más.
Jon