Siccome me lo avete chiesto in tanti, e visto che non mi piace tenermi il divertimento tutto per me, ho deciso di spiegarvi come fare a creare un generatore casuale di frasi personalizzabile a vostro piacimento.
Occorre premettere che se siete utenti di Blogspot il codice funzionerà così com'è soltanto se lo inserite in una colonna laterale, mentre per farlo andare anche nel corpo dei post occorre prima effettuare una piccola modifica "strutturale": andate nelle impostazioni del vostro blog, e sotto la linguetta "Formattazione", alla voce "Converti interruzioni di riga", scegliete "No"; ciò è necessario per fare in modo che nei post non venga inserito automaticamente il codice che manda il testo a capo ogni volta che c'è un'interruzione di riga, ed evitare quindi che il funzionamento dello script venga pregiudicato. E' bene avvertirvi, tuttavia, che da quel momento Blogspot, quando scriverete un post, non andrà più a capo automaticamente ogni volta che digitate "INVIO": sarete voi, nella visualizzazione HTML del post, a dover inserire manualmente il tag <br> ogni volta che vorrete andare a capo.
Ciò premesso, eccovi l'agognato codice, in una versione semplificata a scopo dimostrativo:
<script language="javascript" type="text/javascript"> <!--Come vi dicevo, si tratta di una versione "ridotta" del generatore originale: sono sicuro che non avrete difficoltà a capire come funziona, eccezion fatta per un paio di cosette che vi spiego qui di seguito.
Words1 = new Array("Sono certamente","Sono sicuramente","Sono assolutamente");
Words2 = new Array("veterinario ginecologo","percussionista","contorsionista");
Words3 = new Array("sia mai vissuto","ci sia mai stato","sia mai nato");
Words4 = new Array("in Armenia", "in un ring di wrestling","nel mondo dei Pokemon");
Words5 = new Array("dalla fine della seconda guerra mondiale","dall'inizio dell'era industriale","dalla grande crisi del '29");
Words6 = new Array("un provocatore", "un disfattista", "un farabutto");
Words7 = new Array("dignità", "vergogna", "amor proprio");
Words8 = new Array("dei comunisti", "delle sinistre", "dei marxisti");
document.write(
Words1[Math.floor((Math.random() * 100000) % Words1.length)] +
' il più grande ' +
Words2[Math.floor((Math.random() * 100000) % Words2.length)] +
' che ' +
Words3[Math.floor((Math.random() * 100000) % Words3.length)] +
' ' +
Words4[Math.floor((Math.random() * 100000) % Words4.length)] +
' ' +
Words5[Math.floor((Math.random() * 100000) % Words5.length)] +
'. Chi lo nega è ' +
Words6[Math.floor((Math.random() * 100000) % Words6.length)] +
' senza ' +
Words7[Math.floor((Math.random() * 100000) % Words7.length)] +
' al soldo ' +
Words8[Math.floor((Math.random() * 100000) % Words8.length)] + ".\n" );
--></script>
Potete aumentare, ovviamente, il numero delle parole possibili per ciascuna parte della frase: basta aggiungerle nell'array giusto nella parte superiore, con la stessa sintassi delle altre, e quindi tra virgolette e precedute dalla virgola.
Ad esempio, volendo aggiungere all'array numero 2 (quello delle professioni) un elemento in più, basterà fare così:
<script language="javascript" type="text/javascript"> <!--Tutto chiaro? spero di sì.
Words1 = new Array("Sono certamente","Sono sicuramente","Sono assolutamente");
Words2 = new Array("veterinario ginecologo","percussionista","contorsionista","saltatore in alto");
Words3 = new Array("sia mai vissuto","ci sia mai stato","sia mai nato");
Words4 = new Array("in Armenia", "in un ring di wrestling","nel mondo dei Pokemon");
Words5 = new Array("dalla fine della seconda guerra mondiale","dall'inizio dell'era industriale","dalla grande crisi del '29");
Words6 = new Array("un provocatore", "un disfattista", "un farabutto");
Words7 = new Array("dignità", "vergogna", "amor proprio");
Words8 = new Array("dei comunisti", "delle sinistre", "dei marxisti");
document.write(
Words1[Math.floor((Math.random() * 100000) % Words1.length)] +
' il più grande ' +
Words2[Math.floor((Math.random() * 100000) % Words2.length)] +
' che ' +
Words3[Math.floor((Math.random() * 100000) % Words3.length)] +
' ' +
Words4[Math.floor((Math.random() * 100000) % Words4.length)] +
' ' +
Words5[Math.floor((Math.random() * 100000) % Words5.length)] +
'. Chi lo nega è ' +
Words6[Math.floor((Math.random() * 100000) % Words6.length)] +
' senza ' +
Words7[Math.floor((Math.random() * 100000) % Words7.length)] +
' al soldo ' +
Words8[Math.floor((Math.random() * 100000) % Words8.length)] + ".\n" );
--></script>
Ovviamente, non esitate a contattarmi (nei commenti, per favore, in modo che la cosa sia utile a tutti) se avete difficoltà, e ricordatevi di fare in modo che il vostro generatore mantenga sempre una coerenza sintattica e grammaticale (con un po' di pratica dovreste farcela).
Ah, un'altra cosa. Se vi va, questo post potrebbe diventare l'inizio di una specie di contest: divertitevi a creare il vostro generatore, e quando l'avrete messo su fatemelo sapere (magari linkando questo post), in modo che io lo sappia e possa fare, tra un po', una panoramica riassuntiva delle vostre creazioni.
Buon divertimento a tutti!
---
P.S. Grazie a Jollino per aver inserito nei commenti un prezioso suggerimento migliorativo dello script.
Semplice e funzionale, bravo.
RispondiEliminaPosso però permettermi una piccola miglioria? Puoi evitare di cambiare manualmente il secondo termine dell'operatore modulo usando il metodo length di Array.
Invece di:
Words1[Math.floor((Math.random() * 100000) % 3)]
puoi usare:
Words1[Math.floor((Math.random() * 100000) % Words1.length)]
In questo modo lo script si "autoadatta" ai contenuti degli array e sei libero di modificarli a piacimento senza rischiare di dimenticarti di cambiare anche il modulo (cosa che a me succederebbe _sempre_ :D)
like a Jollino, stavo scrivendo la stessa cosa.
RispondiEliminaGrazie per il suggerimento, che in effetti migliora parecchio lo script. :-)
RispondiEliminaclassico caso di sviluppo software collaborativo :)
RispondiEliminamolto ma molto simpatica questa dotta (solo in informatica) dissertazione. non intendendomene molto di linguaggio macchina ho solo intuito. beh, per Berlusconi ci vuole un programma discretamente sofisticato, per Prodi bastava una fotocopiatrice, con protezione contro la saliva.
RispondiEliminaper Franceschini e Bersani pure, visto che dicono sempre le setsse cose, non c'e' da spremersi. almeno B. fa le gaffes.
evidentemente abbiamo a ché fare con un "matusa" :)
RispondiEliminaIl linguaggio macchina viene ormai adoperato solo da chi con la macchina ci "parla" sul serio! questo è javascript.
spero che chi legifera attualmente non abbia le stesse competenze informatiche (ma temo che, viste le ultime proposte di legge su Internet ed affini, questa speranza sia vana..)
Perdonami, ultimo anonimo: il "matusa" è rivolto a me?
RispondiElimina@metil non credo, sicuramente @anonimo 10.04
RispondiElimina@Jollino: inserito il tuo suggerimento. Grazie.
RispondiEliminaA disposizione, il bello dell'open source è questo. :)
RispondiEliminaVisto che ti piace il genere, dai un'occhiata anche a Polygen (http://polygen.org/). È più complesso di uno script in JS perché lavora con delle grammatiche vere e proprie, ma con un po' di pazienza si possono tirare fuori cose magistrali.
By the way, Jollino, tu sei un esperto di javascript e roba simile?
RispondiEliminaEsperto è un parolone, mi occupo più di PHP e MySQL (o quanto meno mi pagano per farlo). JS lo sto imparando ora, usando principalmente jQuery.
RispondiEliminaMi scrivi a metilparabenCHIOCCIOLAgmail.com?
RispondiEliminaFatto!
RispondiEliminaCiao, anche io volevo suggerirti polygen ma ho visto che non esistono versioni in javascript, quindi ne ho costruita io una versione (molto semplificata), questo è il codice: http://paste2.org/p/433019
RispondiEliminaIn quel modo è facile testare e modificare la grammatica, se si vuole stampare direttamente la stringa si può nascondere la textarea e modificare la funzione di stampa (dovrebbe essere abbastanza intuitivo)
Grazie A Metilparabenper il sorgente in JS.
RispondiEliminaGrazie anche a Etuardu per il suo contributo, da provare.
Complimenti, sei finito sul quotidiano "Il fatto quotidiano", il giornale creato da marco travaglio, padellaro & co.
RispondiEliminati allego lo screen dell'articolo dal pdf e, se vuoi altro, puoi contattarmi via mail.
PS: puoi trovarlo anche domani (23/09) in edicola!
Ciao!
http://img43.imageshack.us/img43/2294/ilfattoquotidiano.png
Ho letto anch'io sul fatto di Travaglio. Bella idea :-)
RispondiEliminaGrazie, grazie, grazie! Una volta dovevo scrivere l'Oroscopo a mano.
RispondiEliminahttp://dailystefstm.blog.com/2008/12/12/loroscopo-natalizio-di-stefstm/
Adesso ci pensa il generatore di Oroscopi giornalieri.
Carino.. ma come si usa?
RispondiEliminaIo, andando a naso visto che non ne capisco niente, ho copiato le istruzioni nel blocco note, ho salvato e poi ho cambiato l'estensione da .txt a .htm. Girava!
Appena sfruttato nel mio blog per una piccola autocelebrazione (auto-citarmi berlusconi nel blog non lo reggo proprio :D)
RispondiEliminaCiao e grazie!
@darkholder link!
RispondiEliminaGrazie mille!!
RispondiEliminaIo di queste "cose super informatiche" non ci capiso niente, ma è stato semplicissimo inserirlo nel mio blog seguendo le tue istruzioni (citando la fonte ovviamente).
Complimenti per lo splendido blog che ho scoperto da poco!
Bello, bello... Posso scippartelo e farne un widget per i Symbian 5.0 (Nokia 5800, 5330, N97 e Samsung Omnia? Sì?)
RispondiEliminaciao!
RispondiEliminagrazie per la condivisione di questo strumento che ti ho invidiato da sempre :D
una cosa: non riesco ad integrarlo in Blogger! nel senso che mi dà già la frase pronta mentre mi piacerebbe che ci fosse il tasto apposito (tipo un "Generate") per crearle a ripetizione nel caso si fosse insoddisfatti.
Grazie ancora per il codice :)
Vorrei farci un programmino freeware.
RispondiEliminaLo so che potrei cambiare le frasi, ma è già perfetto così (al limite ne aggiungerei).
Se ti menziono, mi dai il permesso?
;-) anche sul secoloxix :-)
RispondiEliminaUn piccolo aggiornamento utile potrebbe essere la parametrizzazione utile a caricare il contenuto delle frasi da 8 file diversi aggiornabili separatamente.
RispondiElimina@ArMyZ non direi, diminuirebbero troppo le possibilità di utilizzo su blog non self-hosted. però se ne può creare un'altra versione.
RispondiEliminaFruito sul Guardiano cieco
RispondiElimina:-D
Fichissimo.
M.
Questo commento è stato eliminato dall'autore.
RispondiEliminaMille grazie per il codice!
RispondiEliminaC'ho appena fatto un generatore di filosofia...
ho fabbricato un generatore di dichiarazioni di Tremonti sullo scudo fiscale...geniale, su blogspot gira ma su wordpress no...come fare?
RispondiEliminae poi ho provato a cambiare grandezza e colore dei caratteri...ma non ci riesco!!!
grazie cmq
metilparaben genio assoluto il miglior pubblicatore di fantacazzate dall'avvento del pollice opponibile. Chi osa negarlo non è altro che un plastico al soldo di Bruno Vespa.
@OpinionLiver A me su Wordpress gira. Ma forse su Wordpress.com c'è qualche filtro contro i javascript...
RispondiEliminaWordpress.com purtroppo non permette di usare javascript. Wordpress (il software) invece ovviamente non si fa problemi. :)
RispondiEliminagrazie....lo sospettavo...cmq il generatore è presente su blogspot al mio nickname....eheheh troppo divertente aggiornarlo
RispondiEliminaHo creato anche io il mio "Generatore di Frasi", grazie al prezioso codice di Metilparaben!
RispondiEliminaL'ho impostato sulle dichiarazioni del Vescovo Emerito di Grosseto Giacomo Babini riguardanti il concerto di Elton John a Trani...
http://www.losparlatore.it/2010/08/generatore-di-frasi-di-giacomo-babini.html
http://non-ho-le-tag.blogspot.com/2010/11/blog-post_6476.html
RispondiEliminaFatto e citato. Grazie infinite.
a quando un generatore di frasi di Monti? tipo: Con l'abolizione della schiavitù camice di cotone più care per tutti, con lo statuto dei lavoratori ...
RispondiEliminaCome si fa con Wordpress? Intendo Wordpress.org, non .com - esiste un plugin? Il codice così non funziona
RispondiEliminaGrazie: http://tafazzi.blogspot.it/2014/03/generatore-automatico-di-fonti-di.html
RispondiElimina