Imparare C#Principianti

Programmare da Zero

 

Quando  installiamo Unity, insieme ad esso ci verrà installato anche un altro programma integrato con l’engine, chiamato MonoDevelop (nelle vecchie versioni) o Visual Studio Community (nelle versioni più recenti).

Dunque dalla versione 2018.1 di Unity non troveremo più MonoDevelop ma il più professionale Visual Studio.

Visual Studio Community è la versione free di Visual Studio programma di produzione Microsoft, dunque differente da quella di Unity.  Unity non permette la scrittura di codice all’interno di esso, per questo si affida ad un editor di scripts come appunto Visual Studio.  Quando cliccheremo due volte su uno script dentro Unity, esso si aprirà su Visual Studio.

UNITY è un editor che permette la creazione, il posizionamento, l’assegnazione della parte grafica, ecc… degli oggetti del nostro gioco.
VIsual Studio è l’editor che permette la programmazione, ovvero la scrittura di codice che farà muovere gli oggetti del nostro gioco.

Per semplicità definiremo Visual Studio come un editor di scripts. Esso si presenta con un normale editor di testo, ma con qualche caratteristica in più. Tenete conto che è possibile scrivere scripts anche con il semplice Notepad di Windows o qualunque altro editor di testo. L’unica differenza sta negli aiuti che il Visual Studio dà allo sviluppatore, con consigli durante la scrittura, la rilevazione di errori, il controllo di sintassi, l’uso dei colori per identificare le parole chiave, ecc.

Visual Studio è dunque l’editor di scripts  allegato con Unity con cui scriveremo il codice del nostro gioco.

 

Prentesi informativa: cosa vuol dire “programmare”?

Come dice la parola stessa, programmare significa preparare qualche cosa per il futuro, nel nostro caso si può dire che tenteremo di “dare istruzioni al computer che poi dovrà comportarsi così come gli abbiamo detto di fare”. 

Ricordiamoci però che il computer è un oggetto inanimato .
Ciò lo rende molto differente da che se fosse per esempio una una persona, a cui si potrebbe semplicemente indicare:
“se piove prendi l’ombrello”. O dal nostro cane a cui si può insegnare un determinato gesto o parola che poi lui interpreterà come “vai a cuccia” e gli farà compiere l’azione di andare a cuccia.

Il computer è un oggetto, come una penna, un tavolo, un motorino ecc.. Non è affatto una macchina intelligente, non esistono macchine intelligenti. Esistono solo macchine molto veloci a fare operazioni, peculiarità che permette di simulare un certo tipo di intelligenza grazie alla possibilità di eseguire miliardi di operazioni in meno di un secondo così che possa trovare la risposta più consona ad una certa richiesta esaminando miliardi di possibili risposte in un millisecondo.

Il computer è un insieme di pezzi di plastica, rame e silicio. Si tratta di una macchina, come il tuo motorino, a cui se vuoi “comandare” di andare avanti, devi usare l’acceleratore.
Il tuo motorino ha il suo modo di interagire con te e comprendere i tuoi comandi, come ogni altra macchina.
Dunque, per comandare al computer che quando si preme un tasto dovrà fare questa o quella cosa avrai bisogno di un linguaggio che lui possa comprendere.

Il problema è che l’unico linguaggio che comprende il computer è proprio quello che non capiresti tu. E’ un linguaggio fatto di 1 e di 0 molto complicato e che risulterebbe troppo dispendioso in tempo se tentassimo di scriverlo a mano.
Essendo il computer una macchina, non può far altro che recepire l’accesso o lo spento, appunto: 1 e 0. Il linguaggio binario.

Allora, visto che il computer ha la peculiarità di essere velocissimo, anche se saranno necessari tante operazioni, potremmo fargli tradurre ciò che scriviamo nella nostra lingua, nel linguaggio che possa capire.

Questa procedura è detta compilazione ed è quello che fa automaticamente Unity quando gli diremo di creare la Build del nostro gioco.
Build significa letteralmente “costruisci” o “costruzione”.


Ma attenzione a non fare confusione.

Prima di creare una Build passerà molto tempo perché essa è  l’operazione che si esegue alla fine dello sviluppo o quando si vuol fare qualche test creando un’eseguibile da poter testare su altri computer o da passare ad altre persone.
Una build è la versione finale del nostro gioco, l’insieme di cartelle e files, compreso di file .exe da eseguire per avviare il gioco.

Build” è l’operazione finale che ci permette la creazione del gioco che sarà eseguibile dall’utente.

Durante lo sviluppo del nostro gioco potremmo testarlo in qualunque momento senza dover creare necessariamente una build ad ogni test, direttamente nell’editor di Unity, semplicemente premendo il tasto PLAY presente al centro della barra superiore di Unity.

Scriveremo in linguaggio C# su Visual Studio e poi andremo a testare il nostro lavoro premendo il tasto Play su Unity.

Il testo che scriveremo su Visual Studio è comunemente chiamato codice e il file del nostro progetto su cui lavoreremo sarà chiamato sorgente o più semplicemente script.
Uno script è fondamentalmente un file con estensione .cs (che sta per C Sharp) che si potrà assegnare ad un gameObject (oggetto del gioco) per fargli compiere le azioni che noi vogliamo che faccia.
Il file eseguibile che “nascerà” dalla compilazione sarà il programma compilato, il nostro gioco, pronto per essere eseguito da chiunque sul proprio PC/console/cellulare/Tablet ecc…
Basterà dunque eseguire l’operazione di build su Unity per trasformare il nostro lavoro nella versione eseguibile e giocabile dall’utente. Questo avverrà solo al termine del nostro lavoro, una volta che avremo completato lo sviluppo del gioco o per fare dei test saltuari durante lo sviluppo.

Per compilazione si intende dunque quel processo tramite il quale un programma, scritto in un linguaggio di programmazione, viene tradotto in istruzioni eseguibili dal processore.

Dunque, se noi scrivessimo questa frase su uno script: “Se viene premuto il tasto freccia destra, fai muovere il modello verso destra” e lo assegnassimo ad un gameObject, dovrebbe funzionare…
Peccato però che Unity non comprenda l’italiano e che (per fortuna) recepisca solo una grammatica meno ricca di una qualsiasi lingua parlata. Tutti i linguaggi di programmazione usano come base la lingua inglese e dunque tutte le istruzioni dovranno essere scritte in inglese. Non preoccupatevi se non parlate inglese, se fosse italiano o ostrogoto, non cambierebbe nulla, non risulterebbe ne più facile ne più difficile.

Ciò che dovremmo scrivere in inglese sarebbe: “Se tasto destro premuto, coordinata X dell’oggetto aumenta di tot” .
Già sarebbe meglio, ma non si muoverà nulla e ancora una volta il nostro compilatore non saprebbe come tradurre quello che abbiamo scritto nel linguaggio comprensibile alla macchina e ci rimanderà un errore. Come detto bisogna usare una sintassi adeguata fatta di parentesi e parole chiave.

La sintassi corretta sarebbe SE(tasto.destra=premuto){modello.x=modello.x+tot;}. Ovvero, se viene premuto il tasto destro del mouse, aumenta la coordinata x del modello, così da farlo muovere.
Quasi ci siamo, ma non è ancora la sintassi corretta.
Ogni volta che vogliamo dire al computer di fare una cosa solo quando si verifica una determinata condizione (nel nostro caso il tasto destro è premuto), incontreremo una parolina che è sicuramente l’istruzione più importante di tutte, qualunque linguaggio si usi: SE. Appunto, la condizione. A condizione che il tasto destro sia premuto, allora fai questo o quello.. In inglese: IF.

Come avrete notato ci sono dei “segni uguale” delle parentesi tonde, delle parentesi graffe e un punto e virgole che non sappiamo bene cosa ci stiano a fare. Quei simboli sono necessari per una sintassi corretta, come se stessimo scrivendo una frase in italiano.
Questa è la sintassi del  linguaggio C#(si pronuncia C Sharp) che il Unity e Visual Studio comprenderanno e che riusciranno finalmente a compilare, trasformando le nostre istruzioni dal linguaggio C# al linguaggio macchina che creeranno il nostro programma/gioco.
Se su un tema di italiano scrivessimo la frase “forse :domani!andrò]al(mare…” la nostra professoressa di darebbe un bel 2 in grammatica(e forse ci farebbe vedere da uno specialista), perché ciò che abbiamo scritto in italiano non è corretto, anche se il senso si capisce, ci sono degli errori grammaticali, dunque è sbagliato. Stessa cosa quando scriviamo in un linguaggio di programmazione, la sintassi deve essere quella corretta, non ce la possiamo inventare altrimenti ci verrà evidenziato un errore e la compilazione si bloccherà.

if ( condizione ) { fai questo; }

Eccoci qua, questa è finalmente la grammatica corretta della lingua che stiamo parlando, il C#.

  1. Prima di tutto l’istruzione IF che verifica la condizione, cioè se quello che abbiamo scritto all’interno delle parentesi tonde sia vero o falso.
  2. Appena chiusa la parentesi tonda della condizione troviamo una parentesi graffa che si apre. All’interno delle parentesi graffe ci va il codice che vogliamo che venga eseguito quando la condizione risulterà vera.
  3. L’operazione termina con un punto e virgola che sta sempre a determinare la fine dell’operazione che vogliamo far fare al computer.

    Come avrete capito la simbologia è molto importante, sarà necessario utilizzare simboli come l’uguale, il minore, il maggiore ecc…

Alcuni esempi per prendere confidenza…

Per esempio, se volessimo eseguire un’operazione solo quando il punteggio di un giocatore sarà pari a 1000, scriveremmo:

if(punteggio == 1000){ ...fai questo... ;} 

se invece volessimo far fare la stessa cosa quando il punteggio sarà uguale o superiore a 1000, scriveremmo una cosa del genere:

if(punteggio >= 1000){ ...fai questo... ;} 

dove >= sta a significare “uguale o maggiore “.

Ma perché per verificare un’uguaglianza si usa == e non semplicemente =? Cioè, perché usare due simboli uguale uno dopo l’altro? Lo vedremo nella sessione 1.4 in cui spiego più approfonditamente la prima istruzione di controllo, if  ed else. Ricordate però di non saltare le sessioni precedenti!

Conclusioni finali

Siete un po’ confusi? E’ normale. Continuate ad andare avanti e non scoraggiatevi.
Non c’è guida migliore dell’esperienza. Facendo le prime prove inizierete ad entrare nella mentalità giusta e vedrete che avrete tutto più chiaro.
Vi ricordo che, se non avete capito qualche cosa, potete tranquillamente scrivere un commento sotto ad ogni lezione.

8 pensieri su “Programmare da Zero

  1. Cioè, ma davvero? Tu sei quello della guida su XNA da Zero?
    Grazie di esistere. Un patrimonio per l’italianità. 😉

  2. salve ho appena installato unity ma al posto di MonoDevelop mi ha installato VisualStudio 2017, mi chiedevo se può essere un problema o non sia meglio disinstallare VisualStudio e installare Monodevelop a parte ?

    1. Ciao, scusa del ritardo con cui rispondo, il filtro anti-spam mi ha creato diversi problemi con i messaggi.
      MonoDev è diventato obsoleto e non viene più inserito nel bundle di Unity dalla versione 2018.1. Visual Studio è di gran lunga migliore.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *