Explorador de juegos

Todo sobre la creación, diseño y programación de nuevo software para
nuestro Spectrum

Moderador: Sir Cilve Sinclair

Responder
Avatar de Usuario
Rafa
Jack The Nipper
Mensajes: 181
Registrado: Lun May 07, 2007 11:59 am

Explorador de juegos

Mensaje por Rafa » Vie Mar 13, 2015 8:08 pm

Hola. Hace mucho tiempo que no pasaba por aqui. Saludos.

El caso es que ando programando un tipo de "explorador de juegos" para mi +3e equipado con una CF.
Estoy programando un programita que me liste todos los juegos disponibles en la CF, y seleccionarlo con la letra inicial de los nombres de los juegos, los cursores y enter.

Lo quiero hacer en BASIC. Hago un CAT "*.bas" (o la letra seleccionada) y me salen en pantalla todos los ficheros .bas que hay en la CF.
El problema me viene cuando la lista que saca el cat llena toda la pantalla y obliga al spectrum a hacer un scroll?
No me interesa que haga scroll porque desde esa lista de juegos yo quiero que se seleccione el juego en cuestión. Si hago scroll los juegos primeros de la lista no serán seleccionables.

Mi pregunta era si había alguna forma de hacer un CAT y que el resultado te lo meta en una variable a$, en vez de imprimirlo en pantalla.

Creo que me he explicado más o menos bien.
RANDOMIZE USR 0

Avatar de Usuario
Rafa
Jack The Nipper
Mensajes: 181
Registrado: Lun May 07, 2007 11:59 am

Re: Explorador de juegos

Mensaje por Rafa » Sab Mar 14, 2015 12:59 pm

Pues sí que tiene que ser difícil el tema. Ni una sola respuesta.
Se me ocurren dos soluciones: una, que el mensaje scroll? sea un mensaje entonces se pokea en err_sp una direccion concreta y con una pequeña rutina en CM que salte a otra linea del basic, coja los datos y retorne con un simple CONTINUE.

Otra opción es aprovechar los canales de salida del +3e, abrir un canal, hacer el CAT a ese canal y listo. Tengo que investigar un poco, pero creo que es posible. Algo parecido a esto:

OPEN #10; a$

CAT #10; "*.BAS"

CLOSE #10

Tengo que probarlo y aplicar la sintaxis correcta.
RANDOMIZE USR 0

zup
Freddy Hardest
Mensajes: 666
Registrado: Vie Ago 15, 2008 2:43 pm

Re: Explorador de juegos

Mensaje por zup » Sab Mar 14, 2015 1:34 pm

La forma "tradicional" de hacerlo sería usar el +3DOS, con la función DOS CATALOG.

La idea sería utilizar DOS CATALOG para buscar los ficheros BASIC, meterlos en una matriz y elegir el que más te guste para lanzarlo.
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start...

Avatar de Usuario
Rafa
Jack The Nipper
Mensajes: 181
Registrado: Lun May 07, 2007 11:59 am

Re: Explorador de juegos

Mensaje por Rafa » Sab Mar 14, 2015 2:52 pm

A ver yo meto los nombres de los ficheros en una matriz. Todo en basic.

El problema viene cuando el CAT me hace scroll porque no caben todos los ficheros .bas en una pantalla
RANDOMIZE USR 0

Avatar de Usuario
Rafa
Jack The Nipper
Mensajes: 181
Registrado: Lun May 07, 2007 11:59 am

Re: Explorador de juegos

Mensaje por Rafa » Sab Mar 14, 2015 3:07 pm

Soy un masoca. Ya lo sé.

Yo necesito que el programa basic detecte si en el CAT ha habido un scroll? . Si es así, coger los nombres de los juegos antes de que se borren de la pantalla, meterlos en una matriz, y después continuar el CAT, justo a continuación del scroll
RANDOMIZE USR 0

Avatar de Usuario
Rafa
Jack The Nipper
Mensajes: 181
Registrado: Lun May 07, 2007 11:59 am

Re: Explorador de juegos

Mensaje por Rafa » Sab Mar 14, 2015 7:49 pm

Solucionado y funcionando correctamente. Aquì el código que introduce toda la salida del CAT en la variable a$, a través de los canales del +3e:

10 DIM A$(500): REM 500 ES UN EJEMPLO
20 OPEN #4, "V>A$": REM ABRE EL CANAL.EL SELECTOR "V" CANALIZA LA SALIDA HACIA UNA VARIABLE ALFANUMERICA.
30 CAT #4,"*.BAS" :REM HACE EL CAT ELEGIDO SOBRE ESE MISMO CANAL. TAMBIEN ES POSIBLE PONER LA UNIDAD
40 CLOSE #4
50 SAVE "LISTA.DAT" DATA A$(): REM ESTO ES OPCIONAL, PERO CREO MEJOR PONER UNA OPCION EN EL PROGRAMA QUE CREE UNA LISTA CON TODOS LOS JUEGOS Y LA CARGUE CADA VEZ, EN LUGAR DE HACER UN CAT CADA VEZ

Aunque sería conveniente manejar esa variable a$ metiéndola en una matriz, creando una fila por cada letra del abecedario.

Y todo en Basic.

Saludos.
RANDOMIZE USR 0

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 12 invitados