Informazioni generali
KB è un sottinsieme di BASIC, con funzioni specifiche per la gestione di oggetti di KULT. Lo scopo della sua introduzione è quello di fornire uno strumento facile e potente per arricchire articoli dentro
KULT Underground, sostituendo, per le applicazioni più semplici, i
KAO, e, soprattutto, per creare ipertesti interattivi, in grado, cioè, di ricordare situazioni e di compiere link di conseguenza.
La release 1.001 ha già molte delle potenzialità che mi ero prefissato di introdurre, ed è stata anche testata per vari giorni, ma in ogni caso è possibile che al momento dobbiate semplificare alcune linee di codice, se queste non dovessero funzionare di primo acchito.
———————————————————————-
La sintassi di KB è estremamente semplice: non ci sono numeri di riga, e se mettete una sola istruzione per linea non è necessario nessun terminatore. Se invece volete mettere una sequenza di istruzioni di seguito dovete usare un punto e virgola (;) per separarle.
Esempi:
a=10 b=20
c=10;a=c+7
if(a>7)
a=7;jump(10)
NOTA: quando scrivete un pezzo di codice in KB dentro KTEXT questo deve essere in toto un iperstick (non può essere mescolato, cioè, con del testo) e deve iniziare con la riga
###
———————————————————————-
Come in un normale basic le variabili di KB non devono essere dichiarate. Nella release corrente il limite per la lunghezza dei nomi
è 12, e tutte le variabili sono di tipo intero a 16 bit
(-32768..+32767).
Esempi:
Valore1=10
Valore2=20
Somma=Valore1+Valore2
x=10 y=i*320+x-2
ATTENZIONE: nella release corrente le operazioni di calcolo vengono eseguite da sinistra verso destra senza riguardo per la priorità degli operatori e NON sono gestite le parentesi. Questo vuol dire che x=10*5+6 fa mette 56 nella variabile x ((10*5)+6), mentre x=6+10*5 da come risultato 80 ((6+10)*5). Questa peculiarità verrà sicuramente risolta al più presto ma per il momento dovete tenerne conto. Per operazioni complesse dovrete quindi usare variabili d’appoggio, o più passaggi:
x=10*5+7*5
deve diventare
x=10*5;x=7*5+x
———————————————————————-
L’istruzione if(), in questa release, non ha un corrispondente else o endif. Questo vuol dire che la condizione, se viene soddisfatta fa eseguire solamente la linea successiva. Se dovete gestire degli else, per il momento, potete mettere if con la condizione contraria, oppure usare dei goto().
Esempi:
if(a>10)
b=b+1
if(a+b<>c+d)
a=0;b=10;c=20;d=30
if(b+5<=c*2)
a=0
———————————————————————-
Queste sono le istruzioni che probabilmente userete più spesso, e il loro scopo è quello di far proseguire l’ipertesto all’iperstick selezionato, o di far apparire un popup con un dato messaggio.
Ricordate che KB è in primis uno strumento da usare dentro KTEXT per creare testi a salti, e di conseguenza avrete diversi “spezzoni” di testo, identificati da un numero progressivo.
Ma un esempio vi chiarirà sicuramente le idee molto meglio che altre righe di spiegazione:
LISTATO:
Sono in una casa e vedo su di un tavolo una
<1>
### chiave=1 show(“Ho preso la chiave.”)
<2>
### if(chiave=0)
show(“La porta è chiusa a chiave.”) jump(3)
<3>
Apro la porta con la chiave e passo in cucina.
RISULTATO
———————————————————————-
Questa istruzione vi permette di far assumere ad una specificata variabile un numero casuale compreso in un dato intervallo.
Esempio:
rnd(num,10)
(Mette in num un valore casuale compreso tra 0 e 9)
rnd(a,b)
(Mette in a un valore casuale compreso tra 0 e b)
Lo scopo è quello di offrire casualità di situazioni all’interno degli ipertesti, e ovviamente, il suo abbinamento migliore è con le istruzioni precedenti.
Vedi una ragazza e provi a
<1>
### rnd(saluto,30) saluto=saluto/10 if(saluto=0)
show(“Ti risponde sorridendo.”) if(saluto=1)
show(“Aggrotta le sopracciglia, poi, dopo averci pensato un attimo, ti invita ad allontanarti.”) show(“Ti insulta e tenta di strangolarti.”)
RISULTATO
Ovviamente, per provare il funzionamento di questa istruzione dovrete tentare più volte di cliccare su parlarle.
———————————————————————-
Similarmente a jump(), questa istruzione sposta la sequenza degli eventi ad un altro iperstick di un file in formato KTEXT. La differenza è che jump() fa mostrare del testo sullo schermo, mentre goto(), come la normale istruzione BASIC, sposta l’esecuzione.
Esempi:
if(a>10)
goto(2)
if(attacco>10)
goto(salto)
———————————————————————-
Questa istruzione permette di inserire righe di commento all’interno del codice.
Esempi:
rem Mette 10 in a a=10
rem Genera un numero casuale rnd(a,10) rem Se è minore di 5 vai al punto 3 if(a<5)
goto(3)
———————————————————————-
L’istruzione clear resetta tutte le variabili definite dal programma.
Esempi:
a=10 clear if(a=10)
Show(“a=10”)
Show(“a=0”)
(Fa apparire “a=0”)
———————————————————————-
Per le normali applicazioni in KTEXT probabilmente non avrete bisogno di istruzioni di ciclo, ma, giacchè nell’utilizzo di KB è compreso quello di sostituire semplici programmi KAO verranno introdotte al più presto la maggior parte delle istruzioni di ciclo proprie del BASIC.
Attualmente è già inclusa la coppia repeat until() (che, per mia deformazione C funziona come la do while())… probabilmente verrà cambiata… perciò se intendete usarla ricordatevi che avrà un funzionamento differente in un prossimo futuro.
Esempio:
y=0 repeat
x=0
repeat
x=x+1
….
until(x<10)
y=y+1 until(y<10)
Già funzionante e terminata è invece la coppia for() next(), che vi consiglio di sfruttare quindi al posto di repeat until()… la sua sintassi non è identica a quella del BASIC tradizionale, e quindi è richiesta un’attenzione maggiore nell’usarla, per evitare problemi.
Esempi:
b=2 for(a=b..b*3)
c=c+a
(a assumerà i valori (2,3,4,5,6) e c varrà 20)
for(y=0..10)
for(x=0..10)
…
next(x) next(y)
(questo ciclo NON è identico a quello precedente con repeat until(), in quanto i cicli for, in BASIC, hanno compresi gli estremi. Un ciclo da 0 a 10 vale (0,1,2,3,4,5,6,7,8,9,10))
Una peculiarità che potrebbe venirvi utile: se scrivete una variabile diversa dentro le parentesi del next(), sarà quella ad essere incrementata e ad essere controllata per la condizione iniziale.
Esempio:
y=5 for(x=0..10)
a=a+x+y next(y)
(questo ciclo restituirà in a il valore (0+5, 0+6, 0+7, 0+8, 0+9, 0+10
= 45)
Inutile sottolineare che i cicli di qualunque tipo NON possono incrociarsi:
Esempio:
for(x=0..10) repeat next(x) until(y<10)
Il codice mostrato causerà un comportamento sicuramente errato, e plausibilmente anche un crash dell’interprete.
———————————————————————-
KB è attivo dalla versione 1.4 di KTEXT, che potete scaricare dal nostro sito internet. Per qualunque commento, idea, o, magari, articolo sfruttante le nuove caratteristiche potete utilizzare la casella email di KULT Underground (kult@pianeta.it), o direttamente quella dell’autore (mgiorgi@pianeta.it).