Skip to content

Instantly share code, notes, and snippets.

@fmaida
Last active March 11, 2024 13:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fmaida/77d3ce948270a4e818fa2b89003e6f35 to your computer and use it in GitHub Desktop.
Save fmaida/77d3ce948270a4e818fa2b89003e6f35 to your computer and use it in GitHub Desktop.
Possiible prototipo per un formato semplice e facilmente estendibile con cui poter creare Interactive Fiction (IF). Tutte le spaziature e le tabulazioni sono completamente opzionali, e sono state inserite con l'unico scopo di rendere più semplice la lettura del codice sorgente.
# File: storia/__main__.toml
# Descrizione dello scenario
#
# * La variabile "requirements" richiede che uno o più oggetti
# indicati siano nell'inventario dell'utente, per poter
# visualizzare il testo.
# * Gli oggetti elencati possono anche
# essere preceduti da un punto esclamativo (!) per indicare
# una condizione di NOT: e cioè, che l'oggetto NON DEVE
# essere presente nell'inventario.
# * Se non è presente un parametro "requirements", il testo
# viene sempre visualizzato
[[scenario]]
text = """
Nella stanza vedi una tenda. Accanto alle tenda c'è un tavolo.
"""
# Il testo sottostante viene visualizzato se l'utente non
# ha raccolto la pistola (l'oggetto "pistola" NON
# COMPARE nell'inventario del giocatore)
[[scenario]]
requirements = ["!pistola"]
text = """
Sopra il tavolo vedi una pistola.
"""
# Il testo sottostante viene visualizzato se l'utente
# ha raccolto la pistola (l'oggetto "pistola"
# compare nell'inventario del giocatore)
[[scenario]]
requirements = ["pistola"]
text = """
Il tavolo è vuoto.
"""
# Scelte a disposizione dell'utente
#
# * La variabile "requirements" richiede che uno o più oggetti
# indicati siano nell'inventario dell'utente, per poter
# visualizzare la scelta
# * La variabile "goto" indica il percorso (relativo) al file
# da aprire dopo aver fatto la scelta corrispondente
# * Le variabili "add" e "remove" rispettivamente aggiungono o
# rimuovono un'oggetto dall'inventario del giocatore
# Questa scelta appare solo se l'utente non ha ancora raccolto
# la pistola dal tavolo
[[choice]]
requirements = ["!pistola"]
text = """
Raccogli la pistola
"""
add = "pistola"
goto = "__main__"
# Se l'utente ha con se la pistola e scosta le tende,
# si salva dall'assassino in agguato dietro la tende.
# Nota che la variabile "goto" contiene un array: in
# questo modo, la destinazione viene scelta a caso fra
# queste due:
# 1) "cartella/vivi_esito1.toml"
# 2) "cartella/vivi_esito2.toml"
[[choice]]
requirements = ["gun"]
text = """
Scosta le tende
"""
goto = ["cartella/vivi_esito1", "cartella/vivi_esito2"]
# Se l'utente non ha con se la pistola e scosta le tende,
# perisce per mano dell'assassino in agguato dietro la tende
[[choice]]
requirements = ["!gun"]
text = """
Scosta le tende
"""
goto = "cartella/muori"
# Se l'utente ha con se la pistola, questa scelta appare
[[choice]]
requirements = ["gun"]
text = """
Rimetti a posto la pistola
"""
remove = "gun"
goto = "__main__"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment