REM Per caricare ed eseguire questo programma, segui queste istruzioni:
REM 1) Carica normalmente AmigaBasic dal dischetto degli Extras che era
REM    sicuramente incluso nella confezione di Amiga.
REM 2) Non appena il Basic e' stato caricato, togli il disco Extras dal 
REM    drive e inserisci questo dischetto di AmigaByte.
REM 3) Seleziona dai menu a discesa di AmigaBasic l'opzione "Open" e digita
REM    come nome del file da caricare: DF0:BASIC/ADV2
REM 4) Premendo Return verra' caricato questo listato in memoria, e potrete
REM    eseguirlo digitando il comando RUN da AmigaBasic.
REM						AmigaByte
REM					       la redazione


REM Inizializzazione


start:

  CLS
  CLEAR
  
  PRINT "DEMO-ADVENTURE V2.01  by M. Giunti"
  PRINT "Scopri il cuore dell'avventura !!!
  PRINT :PRINT 


  DIM p$(100):REM parole
  DIM map%(100,6):REM mappa
  DIM o$(100),od$(100),o%(100):REM oggetti
  
  DIM ex$(6)  
 
  mosse=0:punti=0
  stanze=21:oggetti=10

  room=1:REM luogo nel quale ci troviamo
  energia=100:REM energia vitale
  
  lamp=0:REM flag lampada 0=spenta 1=accesa
  lamploc=0:REM stanza illuminata dalla lampada
  
  GOSUB defmap
  GOSUB defobj


  GOSUB guarda

ciclo:
  GOSUB parser

  REM controlli
  IF o%(1)=room THEN GOSUB guardiano
  IF room=21 THEN punti=punti+20:PRINT "Bravo, hai vinto in";mosse;" mosse":PRINT "totalizzando";punti;" punti !!!":END
  IF energia<1 THEN PRINT "Sei morto.":PRINT "Punti:"punti:PRINT "Mosse:"mosse:END
 

  GOTO ciclo


  END

  REM defmap -> definisce la mappa

defmap: 

  map%(1,1)=0:REM Nord
  map%(1,2)=0:REM Sud
  map%(1,3)=2:REM Est
  map%(1,4)=0:REM Ovest
  map%(1,5)=0:REM Su
  map%(1,6)=0:REM Giu'

  map%(2,1)=3
  map%(2,2)=5
  map%(2,3)=-1
  map%(2,4)=1
  map%(2,5)=0
  map%(2,6)=0

  map%(3,1)=3
  map%(3,2)=-3
  map%(3,3)=4
  map%(3,4)=2                
  map%(3,5)=0
  map%(3,6)=0

  map%(4,1)=3
  map%(4,2)=5
  map%(4,3)=4
  map%(4,4)=-2
  map%(4,5)=0
  map%(4,6)=0

  map%(5,1)=-3
  map%(5,2)=5
  map%(5,3)=4
  map%(5,4)=2
  map%(5,5)=0
  map%(5,6)=0

  map%(6,1)=7
  map%(6,2)=-3
  map%(6,3)=4
  map%(6,4)=8
  map%(6,5)=0
  map%(6,6)=0

  map%(7,1)=-3
  map%(7,2)=6
  map%(7,3)=-3
  map%(7,4)=-3
  map%(7,5)=0
  map%(7,6)=0

  map%(8,1)=10
  map%(8,2)=11
  map%(8,3)=6
  map%(8,4)=9
  map%(8,5)=0
  map%(8,6)=0

  map%(9,1)=-3
  map%(9,2)=-3
  map%(9,3)=8
  map%(9,4)=-1
  map%(9,5)=0
  map%(9,6)=0

  map%(10,1)=-3
  map%(10,2)=8
  map%(10,3)=-3
  map%(10,4)=-3
  map%(10,5)=0
  map%(10,6)=0

  map%(11,1)=8
  map%(11,2)=-3
  map%(11,3)=-3
  map%(11,4)=-3
  map%(11,5)=0
  map%(11,6)=0

  map%(12,1)=0
  map%(12,2)=0
  map%(12,3)=13
  map%(12,4)=0
  map%(12,5)=-4
  map%(12,6)=0

  map%(13,1)=0
  map%(13,2)=-5
  map%(13,3)=0
  map%(13,4)=12
  map%(13,5)=0
  map%(13,6)=0

  map%(14,1)=13
  map%(14,2)=16
  map%(14,3)=16
  map%(14,4)=15
  map%(14,5)=0
  map%(14,6)=0

  map%(15,1)=16
  map%(15,2)=17
  map%(15,3)=16
  map%(15,4)=17
  map%(15,5)=0
  map%(15,6)=0

  map%(16,1)=16
  map%(16,2)=15
  map%(16,3)=17
  map%(16,4)=15
  map%(16,5)=0
  map%(16,6)=0

  map%(17,1)=16
  map%(17,2)=18
  map%(17,3)=16
  map%(17,4)=15
  map%(17,5)=0
  map%(17,6)=0

  map%(18,1)=17
  map%(18,2)=0
  map%(18,3)=19
  map%(18,4)=0
  map%(18,5)=0
  map%(18,6)=0

  map%(19,1)=0
  map%(19,2)=-6
  map%(19,3)=0
  map%(19,4)=18
  map%(19,5)=0
  map%(19,6)=0

  map%(20,1)=19
  map%(20,2)=21
  map%(20,3)=0
  map%(20,4)=0
  map%(20,5)=0
  map%(20,6)=0

  map%(21,1)=20
  map%(21,2)=2
  map%(21,3)=2
  map%(21,4)=2
  map%(21,5)=0
  map%(21,6)=0

  

RETURN

defobj:
  
  o$(1)="GUARDIANO" 
  od$(1)="il feroce Guardiano" 
  o%(1)=13 
        

  o$(2)="LEMO"
  od$(2)="Lemo"
  o%(2)=19

  o$(3)="PORTA"
  od$(3)="una porta"
  o%(3)=0:REM varia !

  o$(4)="FINESTRA"
  od$(4)="una finestra"
  o%(4)=0:REM varia !

  o$(5)="LETTO"
  od$(5)="un letto"
  o%(5)=10

  o$(6)="PERGAMENA"
  od$(6)="una pergamena"
  o%(6)=1

  o$(7)="LAMPADA"
  od$(7)="una lampada"
  o%(7)=7

  o$(8)="MELA"
  od$(8)="una mela"
  o%(8)=6

  o$(9)="SPADA"
  od$(9)="una spada"
  o%(9)=11

  o$(10)="ASCIA"
  od$(10)="una grossa ascia"
  o%(10)=0:REM ce l'ha il guardiano


RETURN

  REM descrizione dei luoghi

descr1:
  PRINT "Caverna"
  PRINT "Ti trovi in una grande caverna."
  RETURN
descr2: 
  PRINT "Foresta"
  PRINT "Ti trovi in una piccola foresta."
  PRINT "A est vedi la facciata di una casetta."
RETURN

descr3:
  PRINT "Foresta"
  PRINT "Sei in una piccola foresta."
  PRINT "A sud vedi la parete di una casa."
RETURN

descr4:
  PRINT "Foresta"
  PRINT "Sei in una piccola foresta."
  PRINT "A ovest vedi la parete di una casa."
RETURN

descr5:
  PRINT "Foresta"
  PRINT "Sei in una piccola foresta."
  PRINT "A nord vedi la parete di una casa."
RETURN

descr6:
  PRINT "Cucina"
  PRINT "Sei nella cucina della casetta."
RETURN

descr7:
  PRINT "Sgabuzzino"
  PRINT "Sei in un piccolo sgabuzzino."
RETURN

descr8:
  PRINT "Corridoio"
  PRINT "Sei in uno stretto corridoio."
RETURN

descr9:
  PRINT "Ingresso"
  PRINT "Sei nell'ingresso della casetta."
RETURN

descr10:
  PRINT "Camera"
  PRINT "Sei nella camera da letto."
RETURN

descr11:
  PRINT "Soggiorno"
  PRINT "Sei nel soggiorno della casetta."    
RETURN

descr12:
  PRINT "Sotto la camera"
  PRINT "Sei in un angusto passaggio sotto la camera da letto."
  PRINT "Sopra di te una tenue luminescenza rivela il buco dal"
  PRINT "quale sei entrato."
RETURN

descr13:
  PRINT "Stanza del Guardiano"
  PRINT "Sei nella stanza del guardiano."
RETURN

descr14:
  PRINT "Labirinto"
  PRINT "Sei all'entrata di un labirinto."
RETURN

descr15:
descr16:
descr17:
  PRINT "Labirinto"
  PRINT "Sei in un labirinto."
RETURN

descr18:
  PRINT "Passaggio stretto"
  PRINT "Sei in uno stretto passaggio."
RETURN

descr19:
  PRINT "Stanza di Lemo"
  PRINT "Sei nella stanza di Lemo."
RETURN

descr20:
  PRINT "Scalinata"
  PRINT "Sei su una ripida scalinata"
RETURN

descr21:
  PRINT "Esterno"
  PRINT "Sei riuscito ad uscire dagli oscuri sotterranei !!!"
RETURN

guardiano:
  RANDOMIZE TIMER
  a=INT(RND*6)
  IF a=0 THEN PRINT "Il guardiano ti studia con aria bellicosa."
  IF a=1 THEN PRINT "Il guardiano ringhia con aria minacciosa."
  IF a=2 THEN PRINT "Il guardiano ti attacca ma non riesce a colpirti."
  IF a=3 THEN PRINT "Il guardiano ti attacca e ti ferisce leggermente.":energia=energia-5
  IF a=4 THEN PRINT "Il guardiano ti attacca e ti ferisce.":energia=energia-10
  IF a=5 THEN PRINT "Con un pesante colpo d'ascia il guardiano ti ferisce profondamente.":energia=energia-15
  RETURN
  


guarda:

   ex$(1)="Nord":ex$(2)="Sud":ex$(3)="Est":ex$(4)="Ovest"
   ex$(5)="Su":ex$(6)="Giu'"
   lamploc=o%(7):IF lamploc<0 THEN lamploc=room
   a=room
   IF (a>11 AND (lamp+lamploc<>a+1)) THEN PRINT "Sei nell'oscurita' piu' completa.":RETURN
   ON a GOSUB descr1,descr2,descr3,descr4,descr5,descr6,descr7,descr8,descr9
   IF a>9 THEN a=a-9 ELSE a=0
   ON a GOSUB descr10,descr11,descr12,descr13,descr14,descr15,descr16,descr17,descr18
   IF a>9 THEN a=a-9 ELSE a=0
   ON a GOSUB descr19,descr20,descr21
   PRINT 
   PRINT "Uscite evidenti:"
   FOR i=1 TO 6
    IF map%(room,i)>0 THEN PRINT ex$(i);"  ";
   NEXT:PRINT:PRINT 
   
   REM controllo oggetti omonimi
   IF room=2 THEN o%(3)=2
   IF room=9 THEN o%(3)=9
   IF room=6 THEN o%(4)=6
   IF room=4 THEN o%(4)=4
   
   
   PRINT "Vedi:"
   t=0
   FOR i=1 TO oggetti
    IF o%(i)=room THEN t=1:PRINT od$(i)
   NEXT:IF t=0 THEN PRINT "Niente di particolare"
   PRINT 
   RETURN



inventario:
   
   PRINT "Stai portando:"
   t=0
   FOR i=1 TO oggetti
    IF o%(i)=-1 THEN t=1:PRINT od$(i)
   NEXT:IF t=0 THEN PRINT "Niente"
   RETURN
   
vai:
  IF np<>3 THEN PRINT "Non capisco.":RETURN
  lamploc=o%(7):IF lamploc<0 THEN lamploc=room
  a=room
  IF (a>11 AND (lamp+lamploc<>a+1)) THEN PRINT "Ouch ! Sei inciampato.":energia=energia-5:RETURN

  d$=p$(3):d=0
  IF d$="NORD" THEN d=1
  IF d$="SUD" THEN d=2
  IF d$="EST" THEN d=3
  IF d$="OVEST" THEN d=4
  IF d$="SU" THEN d=5
  IF d$="GIU" THEN d=6
  IF d=0 THEN PRINT "Non conosco la parola '"d$"'.":RETURN
  IF map%(room,d)=0 THEN PRINT "Non puoi andare in quella direzione.":RETURN
  IF map%(room,d)>0 THEN room=map%(room,d):GOTO guarda
  a=map%(room,d)
  IF a=-1 THEN PRINT "La porta e' sbarrata !"
  IF a=-2 THEN PRINT  "La finestra e' chiusa !"
  IF a=-3 THEN PRINT "C'e' un muro !"
  IF a=-4 THEN PRINT "Non riesco ad arrampicarmi !"
  IF a=-5 THEN PRINT "Il Guardiano intuisce la tua mossa e ti sbarra la strada !"
  IF a=-6 THEN PRINT "Lemo ti sbarra la strada !"
  RETURN  
  
  
cercaobj:  
  REM Cerca il codice dell'oggetto
  t=0
  FOR i=1 TO oggetti
   IF d$=o$(i) THEN t=i
  NEXT 
  RETURN
   
prendi:   
  IF np<>3 THEN PRINT "Non capisco.":RETURN
  d$=p$(3)
  GOSUB cercaobj
  IF t=0 THEN PRINT "Non conosco la parola '"d$"'.":RETURN
  
  REM e' qui ?
  IF o%(t)<>room THEN PRINT "Come posso prendere quello che non c'e' ?":RETURN
  
  REM si puo' prendere ?
  REM solo gli oggetti dal 6 al 10 si possono prendere 
  IF t<6 THEN GOTO prendino
  
  
  REM OK
  o%(t)=-1
  PRINT "Fatto.":RETURN
  

prendino:
  PRINT "Non posso farlo.":RETURN
 

lascia:
  IF np<>3 THEN PRINT "Non capisco.":RETURN
  d$=p$(3)
  
  REM Cerca il codice dell'oggetto
  t=0
  FOR i=1 TO oggetti
   IF d$=o$(i) THEN t=i
  NEXT:IF t=0 THEN PRINT "Non conosco la parola '"d$"'.":RETURN
  
  REM e' stato preso ?
  IF o%(t)<>-1 THEN PRINT "Come si puo' lasciare cio' che non si ha ?":RETURN

  REM ok
  o%(t)=room
  PRINT "Fatto.":RETURN
  
score:
  PRINT "Punteggio: "
  PRINT "Mosse:";mosse 
  PRINT "Punti:";punti
  PRINT "Salute:";energia;"%"
  RETURN


REM inc -> Input controllato

inc:
  del$=CHR$(8)+CHR$(8)+CHR$(8)
  a$="":w$="":ll=0
  PRINT ">";
inc1:
  PRINT "*  ";
  a$=INKEY$
  PRINT del$;
  ll=LEN(w$)
  IF a$=CHR$(13) THEN PRINT :a$=w$:RETURN
  IF a$=CHR$(8) THEN GOTO canc
  IF ll>70 THEN GOTO inc1
  IF (a$=" " OR a$="'") AND ll<>0 THEN w$=w$+a$:PRINT a$;:GOTO inc1
  IF (a$=>"a" AND a$<="z") THEN a$=CHR$(ASC(a$)-32)
  IF (a$<"A" OR a$>"Z") THEN GOTO inc1
  w$=w$+a$:PRINT a$;
  GOTO inc1
  
canc:
  IF ll=0 THEN GOTO inc1 
  w$=LEFT$(w$,ll-1)
  PRINT a$;
  GOTO inc1
  
REM divide -> divide una frase (a$) in parole (p$(i)) np=numero parole
 
divide:

  ll=LEN(a$)
  i=0:t=1:fs=0
divide1:
  IF i=ll THEN np=t:GOTO divide2
  i=i+1
  w$=MID$(a$,i,1)
  IF (w$<>" " AND w$<>"'") THEN p$(t)=p$(t)+w$:fs=0:GOTO divide1
  IF fs<>0 THEN GOTO divide1
  t=t+1:fs=1
  GOTO divide1
divide2:
  IF np=0 THEN RETURN
  IF p$(np)="" THEN np=np-1:GOTO divide2
  RETURN
       
     
     
REM Parser
     
parser:
   FOR i=0 TO 100:p$(i)="":NEXT:REM pulisce il vettore delle parole
   PRINT 
   GOSUB inc 
   IF a$="AGAIN" THEN a$=copia$ 
   copia$=a$   
   GOSUB divide
   PRINT 
   IF np=0 THEN GOTO parser
   mosse=mosse+1
   IF np=1 THEN GOTO comandi
   d$=p$(2)
   GOSUB cercaobj
   IF t<>0 THEN p$(3)=p$(2)
   IF np>2 THEN GOTO verbi
   PRINT "Non capisco, prova a reinserire la frase."
   GOTO parser
   
comandi:
   v$=p$(1)
   
   REM lista comandi con subroutines
   IF v$="CIAO" THEN PRINT "Ciao capo, come va ?":RETURN
   IF v$="N" OR v$="NORD" THEN np=3:p$(3)="NORD":GOTO vai
   IF v$="S" OR v$="SUD" THEN np=3:p$(3)="SUD":GOTO vai
   IF v$="E" OR v$="EST" THEN np=3:p$(3)="EST":GOTO vai
   IF v$="O" OR v$="OVEST" THEN np=3:p$(3)="OVEST":GOTO vai
   IF v$="SU" THEN np=3:p$(3)="SU":GOTO vai
   IF v$="G" OR v$="GIU" THEN np=3:p$(3)="GIU":GOTO vai
   IF v$="GUARDA" THEN GOTO guarda
   IF v$="I" OR v$="INVENTARIO" THEN GOTO inventario
   IF v$="SCORE" THEN GOTO score
   IF v$="SAVE" THEN GOTO saveg
   IF v$="LOAD" THEN GOTO loadg
   
   
   PRINT "Non conosco la parola '"v$"'."
   RETURN
   
verbi:
   v$=p$(1)
   
   REM lista verbi con subroutines
   IF v$="VAI" THEN GOTO vai
   IF v$="PRENDI" OR v$="PIGLIA" THEN GOTO prendi
   IF v$="LASCIA" THEN GOTO lascia
   
   IF v$="TIRA" OR v$="SPINGI" OR v$="MUOVI" THEN GOTO muovi
   IF v$="APRI" THEN GOTO apri
   IF v$="CHIUDI" THEN GOTO chiudi
   IF v$="ACCENDI" THEN GOTO accendi
   IF v$="SPENGI" OR v$="SPEGNI" THEN GOTO spengi
   IF v$="ATTACCA" OR v$="UCCIDI" THEN GOTO attacca
   IF v$="DAI" THEN GOTO dai
   IF v$="MANGIA" THEN GOTO mangia
   IF v$="LEGGI" THEN GOTO leggi
   
   PRINT "Non conosco la parola '"v$"'."
   RETURN
   
REM le azioni
 
apri:
  IF np<>3 THEN PRINT "Non capisco.":RETURN     
   
  d$=p$(3)
  GOSUB cercaobj  
  IF t=0 THEN PRINT "Non conosco la parola '"d$"'.":RETURN
  
  REM Si possono aprire solo porte e finestre
  IF (t<3 OR t>4) THEN PRINT "Cosa devo fare ?":RETURN 
  IF o%(t)<>room THEN PRINT "Aprire cosa ?":RETURN
  
  IF t=4 GOTO aprifin: 
  
  PRINT "La porta e' sbarrata e non puo' essere aperta !"
  RETURN 
   
aprifin:   
  
  REM E se si e' gia' aperta ? 
  IF map%(4,4)=6 THEN PRINT "Ancora ?":RETURN 
      
  REM Tutto OK
      
  PRINT "Fatto."
  map%(4,4)=6
  map%(6,3)=4
         
  RETURN 

chiudi:
  IF np<>3 THEN PRINT "Non capisco.":RETURN
  d$=p$(3)
  GOSUB cercaobj
  IF t=0 THEN PRINT "Non conosco la parola '"d$"'.":RETURN
  IF (t<3 OR t>4) THEN PRINT "Cosa devo fare ?":RETURN 
  IF o%(t)<>room THEN PRINT "Chiudere cosa ?":RETURN
  IF t=3 THEN PRINT "E' chiusa !":RETURN
  PRINT "Fatto."
  map%(4,4)=-2
  map%(6,3)=-2
  RETURN

accendi:
  IF np<>3 THEN PRINT "Non capisco.":RETURN
  d$=p$(3)
  GOSUB cercaobj
  IF t=0 THEN PRINT "Non conosco la parola '"d$"'.":RETURN
  IF t<>7 THEN PRINT "Cosa devo fare ?":RETURN 
  IF o%(t)<>-1 THEN PRINT "Non ce l'ho !":RETURN
  IF lamp=1 THEN PRINT "E' accesa !":RETURN
  PRINT "Fatto."
  lamp=1
  RETURN
  
spengi:
  IF np<>3 THEN PRINT "Non capisco.":RETURN
  d$=p$(3)
  GOSUB cercaobj
  IF t=0 THEN PRINT "Non conosco la parola '"d$"'.":RETURN
  IF t<>7 THEN PRINT "Cosa devo fare ?":RETURN 
  IF o%(t)<>-1 THEN PRINT "Non ce l'ho !":RETURN
  IF lamp=0 THEN PRINT "E' spenta !":RETURN
  PRINT "Fatto."
  lamp=0
  RETURN

muovi:
  IF np<>3 THEN PRINT "Non capisco.":RETURN
  d$=p$(3)
  GOSUB cercaobj
  IF t=0 THEN PRINT "Non conosco la parola '"d$"'.":RETURN   
  IF (o%(t)<>room AND o%(t)<>-1) THEN PRINT "Cosa devo muovere ?":RETURN
  IF t<>5 THEN PRINT "Questa azione non sembra funzionare.....":RETURN
  IF map%(10,6)=12 THEN PRINT "Di nuovo ?":RETURN
  PRINT "Muovere il letto rivela un passaggio nel pavimento."
  map%(10,6)=12
  punti=punti+30  
  RETURN
  
mangia:
  IF np<>3 THEN PRINT "Non capisco.":RETURN
  d$=p$(3)
  GOSUB cercaobj
  IF t=0 THEN PRINT "Non conosco la parola '"d$"'.":RETURN   
  IF t<>8 THEN PRINT "Cosa dovrei mangiare ?":RETURN
  IF o%(t)<>-1 THEN PRINT "Non posso mangiare quello che non ho !":RETURN
  PRINT "No grazie, non ho fame."
  RETURN
  
attacca:
  IF np<4 THEN PRINT "Non capisco.":RETURN
  d$=p$(3)
  GOSUB cercaobj
  IF t=0 THEN PRINT "Non conosco la parola '"d$"'.":RETURN   
  IF t>2 THEN PRINT "Cosa dovrei attaccare ?":RETURN
  IF o%(t)<>room THEN PRINT "Qui non c'e' nessuno !!!":RETURN
  t1=t
  d$=p$(np)
  GOSUB cercaobj
  IF t=0 THEN PRINT "Non conosco la parola '"d$"'.":RETURN
  IF t<9 THEN PRINT "Che cosa devo usare ?":RETURN
  IF o%(t)<>-1 THEN PRINT "Non ho quest'arma !":RETURN
  IF t1=2 THEN PRINT "Lemo schiva il tuo colpo e ti affibbia un sonoro"
  IF t1=2 THEN PRINT "schiaffone !":energia=energia-5:RETURN
  
  RANDOMIZE TIMER
  a=INT((RND*5))
  IF a=0 THEN PRINT "Il tuo colpo ha mancato il guardiano !":RETURN
  IF a<4 THEN PRINT "Hai colpito di striscio il guardiano !":punti=punti+2:RETURN
  PRINT "Con un colpo ben assestato hai ucciso il guardiano,"
  PRINT "che si accascia al suolo e sparisce in una nuvoletta"
  PRINT "di fumo bluastro."
  o%(1)=0
  o%(10)=room
  map%(13,2)=14
  punti=punti+20
  RETURN
               
dai:
  IF np<4 THEN PRINT "Non capisco.":RETURN
  d$=p$(3)
  GOSUB cercaobj
  IF t=0 THEN PRINT "Non conosco la parola '"d$"'.":RETURN   
  IF o%(t)<>-1 THEN PRINT "Non posso dare cio' che non ho !":RETURN
  t1=t
  d$=p$(np)
  GOSUB cercaobj
  IF t=0 THEN PRINT "Non conosco la parola '"d$"'.":RETURN
  IF t>2 THEN PRINT "Cosa ?":RETURN
  IF o%(t)<>room THEN PRINT "Qui non c'e' !":RETURN
  IF t=1 THEN PRINT "Il guardiano non sembra gradire la tua offerta.":RETURN
  IF t1<>8 THEN PRINT "Lemo sembra non gradire la tua offerta.":RETURN
  PRINT "Lemo, felice, prende la mela e la divora in un sol boccone,"
  PRINT "poi si volta e se ne va'."
  o%(2)=0
  o%(8)=0
  map%(19,2)=20
  punti=punti+20
  RETURN
  
  
  
leggi:

  IF np<>3 THEN PRINT "Non capisco.":RETURN        
  d$=p$(3)
  GOSUB cercaobj
  IF t=0 THEN PRINT "Non conosco la parola '"d$"'.":RETURN
  
  REM Si puo' leggere solo la pergamena !
  IF t<>6 THEN PRINT "Cosa devo fare ?":RETURN 
  
  REM Si puo' leggere solo se si e' presa ! 
  IF o%(t)<>-1 THEN PRINT "Non puoi leggere cio' che non hai !":RETURN
   
  REM OK
  
  
  PRINT "Benvenuti nel magico mondo dell'AVVENTURA.
  PRINT "DEMO-ADVENTURE V2.01"
  PRINT "by M. Giunti 1989"
   
  RETURN
  
saveg:  
 PRINT "Nome del file ?"
 GOSUB inc
 ll=LEN(a$)
 IF ll=0 THEN RETURN
 OPEN a$ FOR OUTPUT AS #1
  PRINT#1,room
  PRINT#1,mosse
  PRINT#1,punti
  PRINT#1,energia
  PRINT#1,lamp
  
  FOR i=1 TO oggetti
   PRINT#1,o%(i)
  NEXT
  
  FOR i=1 TO stanze
   FOR t=1 TO 6
    PRINT#1,map%(i,t)
   NEXT
  NEXT
  
  CLOSE #1
  PRINT "OK"
  RETURN
  
loadg:
 PRINT "Nome del file ?"
 GOSUB inc
 ll=LEN(a$)
 IF ll=0 THEN RETURN
 OPEN a$ FOR INPUT AS #1
  INPUT#1,room
  INPUT#1,mosse
  INPUT#1,punti
  INPUT#1,energia
  INPUT#1,lamp
  
  FOR i=1 TO oggetti
   INPUT#1,o%(i)
  NEXT
  
  FOR i=1 TO stanze
   FOR t=1 TO 6
    INPUT#1,map%(i,t)
   NEXT
  NEXT
  
  CLOSE #1
  PRINT "OK"
  RETURN
  
  
        
fine:      
