Adattamento italiano del modulo lib_classes.i
della
ALAN Standard Library v2.1, © Anssi Räisänen, Artistic License 2.1.
Ad opera di Tristano Ajmone, © 2018, Artistic License 2.1.
Vestiario
Un indumento
è un capo di vestiario implementato secondo le regole
dell’estensione xwear.i
di Alan Bampton. Il codice di questa classe
impedisce di indossare gli indumenti in ordine insensato — per esempio, non
puoi indossare una camicia se stai già indossando una giacca, e via dicendo.
Queste funzionalità si applicano solo al protagonista, e non possono essere
estese ai PNG.
Questa classe è basata sull’estensione |
La classe indumento
ridefinisce i verbi esamina
, indossa
e togliti
.
Il modulo |
Gli indumenti
Ora definiamo la classe indumento
ed i suoi attributi comuni, dopodiché
ridefiniamo su questa classe i verbi esamina
, indossa
e togliti
.
Impedisci verbi che potrebbero dislocare indossati
VERB metti_in --> metti (ogg) 'in' (cont)
WHEN ogg
CHECK ogg IS NOT indossato
ELSE
IF ogg IN hero
THEN SAY mia_AT:indumento_andrebbe_rimosso.
ELSE
IF ogg IS NOT plurale
-- "Al momento $+1 [è/sono] indossat$$"
THEN SAY mia_AT:indumento_indossato_PNG_sg.
ELSE SAY mia_AT:indumento_indossato_PNG_pl.
END IF. SAY ogg:vocale.
FOR EACH ac IsA ACTOR DO
IF ogg IN ac
THEN SAY ac:prep_DA. SAY ac. "."
END IF.
END FOR.
END IF.
END VERB metti_in.
VERB metti_su --> metti (ogg) su (superficie)
WHEN ogg
CHECK ogg IS NOT indossato
ELSE
IF ogg IN hero
THEN SAY mia_AT:indumento_andrebbe_rimosso.
ELSE
IF ogg IS NOT plurale
-- "Al momento $+1 [è/sono] indossat$$"
THEN SAY mia_AT:indumento_indossato_PNG_sg.
ELSE SAY mia_AT:indumento_indossato_PNG_pl.
END IF. SAY ogg:vocale.
FOR EACH ac IsA ACTOR DO
IF ogg IN ac
THEN SAY ac:prep_DA. SAY ac. "."
END IF.
END FOR.
END IF.
END VERB metti_su.
VERB dai_a --> dai (ogg) a (png)
WHEN ogg
CHECK ogg IS NOT indossato
ELSE
IF ogg IN hero
THEN SAY mia_AT:indumento_andrebbe_rimosso.
ELSE
IF ogg IS NOT plurale
-- "Al momento $+1 [è/sono] indossat$$"
THEN SAY mia_AT:indumento_indossato_PNG_sg.
ELSE SAY mia_AT:indumento_indossato_PNG_pl.
END IF. SAY ogg:vocale.
FOR EACH ac IsA ACTOR DO
IF ogg IN ac
THEN SAY ac:prep_DA. SAY ac. "."
END IF.
END FOR.
END IF.
END VERB dai_a.
Se si vuole previnire che i PNG consegnino i loro vestiti, decomenntare il seguente verbo, o aggiungerlo al proprio codice dell’avventura:
-- VERB chiedi --> chiedi a (png) (ogg)
-- WHEN ogg
-- CHECK ogg IS NOT indossato
-- ELSE
-- IF ogg IN hero
-- THEN SAY mia_AT:ogg2_già_posseduto.
-- ELSE
-- FOR EACH ac IsA ACTOR DO
-- IF THIS IN ac
-- THEN SAY THE ac. "sta indossando $+2."
-- END IF.
-- END FOR.
-- END IF.
-- END VERB chiedi.
VERB lancia --> lancia (proiettile)
CHECK proiettile IS NOT indossato
ELSE
IF proiettile IN hero
THEN SAY mia_AT:indumento_andrebbe_rimosso.
ELSE
IF proiettile IS NOT plurale
-- "Al momento $+1 [è/sono] indossat$$"
THEN SAY mia_AT:indumento_indossato_PNG_sg.
ELSE SAY mia_AT:indumento_indossato_PNG_pl.
END IF. SAY proiettile:vocale.
FOR EACH ac IsA ACTOR DO
IF proiettile IN ac
THEN SAY ac:prep_DA. SAY ac. "."
END IF.
END FOR.
END IF.
END VERB lancia.
VERB lancia_a --> lancia (proiettile) a (png)
WHEN proiettile
CHECK proiettile IS NOT indossato
ELSE
IF proiettile IN hero
THEN SAY mia_AT:indumento_andrebbe_rimosso.
ELSE
IF proiettile IS NOT plurale
-- "Al momento $+1 [è/sono] indossat$$"
THEN SAY mia_AT:indumento_indossato_PNG_sg.
ELSE SAY mia_AT:indumento_indossato_PNG_pl.
END IF. SAY proiettile:vocale.
FOR EACH ac IsA ACTOR DO
IF proiettile IN ac
THEN SAY ac:prep_DA. SAY ac. "."
END IF.
END FOR.
END IF.
END VERB lancia_a.
VERB lancia_contro --> lancia (proiettile) contro (bersaglio)
WHEN proiettile
CHECK proiettile IS NOT indossato
ELSE
IF proiettile IN hero
THEN SAY mia_AT:indumento_andrebbe_rimosso.
ELSE
IF proiettile IS NOT plurale
-- "Al momento $+1 [è/sono] indossat$$"
THEN SAY mia_AT:indumento_indossato_PNG_sg.
ELSE SAY mia_AT:indumento_indossato_PNG_pl.
END IF. SAY proiettile:vocale.
FOR EACH ac IsA ACTOR DO
IF proiettile IN ac
THEN SAY ac:prep_DA. SAY ac. "."
END IF.
END FOR.
END IF.
END VERB lancia_contro.
VERB lancia_in --> lancia (proiettile) 'in' (cont)
WHEN proiettile
CHECK proiettile IS NOT indossato
ELSE
IF proiettile IN hero
THEN SAY mia_AT:indumento_andrebbe_rimosso.
ELSE
IF proiettile IS NOT plurale
-- "Al momento $+1 [è/sono] indossat$$"
THEN SAY mia_AT:indumento_indossato_PNG_sg.
ELSE SAY mia_AT:indumento_indossato_PNG_pl.
END IF. SAY proiettile:vocale.
FOR EACH ac IsA ACTOR DO
IF proiettile IN ac
THEN SAY ac:prep_DA. SAY ac. "."
END IF.
END FOR.
END IF.
END VERB lancia_in.
VERB lega_a --> lega (ogg) a (bersaglio)
WHEN ogg
CHECK ogg IS NOT indossato
ELSE
IF ogg IN hero
THEN SAY mia_AT:indumento_andrebbe_rimosso.
ELSE
IF ogg IS NOT plurale
-- "Al momento $+1 [è/sono] indossat$$"
THEN SAY mia_AT:indumento_indossato_PNG_sg.
ELSE SAY mia_AT:indumento_indossato_PNG_pl.
END IF. SAY ogg:vocale.
FOR EACH ac IsA ACTOR DO
IF ogg IN ac
THEN SAY ac:prep_DA. SAY ac. "."
END IF.
END FOR.
END IF.
END VERB lega_a.
Istruzioni per l’uso del vestiario
La tabella del vestiario
La tabella che segue riporta una selezione di indumenti d’uso comune ed i corrispettivi valori degli attributi per una corretta implementazione.
Per creare un indumento non figurante nella tabella, dovrebbe bastare un po' di ingegno nel rapportare il nuovo capo di vestiario a quelli presenti nella tabella, cercando di cogliere somilianze e differenze fino ad ottenere dei valori adatti allo scopo.
Indumento/strato | testa | viso | tronco | gambe | piedi | mani |
---|---|---|---|---|---|---|
cappello |
|
|
|
|
|
|
canottiera/reggiseno |
|
|
|
|
|
|
mutande/slip |
|
|
|
|
|
|
pagliaccetto |
|
|
|
|
|
|
blusa/camicia/T-shirt |
|
|
|
|
|
|
abito donna/tuta lavoro |
|
|
|
|
|
|
gonna |
|
|
|
|
|
|
pantaloni/pantaloncini |
|
|
|
|
|
|
maglione/pullover |
|
|
|
|
|
|
giacca |
|
|
|
|
|
|
cappotto |
|
|
|
|
|
|
calze/gambaletti |
|
|
|
|
|
|
collant/calzamaglia |
|
|
|
|
|
|
scarpe/stivali |
|
|
|
|
|
|
guanti |
|
|
|
|
|
|