Corso rapido di programmazione - I

« Older   Newer »
 
  Share  
.
  1. sgreco
     
    .

    User deleted


    ciao a tutti.
    Per chi ne ha voglia, per chi vuole cimentarsi.
    Ma sopratutto per me che stasera c'ho un cazz da fa e la ragazza e' al lago!
    Quindi ho deciso di scrivere un mini corso di programmazione.
    Non per puro vanesio, sia chiaro, ma per condividere con voi alcune scelte stilistiche che ho sperimentato durante il lavoro che sto facendo con 'Return to Monkey Island'(prossimamente sui vostri schermi)..
    ovviamente, il tutto potra servire nei vostri script di AGS e quindi nella creazione del giocucolo.
    Perche potra sempre essere un linguaggio proprietario,ma la regola base e' :

    I LINGUAGGI di programmazione sono tutti uguali!!

    orbene, questa e' la prima lezione.. e parliamo di teoria e di qualcosa che mi ha aiutato veramente tanto nello scripting di RMI, un concetto fondamentale della programmazione ad oggetti :

    LA TEORIA DELL'INCAPSULAMENTO


    dicesi teoria dell'incapsulamento, quella tipologia di programmazione che prevede dei metodi e delle funzioni da richiamare ogni volta che ce ne sia la bisogna, onde evitare di dover riscrivere 100 volte le stesse righe di codice!
    Queste funzioni create ex novo da noi per i nostri scopi, funzionano meglio se vengono richiamate con il passaggio di parametri.

    tutto chiaro no ? bene alla prossima lezione!..
    .
    .
    .
    scherzo.. so che e' difficile all'inizio, ma gli esempi pratici valgon piu di mille parole.

    Esempio 1

    Voglio far voltare il personaggio su, giu a destra e a sinistra in una sola riga!
    Ad esempio all'interno dei dialoghi, capita che il persoaggio non sia sempre rivolto verso l'interlocutore, ma che si volti ogni tanto.

    assumiamo che io debba scrivere ogni volta le seguenti righe di codice per falro girare a sinistra(inventate per farvi un esempio chiaro):

    PERSONAGGIO.blocca_animazione;
    PERSONAGGIO.x -3;
    PERSONAGGIO.y +3
    PERSONAGGIO.sblocca_animazione;

    voi direte "ma perche tanto sbattimento? sono quattro righe di codice"
    ok, va bene. ma se vi dicessi che per falro girare a destra devo scrivere:

    PERSONAGGIO.blocca_animazione;
    PERSONAGGIO.x +3;
    PERSONAGGIO.y -3
    PERSONAGGIO.sblocca_animazione;

    verso su :

    PERSONAGGIO.blocca_animazione;
    PERSONAGGIO.x +10;
    PERSONAGGIO.y -10
    PERSONAGGIO.sblocca_animazione;

    verso giu :

    PERSONAGGIO.blocca_animazione;
    PERSONAGGIO.x -10;
    PERSONAGGIO.y +10
    PERSONAGGIO.sblocca_animazione;

    capirete che in un dialogo e insieme ad altre mille righe di codice diventa caotica la situazione. Ecco un sistema veloce, rapido e pulito per risolverla

    Anzitutto creare una nuova funzione vuote con dei parametri in ingresso :

    I.
    funzione voltati (string where)
    (
    )

    dove "where" e' un parametro in ingresso che decidera' cosa utilizzare all'interno della funzione. Oh, e' di tipo stringa.

    Ok, adesso riempiamo la funzione 'voltati' con quello che ci serve

    funzione voltati (string where)
    (
    se where = "sinistra"

    PERSONAGGIO.blocca_animazione;
    PERSONAGGIO.x -3;
    PERSONAGGIO.y +3;
    PERSONAGGIO.sblocca_animazione;

    se where = "destra"

    PERSONAGGIO.blocca_animazione;
    PERSONAGGIO.x +3;
    PERSONAGGIO.y -3;
    PERSONAGGIO.sblocca_animazione;

    ..eccetera eccetera
    )

    ora , capirete la comodita' di scrivere in una sola riga

    PERSONAGGIO.say ("ciao!");
    voltati("sinistra")
    PERSONAGGIO.say ("oh, e ciao anche a te!");

    anziche tutto quel papiello di prima!
    Questo mi ha salvato la vita molte volte e permette comunque di avore un codice facile, efficiente e pulito.
    E sopratutto, meraviglia delle meraviglie, di facile manutenzione!
    Ehsi! perche' metti caso vogliate aggiungere il voltarsi in diagonale, e' necessiario che modifichiate solamente un singolo script! ovvero il nostro 'voltati'
    Capirete quindi l'efficienza che puo dare questo strumento!

    Bene,
    per questa sera e' tutto..
    fatemi sapere se il concetto vi e' chiaro e se gradite questo tipo di iniziativa ;)

    stay tuned


     
    .
0 replies since 18/8/2009, 21:50   117 views
  Share  
.