Una storia interattiva, in vecchio stile, con Python

python-logo (1)Nel primo articolo per il nuovo anno (Buon 2016 a tutti!) ho pensato di parlare un po’ di Python, più che altro perché, come avevo accennato introducendolo qui è un linguaggio di programmazione di gran lunga più semplice da imparare di C++ e coloro che sanno già utilizzare quest’ultimo sono grandemente avvantaggiati.

Così, ho pensato di fare un piccolo articolo dove vi mostro come fare un programmino per raccontare una storia, in vecchio stile, per chi è ancora alle prime armi con la programmazione o chi non ha ancora deciso quale linguaggio imparare per primo.

Ho recuperato allora un vecchio programmino semplice che avevo scritto in inglese un bel po’ di tempo fa tanto per approcciarmi a questo linguaggio.

Uno dei vantaggi di Python è la mancanza dell’obbligo di uso di un compiler perché, una volta scritto il programma e salvato come file .py esso si può facilmente avviare cliccandoci sopra due volte.

In ogni caso, se foste curiosi di vedere cosa viene fuori potete andare su questo link https://repl.it/Bbjs/1 in cui ho copiato ed incollato il programma scritto qui sotto e cliccare in alto Run (Corri) così da vederne il risultato nella parte destra della finestra.

Quello che vi serve per lavorare su Python comunque sono due cose: Python stesso scaricabile a all’indirizzo http://www.python.it/download/ e un code editor (ovvero un software che vi permette di scrivere e mettere insieme il vostro programma) come, per esempio Notepad ++, semplice da usare e gratuito, che potete trovare al seguente link: https://notepad-plus-plus.org/download/v6.8.6.html.

Vi ricordo, prima di cominciare che potrete trovare su internet e sul sito stesso di Python una miriade di tutorial ben fatti ed ad esso dedicati anche in lingua italiana.

Vediamo allora un esempio di storia interattiva e, poi, vi spiegherò brevemente le specifiche:

print ("")
print ("Welcome to your story")
print ("--------------------------------------------")
print ("")
# Presentation
print ("Hello reader")
import random
name = input ('What is your name? ')
print ("Hello " + name)
# Gender
gender = input ('Are you male or female? ')
print ("You are a " + gender)
day = input ('What day is it? ')
print ("Today is " + day)
if gender == "female":
 pronoun = "she"
elif gender == "male":
 pronoun = "he"
# Roles, names and places
roles = ["warrior", "hunter", "mage", "priest"]
names = ["Olaf", "Antea", "Ekphy", "Guy"]
actions = ["slay", "heal", "save", "rescue", "eat", "kill", "lick"]
places = ["IronyCity", "SadCity", "BoldCity", "YukkyCity"]
actor_name = random.choice (names)
actor_role = random.choice (roles)
quest = random.choice (actions)
magic_place = random.choice (places)
# The story begins
story = "Once upon a time, there was a " + actor_role + " called " + name + "; " + pronoun + " and some friends found themselves in the shitty land of " + magic_place + ". This land was ruled by " + actor_name + " the " + actor_role + ". All of a sudden a mysterious voice spoke to them from high in the sky and said: <<You must " + quest + " " + actor_name + " the " + actor_role + " to lift the curse of not being able to use technology...>>. "
print (story)

Come possiamo notare il piccolo programma è stato diviso in cinque sezioni come siamo abituati a fare anche con C++ per rendere più leggibile e semplice la correzione di eventuali errori. I punti e virgola però, qui, non sono necessari e come possiamo notare la lettura del programma risulta molto semplice anche a chi di programmazione non sa nulla poiché il linguaggio di Python punta maggiormente su una leggibilità maggiore rispetto a C++ ed altri linguaggio.

PRIMA PARTE: IL TITOLO

Il comando print funziona come il cout di C++, ovvero dà l’ordine al computer di scrivere ciò che segue all’interno delle parentesi tonde (nel caso di C++, invece, vengono utilizzate le virgolette <<). Nella seconda riga di comando e nella quarta abbiamo un (” “) che significa, semplicemente, di saltare una riga e lasciarla vuota. La scritta (“Welcome to your story”), ovvero benvenuto/a nella tua storia, è una semplice introduzione o se vogliamo titolo per il programma seguito da alcuni trattini (segnalati sulla riga quattro) che servono semplicemente come estetica per suddividere il titolo dal resto che seguirà.

SECONDA PARTE: LA PRESENTAZIONE

La presentazione, come il titolo precedentemente, viene segnalata da un che funziona esattamente come il doppio slash // in C++, cioè come commento o sottotitolo. Come abbiamo visto il print farà dire al nostro programma un “Hello reader” (Ciao lettore/lettrice). Il comando import random è quello che viene generalmente chiamato modulo random che ci dà la possibilità di generare numeri a caso o, in questa specifica situazione, di recuperare casualmente un elemento dalle liste che troveremo successivamente nel programma come, per esempio, nomi, ruoli, azioni e luoghi.

Nella riga dodici, quindi, il nostro software chiederà all’utente come si chiama con il comando name = input (‘What is your name? ‘). Qui notiamo che ho personalmente scelto di usare gli apostrofi ‘ ‘ anziché le virgolette ” ” ma, in realtà, non fa alcuna differenza: potremo infatti utilizzare entrambe le possibilità senza troppi problemi; ho fatto questa scelta per il semplice motivo di rendere più facile con un colpo d’occhio la suddivisione tra gli input dati dal programma all’utente e ciò che, invece, il computer scriveva direttamente sullo schermo senza richiedere una risposta.

Ovviamente, essendo il nostro programma very polite, una volta saputo il nome dell’utente, gli darà il benvenuto con un Hello + il nome inserito. Notare che, quindi, l’opzione name dovrà ritrovarsi nella stessa forma sia per quanto riguarda l’input che la riga successiva od il programma non sarà in grado di riscrivere il nome inserito dall’utente.

TERZA PARTE: IL GENDER

Per fortuna, in inglese, c’è qualche problema in meno nella resa del gender quando scriviamo e, quindi, ci limitiamo al she/he (lei/lui) senza dover andare a pasticciare nella declinazione dei verbi o degli aggettivi. Per cui il nostro programma si limiterà a richiedere un altro input dall’utente per sapere se è maschio o femmina (male or female) allo stesso modo in cui, precedentemente, gli/le aveva chiesto come si chiamava. E, tanto per aggiungere una cosa in più, gli/le chiederà anche che giorno è.

Ora, notiamo il solito if-statement che avevamo visto anche in C++ ma molto semplificato rispetto a questi. Il comando elif è un semplice acronimo di else if utilizzato tipicamente da Python. Quindi se l’utente è female il nostro programma utilizzerà il pronoun (pronome) femminile altrimenti quello maschile. Vanno, ovviamente, notati i due punti alla fine della riga di if ed elif che non vanno assolutamente dimenticati.

QUARTA PARTE: RUOLI, NOMI E LUOGHI

Siamo, quindi, arrivati a quello a cui si riferiva il comando che abbiamo visto nella seconda parte import random ovvero il luogo da cui il nostro programma prenderà a caso alcune possibilità che abbiamo reso disponibili. Essendo questo una sorta di storia randomizzata di tipo fantasy sceglieremo, allora per esempio, come ruoli, roleswarrior, hunter, mage, priest (guerriero, cacciatore, mago, prete) prestando attenzione nel chiuderli tra parentesi quadre, metterli tra virgolette e dividerli ad uno ad uno con una virgola. Faremo, quindi, la stessa cosa con i nomi, le azioni ed i luoghi da noi inventati.

Dopodiché, per recuperare gli elementi in modo casuale dalle liste aggiungeremo, per esempio per una missione quest = random.choice (actions) cosicché, quando nella storia verrà segnalato di inserire una missione il programma sceglierà a caso una delle azioni presenti nella lista precedente, ovvero, slay, heal, save, rescue, eat, kill, lick (cacciare, guarire, salvare, recuperare, mangiare, uccidere, leccare).

QUINTA PARTE: LA STORIA INIZIA

Qui, ci limiteremo a scrivere story seguito dalla trama tra virgolette. Ovviamente, dovremo fare attenzione, ogni qualvolta vorremo inserire un nome, un’azione, un luogo od un ruolo a chiudere le virgolette, aggiungere un bel + sia prima che dopo il nominativo dell’elemento che vogliamo far comparire.

Infine, con il comando print (story) il programma scriverà la nostra narrazione. Potremo anche notare che ogni volta che rigiocheremo da capo alla storia essa cambierà leggermente poiché gli elementi inseriti casualmente dal programma muteranno.

Per esempio, in questo momento, facendo correre il programma mi è apparsa la seguente storia:

Welcome to your story

—————————————————————————————————

Hello reader

What is your name? Anairesis

Hello Anairesis

Are you male or female? female

You are a female

What day is it? 05.01.2016

Today is 05.01.2016

Once upon a time, there was a priest called Anairesis; she and some friends found themselves in the shitty land of SadCity. This land was ruled by Olaf the mage. All of a sudden a mysterious voice spoke to them from high in the sky and said: <<You must lick Olaf the mage to lift the curse of not being able to use technology…>>.

 E a voi quale storia vi ha generato il programma?

Share the love

Comincia la discussione

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.