ForumFree

Fra la tastiera e la sedia., Idea per un tutorial.

« Older   Newer »
  Share  
ThePuffolottiAccident
view post Posted on 15/11/2009, 02:54




Premetto che c´é ben poco da aggiungere allo splendido tutorial di Squall. é una delle mie guide di riferimento, in effetti.

Sin dall´inizio mi sono ostinato a realizzare i miei personaggi partendo da 0, per creare il MIO universo.

Nell´esperienza che ne ho ricavato mi sono reso conto di una cosa: trovare un trigger o un controllo puó non essere cosí complicato come si é portati a pensare.

Spesso, nel creare un proprio mondo esoterico dove le palle di fuoco sottostanno alle proprie leggi fisiche, il problema é a monte, del tipo: "non so che trigger-funzione analitica impiegare."

Il problema é simile a quello del disegno per molti destrorsi puri. Sanno descrivere con estrema precisione un qualsiasi oggetto, ma con carta e penna hanno poche speranze di rappresentarlo.

Nel mondo della programmazione la richiesta di una stringa o di un frammento di codice con funzioni specifiche, spesso nasconde idee poco chiare su cosa esattamente ci si aspetta che l´avatar faccia con quel codice.

Per risultato, pare che la programmazione dei files CNS e CMD puó essere imparata solo da certune persone, indistinguibili dalle altre finché non ci sbattono il naso.

é ben vero che la programmazione é soprattutto ragionamento, ma sappiamo tutti... ... ... come si "ragiona" ?

Ora, nella programmazione di personaggi per mugen ci troviamo davanti a due problemi completamente differenti a seconda dei due casi.

A) stiamo cercando di riprodurre un personaggio esistente o di produrre un hype* di un personaggio esistente.
B) stiamo cercando di creare un personaggio del tutto nuovo.

Nel primo caso il problema é fargli fare quello che fa l´originale, e me la sbrigo in due minuti:

1) Stabilire l´ordine in cui avvengono gli eventi.
2) quantificarli
3) programmarli.

E lí si chiude con un "e ora fila a leggerti il manuale di Squall"

Scherzi a parte, io intendo parlare del secondo caso.

Quello in cui si voglia popolare un universo di fatine e folletti (o marcantoni in avvenieristiche tute spaziali) e si debba stabilire come si usa il mana in quell´universo.

Un esempio potrei trarlo da "One must fall 2097", gioco di robottoni. Quanto a giocabilitá il migliore mai fatto, anche se nessun personaggio arrivava ad avere 20 mosse d´attacco... o forse proprio per questo.

Parlando di robot giganti, si potrebbe chiamare l´energia... "Nafta." Con la nafta il robottone puó fare un numero limitato di mosse speciali, finita la nafta, solo calci e pugni.

Oppure potrebbe chiamarlo "Mana" (la controparte astrale dell´energia fotonica) e far tirare sfere di fuoco terrificanti.

Oppure niente sfere di fuoco.

I soli limiti sono quelli della fantasia, seeeeee...

Si ha le idee ben chiare in testa.

In realtá sapere ogni singola parola contemplata dalla sintassi di mugen, da solo aiuta poco.

fermo restando che per fare qualcosa del genere occorre comunque conoscere bene "l´architettura del personaggio"...

Bisogna risolvere quelli che nel gergo dei programmatori vengono definiti "problemi hardware fra la sedia e la tastiera"

Sarebbe impensabile mettere in un manuale ogni potere mai espresso in mugen, alcuni non servire neppure saperli.

In linea di massima molto si puó ricavare "ladrando".
C´é un personaggio che fa qualcosa di simile? scopri come fa quel personaggio.

Prendiamo un esercizio semplice: il pestotto di Chun li. Come mai invece di tornare per terra Chun li vola di nuovo in aria?


Abbiamo diversi modi di cercarlo.


Via CMD
Sappiamo come si esegue, in aria tenere premuto verso il basso e premere il tasto B.

Possiamo cercare in tutti i comandi che contengono la stringa "statetype = A"

Qualcosa che ci dice che é da tenere premuto in basso per ottenere la mossa.

Via AIR-CNS
Sappiamo quali disegni compongono l´animazione...
Troviamo nel Cns l´azione che convoca quell´animazione.

Via Debug
Eseguiamo noi stessi la mossa, il computer ci dirá di quale azione si tratta.

Avremo trovato una cosa che si chiama

[State (adesso non mi ricordo il numero), 2]
type = ChangeState
trigger1 = MoveContact
value = (tiro a caso: 50)

Cosa é il MoveContact?

Da lí si puó cominciare a ladrare.

é stato detto migliaia di volte di studiare i vari personaggi, a partire da KFM, lo so. é stato detto ancora piú volte come sono strutturati i vari elementi del personaggio, sia uno per uno, sia complessivamente.

Penso che molti arrivino alla frustrazione proprio quando vedono quanto é semplice modificare le costanti per far saltare un personaggio come un grillo.

Io vorrei provare un approcio didattico opposto: invece di spiegare cosa succederá sul monitor (e nelle casse acustiche) attraverso la programmazione, vorrei provare a spiegare la programmazione attraverso quello che succede sul monitor.

Naturalmente intendo provare a farlo conferendo astrattezza e generalitá alla cosa.
Suggerimenti?

*versione con una piú ampia gamma di mosse.
 
Top
Jim`
view post Posted on 15/11/2009, 03:06




*CENSURED*

Chiedo eventualmente ad un admin di bannare questo "utente poco rispettoso" lol

by Squall

Edited by Squall LionHeart™ - 15/11/2009, 13:00
 
Top
view post Posted on 15/11/2009, 03:07
Avatar

Senior Member

Group:
Member
Posts:
83,225

Status:


rotfl
 
Web  Top
ThePuffolottiAccident
view post Posted on 15/11/2009, 12:52




CITAZIONE (Jim` @ 15/11/2009, 03:06)
Offesa Censurata

Ho la vaga sensazione che non ci conosciamo.
Se passo per milano ti offro un caffé.

Edited by Squall LionHeart™ - 15/11/2009, 13:01
 
Top
Squall LionHeart™
view post Posted on 15/11/2009, 13:10




Innanzitutto ti ringrazio per lo "splendida" e "punto di riferimento" riguardanti la mia guida :P

L'idea mi sembra ottima, Perchè anch'io l'ho data per scontata. In effetti, dal mio punto di vista, è logico pensare che un programmatore (o neo-programmatore) sappia già come ragionare per raggiungere il proprio obiettivo (ovviamente documentazione alla mano, se non sa a memoria tutti i vari controller XD).

Invece mi rendo conto che in questo modo si racchiude la programmazione mugen ad una stretta cerchia di persone, ovvero quelle che hanno (o hanno sviluppato) una facoltà di ragionamento logico-matematico almeno di livello base.

Magari un tuo tutorial scritto in questo modo potrebbe portare persone che, o per conformazione o per diversi approcci, non hanno la più pallida idea di come ragionare.
Può sembrare strano, ma ovviamente non mi sto riferendo a "idioti".
Molti ragazzi non saprebbero da dove partire, pur essendo in pieno possesso delle loro facoltà mentali. Solo, hanno bisogno di una spinta nella direzione giusta, non avendo alcuna esperienza passata con l'argomento.

Credo che un tutorial del genere sia tranquillamente affiancabile al mio (e all'eventuale tutorial2 che sto scrivendo sulla programmazione avanzata). lo mettiamo insieme al tutorial di Nobun sugli stages, e ad altri eventuali tutorial fatti bene sul mugen, e avremo una documentazione in italiano che abbraccia tutti gli aspetti.

È da fare...cosa aspetti? XDXDXD

Saluti

Squall
 
Top
ThePuffolottiAccident
view post Posted on 15/11/2009, 14:22




Subito, subito...

Ah, mi spieghi un attimino come posso mettere un "jaguar kick" nel rimbalzo da un "stomp" comandato dallo stato 50 ?

hey, metti via quello spadone a 8 mani, stavo facendo una battutina.

Ma questa battutina sará uno splendido esempio di cosa pare che entrambi intendiamo dire.

Cos´é un "jaguar kick"? cos´é uno "stomp comandato dallo stato 50" ?
E altre 1001 domande, fra cui la piú importante é:

Come si puó lavorare con uno che si inventa le parole?

La risposta é semplice: scoprendo come si inventa le parole.

Il mugen é "uno che si inventa le parole"

Parole come "trigger", "statedef" "VelAdd"

La prima domanda é: ma devo impararmele tutte?

La risposta é: quando hai imparato Add e Set hai imparato giá molto.

Passando all´argomento di cui si parla, sto abbozzando il programma.

La prima parte si compone di questi punti.
____________

Obbiettivi del manuale stesso.

(questa me la sbrigo qua e subito)

Molto di quello che é la matematica pura consiste nel rendere accessibili a chi non ne é dotato naturalmente delle facoltá intrinseche che in talune persone si direbbero facoltá ancestrali di ragionamento.
Quello che é contenuto nella prima parte del manuale sono nozioni che molto spesso vengono usate nei piú semplici processi della vita quotidiana, spesso ignorando che qualcuno ha dato loro un nome.
Altre delle nozioni che si troveranno in questo manuale sono date per quesite e assimilate in campi estranei al mugen, ma non vengono collegate a quello che é la programmazione in modo armonico.

Se per tutti é ovvio che 3+4=7, non per tutti é altrettanto ovvio che se un aereo viaggia a 300 nodi e spara un missile che va a 400 nodi, il missile avrá una velocitá di 700 nodi.
Ció non é assolutamente indice di stupiditá, ma va accettato come la sostanziale differenza fra chi si destreggia nella programmazione e chi vi trova delle difficoltá di base DOPO aver imparato a memoria tutte le parole.

Questo manuale é un tentativo di fornire tali strumenti a chiunque comprenda la lingua in cui é scritto o eventualmente tradotto e/o ricompilato.
____________

Algebra applicata.

-Richiami di aritmetica elementare

-Richiami di aritmetica discreta

-Richiami di Algebra Booleana: i connettori logici.

-Richiami di algebra analitica: le funzioni di primo grado. (e uno sguardo velocissimo a parabole e iperboli)

-Richiami di algebra degli insiemi.

-Richiami di cinematica

-Classi di impossibilitá

-Varie ed eventuali

____________

Comprendere il motore logico

-Annulla, riprova, tralascia. Quali sono le differenze? (poche righe che spiegano 3/4 dell´architettura di CMD e CNS, della guida di un elicottero e infinite altre cose senza neanche nominarle)

-Crea, elimina, modifica, trova. (finito di leggere questa paginetta l´AIR non avrá piú segreti neanche per un bacillo del botulino)

-Algoritmi chiusi, scriverli e LEGGERLI

-Varie ed eventuali

_____________

Metaprogrammazione teorica.

-Il metalinguaggio

-La programmazione su pannello di sughero

-La programmazione modulare.

-La numerazione canonica

-Varie ed eventuali
_____________
Metaprogrammazione applicata

-Richiami all´architettura di MUGEN (Il minimo indispensabile per non morire)
-Concetto di chiave univoca
-Concetto di hyper collegamento.
-Concetto di vincoli ramificati.
-Collegamento di tabelle
-Varie ed eventuali.
________________

Finalmente si monta sul ring.

-Tipologie di stati.

-transizioni, inversioni, frenate.

-Concetto di concatenazione.

___________

Nozioni pratiche.

-La mappatura.

-La costruzione.

-varie ed eventuali
____________

Penso che chi trova difficoltá a comprendere il tuo manuale ne ricaverá notevole giovamento, per lo meno per superare quel senso di abbandono che né io né tu riusciamo pienamente a comprendere, anche se ne constatiamo l´esistenza.

Potremo quasi definirlo, se ottempero agli obbiettivi... "un manuale per la lettura degli altri manuali."

Per persuadere i cucciolotti della necessitá di studiare i concetti di base allego un abbozzo di esempio di quello che squall chiama "ragionamento" (se ho ben capito l´accezione che da alla parola).

Parliamo della parola "tralascia"

Vorremmo fare in modo che se qualcuno decide di fare il nostro personaggio piú piccolo o piú grande per la propria collezione le mosse continuino a funzionare correttamente.

Ad esempio non vogliamo che il personaggio tenti di eseguire un colpo ravvicinato quando magari si trova persino fuori dalla distanza di calcio dall´avversario.

Se scriviamo nel codice apposito

Trigger1 = P2BodyDist X < 25

Che in metalinguaggio significa:

QUOTE
Quando l´avversario si trova sull´asse delle ordinate (spiegato in algebra analitica) ad una distanza inferiore a 25 (pari ad una certa misura in cm, diciamo "80" ) Allora...

e qualcuno dimezza le dimensioni del personaggio, con questo codice, questo proverá a sferrare le ginocchiate da una distanza di 160 cm, colpendo l´aria e diventando frustrante da guidare.

Forse non vogliamo permettere la modifica del personaggio da parte dell´utente.

Nel caso invece che la volessimo addirittura incoraggiare, vogliamo che quel "25" si adatti alla scala del personaggio.

Per prima cosa lo scriviamo in metalinguaggio.

QUOTE
Quando l´avversario si trova sull´asse delle ordinate (spiegato in algebra analitica) ad una distanza inferiore a (Circa metá della sua statura in guardia, che rappresenta 160cm) Allora...

Verrá spiegato altrove come parlare di statura, quello che abbiamo in mano adesso é una cosa ancora piú importante di una risposta: una domanda.

Dimostreró che é piú importante la domanda che non la risposta, e inizieró dando la risposta:

Trigger1 = P2BodyDist X < 25*Const(Size.XScale)

Dove si trova nei manuali l´espressione a destra del "25" ?

Non é questo l´importante, ora. Ora l´importante é che. se anche non foste capaci di trovarla da soli, avete comunque una domanda chiara, intelligente e "univoca" (parola spiegata in "teoria" degli insiemi) da porre a qualche programmatore esperto.

Se questo sa cosa volete con precisione gli sará molto piú agevole rispondervi.

Confido insomma che le nozioni acquisite dallo studio del manuale che mi accingo a compilare forniscano non tanto le risposte importanti quanto le domande importanti.

Edited by ThePuffolottiAccident - 15/11/2009, 14:45
 
Top
view post Posted on 15/11/2009, 14:33
Avatar

Finalmente stai piangendo Vash the Stampede. Il mio cuore è colmo di gioia

Group:
Administrator
Posts:
7,648
Location:
Lost July

Status:


Chi è la testa di cazzo che ha scritto qualcosa di offensivo?
 
Top
ThePuffolottiAccident
view post Posted on 15/11/2009, 14:49




"Offensivo" é una parola grossa, comunque si trattava di due irrilevanti imbrattamuri che sfruttano gli automatismi del WWW perché é l´unico modo in cui possono entrare nel nostro universo.

Oops, mi sa che ho appena scritto io stesso qualcosa di offensivo a due poveri psicolabili che in fondo non mi han fatto niente di male... chiedo venia.

A scanso di fraintendimenti: l´ordine va mantenuto, ma al di lá del fatto che personalmente non regalerei pubblicitá a chi non la paga neanche in arte o metodi... quando ho letto l´intervento in questione ho pensato qualcosa del tipo: Se questo é il meglio che questo pseudospammer riesce ad inventarsi non perdo neanche tempo a vedere di che colore é lo sfondo del suo sito.

Ma dovrei ringraziarlo, il personaggio di Vaironi per "L´eclisse dei sentimenti" é esattamente questo tipo di persona, quindi la piazzata del critino la troverai negli stati di introduzione di tale personaggio cosí come la ha scritta.

 
Top
Squall LionHeart™
view post Posted on 15/11/2009, 15:41




Perfetto :D

Specialmente la parte riguardante il metalinguaggio (cosa da me sempre data per scontata, che sto però studiando adesso all'università XD). Farà comprendere ai molti il reale significato dei comandi e delle espressioni :D

ps. Hai avuto una svista: X è sull'asse delle ascisse, non delle ordinate :P

Saluti

Squall
 
Top
ThePuffolottiAccident
view post Posted on 15/11/2009, 15:48




QUOTE (Squall LionHeart™ @ 15/11/2009, 15:41)
Perfetto :D

[...]

QUOTE (Squall LionHeart™ @ 15/11/2009, 15:41)
ps. Hai avuto una svista: X è sull'asse delle ascisse, non delle ordinate :P

[...]

Tu pure :P

Vedró di stare attento, e se sbaglieró mi corigerete.

Per i tuoi studi:
l´errore che ho commesso ed hai giustamente corretto é dovuto al fatto che stavo parlando di una funzione ribaltata: X = f(const[X1] )

In parole piú semplici: In analisi, l´asse delle ascisse riguarda la variabile della funzione, l´asse delle ordinate é quello che restituisce la funzione sulla variabile. Ho parlato di una funzione che restituisce una distanza orizzontale sul monitor, "funzionando" su un fattore che puó essere verticale, dimenticandomi completamente che le righe del monitor sono comunque considerate un asse cartesiano.


OffTopic.

Ah, a proposito, mi é venuto in mente un modo di programmare l´"impatto d´incontro perfetto."

Dunque, si fa con 3 azioni

#1 azione.
Animazione fino all´impatto d´incontro imperfetto (il primo frame con scatole di collisione rosse, che persisterá 1 o 2 ticks)

#2 o #3 azione.
Animazione dall´impatto perfetto al ritorno in guardia.

Dunque, l´animazione #1 avrá un blocco "altrimenti" di questo tipo:

Se connetti vai all´azione 2 (impatto d´incontro imperfetto) altrimenti...

Se arrivi fino a qua vai all´azione #3 (impatto d´incontro perfetto)


hitdef in #2 niente, anzi, ti sei pure fatto male alle nocche, critino.

hitdef in #3 Un mare di sangue con terremoto al #13 della scala richter in omaggio.

Risultato: un pugno che se viene tirato ad un avversario con velocitá positiva al momento giusto lo macella... senza toccare nient´altro.

In realtá ho visto che teoricamente si poteva richiamare tutte e 3 le azioni sullo stesso paragrafo dell´AIR, specificando l´elemento di partenza dell´animazione all´interno dell´azione.

Edited by ThePuffolottiAccident - 15/11/2009, 16:18
 
Top
Squall LionHeart™
view post Posted on 15/11/2009, 19:57




CITAZIONE (ThePuffolottiAccident @ 15/11/2009, 15:48)
CITAZIONE (Squall LionHeart™ @ 15/11/2009, 15:41)
Perfetto :D

[...]

CITAZIONE (Squall LionHeart™ @ 15/11/2009, 15:41)
ps. Hai avuto una svista: X è sull'asse delle ascisse, non delle ordinate :P

[...]

Tu pure :P

Vedró di stare attento, e se sbaglieró mi corigerete.

Per i tuoi studi:
l´errore che ho commesso ed hai giustamente corretto é dovuto al fatto che stavo parlando di una funzione ribaltata: X = f(const[X1] )

In parole piú semplici: In analisi, l´asse delle ascisse riguarda la variabile della funzione, l´asse delle ordinate é quello che restituisce la funzione sulla variabile. Ho parlato di una funzione che restituisce una distanza orizzontale sul monitor, "funzionando" su un fattore che puó essere verticale, dimenticandomi completamente che le righe del monitor sono comunque considerate un asse cartesiano.

Aaah XD capito XD io l'avevo considerata in una maniera più immediata (dato che comunque il controller agisce sull'asse X "del monitor", così impostato) non avevo considerato la funzione ribaltata :P

ps. Zampillano fuori idee una dopo l'altra, eh? XD figo lo "scontro perfetto" :P

Saluti

Squall
 
Top
ThePuffolottiAccident
view post Posted on 15/11/2009, 21:52




Grassie, grassie.

L´eleganza della cosa é che non c´entra nulla con la programmazione CNS.

E in fondo é da ringraziare il cretino venuto qua a pisciar serrande.

Il "pure tu" era riferito al:

Perfetto! ... ho notato una svista.

se hai notato una svista é "!=perfetto!"
 
Top
view post Posted on 16/11/2009, 01:23
Avatar


Group:
Fondatore
Posts:
1,693
Location:
Sacra Famiglia Catena - 6^a Casa (casa di Don Virgo) - cerchia degli Spadaccini.

Status:


Eh verso la fine (con la funzione ribaltata) mi sono perso :P
Comunque che dire? Mi sembra un lavoro immane, puffolotti, ma molto valido. Hai il mio pieno appoggio. Simbolicamente ti ho promosso a scrittore (che non comporta alcun obbligo) così che tu possa scrivere i tutorial anche nelle sezioni chiuse alla scrittura per i membri normali (questo è un forum di consultazione). Se pensi di aver bisogno di inserire sezioni ulteriori qui chiedi pure ;)
In ogni caso Mugenation rimane il punto di riferimento. Questo forum (temporaneamente abbandonato) aveva come scopo quello di offrire i tutorial Mugenation con un ordine di consultazione molto più ordinato e quindi più chiaro.
 
Top
ThePuffolottiAccident
view post Posted on 16/11/2009, 02:24




Sulla funzione ribaltata:

Normalmente una funzione esplicita é di tipo: Y= f(X)

"Y" prende il nome di incognita, la funzione é composta da operazioni fra costanti, X é una variabile.

La mia funzione era bidimensionale:

Entro quale distanza (dall´avversario) la ginocchiata prende il posto del calcio, sapendo quanto é la scala Y del personaggio?

Quindi l´incognita é la distanza dall´avversario, la variabile* é la scala pubblica del personaggio.

Questo ha creato confusione, in quanto nel grafico della funzione, l´asse Y, rappresenta una distanza orizzontale, mentre sul monitor rappresenta la distanza dal suolo.

Riassumendo, ho scritto una funzione per calcolare una distanza sull´asse delle x.
Tale distanza é una ordinata all´interno della funzione, ma diventa un ascissa per l´interprete del file CNS.
Squall, come quei ninja che se vengono aggrediti nel sonno sventrano gli avversari senza neanche svegliarsi... ha riprodotto automaticamente l´elaborazione di MUGEN a mente.

L´errore, se cosí vogliamo chiamarlo, puó essere riprodotto in CMD chiamando 2 stati che si convocano a vicenda privando l´utente del controllo.

-----

La funzione puó essere impiegata anche per determinare la velocitá alla quale un personaggio viene spinto da un colpo.
Se ne dimezzo le dimensioni sulle costanti generali, il suo calcio spedirá l´avversario a metá della distanza precedente mantenendo inalterata la meccanica delle combo.

Senza tale accorgimento,

se raddoppio le dimensioni del personaggio senza raddoppiare la spinta cinetica del colpo Allora

Forse

un colpo che prima mandava l´avversario fuori portata lo manda ad una distanza ancora nella portata, in quanto relativamente dimezzata.
Un possibile effetto di questa modifica incompleta é la generazione di combo infinite che battezzo: "vengo lí a prenderti"
in cui é possibile colpire l´avversario, portarsi camminando in avanti alla distanza in cui si trovava al momento in cui si é sferrato il colpo prima che si riprenda e connettere nuovamente lo stesso esatto colpo.


Quanto al manuale, pezzo per pezzo é un ottimo modo per rilassarsi dai lavori inerenti la realizzazione di "l´eclissi dei sentimenti"

Ma scriverlo é necessario anche a me per normalizzare le relazioni meccaniche fra i personaggi.

Faró un po´di ordine mentale per vedere cosa riguarda una cosa e cosa l´altra.

Eventualmente sparo in altra sede altri trucchi estemporanei come l´impatto perfetto, il colpo di clemenza-grazia, l´intro condizionata dal fondale ecc. ecc.

Faccio il pizzaboy, per mestiere.
Guido un´automobile per 6-8 ore al giorno.
Problemi di compilazione CNS nei miei progetti correnti praticamente si risolvono da soli e vengo pagato. :P

*Il ché ci insegna che quello che é una costante pubblica in un sistema puó, in certe circostanze essere una variabile in un sistema piú grande :P
 
Top
ThePuffolottiAccident
view post Posted on 16/11/2009, 22:55




Un estratto :P


0.2.1 CNS????

Abbiamo giá un parolone difficile: CNS Cos´é questo CNS? Va con la senape o con la salsa di mirtilli?

Per il momento vi basti sapere che é uno strumento che esegue una serie di comandi.


0.2.2 ESERCIZIO SVOLTO.

Ora, vediamo di immergerci nel mondo della programmazione con un problema che va risolto senza neanche toccare il computer.

Immaginate di avere un fratello che svolge un qualche tipo di lavoro, vostro fratello ha due strane idiosincrasie:

1) Appena arriva a casa va al frigorifero e ne estrae una lattina di birra, che inizia a bere mentre si dirige al divano del salotto, immancabilmente.

2) non guida mai un veicolo se ha bevuto anche un solo sorso di bevande alcoliche. (e dove abitate non c´é alcuna alternativa)

Immaginate che voi possedete un cellulare, vostro fratello no.
Un giorno squilla il vostro cellulare, e vi avvisano che la fidanzata di vostro fratello si é rotta un piede. Non ci si muore, ma é una ragazza piuttosto capricciosa, e se vostro fratello non va all´ospedale la sera stessa sono guai.
Voi avete un impegno molto importante e decidete di lasciargli un biglietto spiegandogli la situazione.

La domanda é: dove glie lo lasciate?

Soluzione:

Se glie lo mettete sulla porta di casa, qualche evento fortuito potrebbe staccarlo da lí.

Se glie lo mettete sul divano, o in qualunque posto diverso dal frigo lo leggerá dopo aver bevuto, e non potrá recarsi all´ospedale.

quindi dovete lasciarglielo sul frigorifero, siete sicuri che ci andrá prima di aver bevuto e potrá prendere l´automobile piuttosto che una lattina di birra.


Quello che avreste fatto con il bigliettino si chiama "changestate" ed é il cuore della programmazione CNS.

M.U.G.E.N. si comporta come questo ipotetico fratello, Se nessuno gli dice cosa fare, eseguirá delle operazioni con una sequenza ordinata, finché non gli viene detto al momento giusto del processo di fare qualcos´altro.
Quando ha finito di fare il "qualcos´altro" bisogna dirgli di tornare alla sua normale routine.

Piú avanti parleró di "implicazioni ed esplicazioni", ma per completare l´esercizio, e sincerarsi che nostro fratello VADA all´ospedale, aggiungiamo un´esplicazione.

Potrebbe, questa sera, aver voglia di una birra calda.
In tal caso andrebbe a cercarla nello sgabuzzino TRALASCIANDO il frigorifero, e noi, disgraziatamente abbiamo un solo foglietto di carta.

Qui ci vuole un´esplicazione.

Potremmo togliere tutte le birre dallo sgabuzzino e metterle davanti al frigo, e il fogliettino sopra le birre davanti al frigo.

Avremo in tal modo ESPLICATO che nostro fratello DEVE passare per il frigorifero.

Le esplicazioni superflue sono ammissibili per il programmatore alle prime armi, ma l´ottica di chi vuole impadronirsi dell´arte é che le esplicazioni superflue son opera del maligno.
 
Top
14 replies since 15/11/2009, 02:54   243 views
  Share