Skip to main content
Luminetic Land è il mio puzzle game con 25 livelli gratis!

Cosa vuoi sviluppare?

appzYourLife è dedicato allo sviluppo di giochi e app per iOS. Raccoglie ciò che ho imparato durante lo sviluppo di Luminetic Land, quasi 10 anni di sviluppo software e tantissimo studio dell’ecosistema Apple. Il sito ti offre 3 percorsi gratuiti, scegli quello più adatto a te e ricorda che puoi usare i commenti sotto ogni articolo per chiedere aiuto (rispondo sempre nel giro di qualche ora).

 

abacus

Impara a programmare

Livello facile

Vuoi imparare le basi della programmazione? Questa guida ti accompagnerà passo passo nello studio con tanti esempi chiari.

code-pencil-ruler

Swift

Livello medio

Se hai già delle basi di programmazione e vuoi approfondire Swift (il nuovo linguaggio Apple per iOS, OS XwatchOS e tvOS) qui trovi tanti articoli dedicati a vari aspetti del linguaggio.

Game Design

Livello avanzato

Sai programmare e ora vorresti sviluppare un gioco? Qui trovi articoli che ti spiegano come trasformare la tua idea in un gioco da distribuire su App Store.

 

 

Vuoi trasformare la tua idea in un gioco o app per iPhone, iPad, Watch, TV o Mac?
Posso seguirti e aiutarti mentre realizzi il tuo progetto o consegnarti il prodotto sviluppato esattamente come vuoi.

Richiedi info

appzYourLife.com logo

Approfondisci

Heavy Box

Gestire JSON con un Model Value in Swift

512_boxSe stai sviluppando un app per iOS c’è una buona probabilità che tu stia ricevendo dei dati da un webservice remoto in formato JSON.

A volte il JSON viene passato direttamente al ViewController che lo utilizza per popolare l’interfaccia o per effettuare altre operazioni. Questo è sbagliato perché crea del codice più complesso o più insicuro.

Infatti siccome un JSON è tipicamente rappresentato con un Dictionary (o il corrispondente type se stai usando una libreria esterna), il compilatore non può garantire che un determinato campo del JSON:

  1. esista
  2. sia popolato
  3. contenga un valore del tipo corretto

Questo significa che devi ripetere manualmente questi controlli ogni volta che utilizzi un JSON (codice più complesso) e se non lo fai l’app corri il rischio di avere un crash nel momento in cui il JSON ricevuto non sia corretto (codice più insicuro). (altro…)

Approfondisci

Crossroad and Track Switches.

Il costrutto guard in Swift

512_radioactiveIl costrutto guard permette di verificare che una certa condizione sia verificata, in caso contrario il flusso di esecuzione viene terminato.

Si tratta di un concetto da non confondere con l’istruzione assert che provoca sempre un fatal error e la conseguente terminazione dell’esecuzione dell’intera app.

Al contrario guard permette di eseguire il codice che vogliamo nel caso in cui la condizione da verificare non sia soddisfatta. L’unica condizione è che venga terminato il flusso attuale. (altro…)

Approfondisci

3 ragioni per smettere di scrivere cicli FOR

website-settingsIl ciclo FOR è un costrutto disponibile in molti linguaggi di programmazione con il quale possiamo definire un’iterazione che permette di eseguire ripetutamente un determinato blocco di codice.

Si tratta di un costrutto più moderno del GOTO ma che inizia a mostrare i segni dell’età, infatti le sue origini risalgono al lontano 1958 quando fu introdotto dal linguaggio ALGOL 58.

Swift, come molti linguaggi di programmazione, fornisce allo sviluppatore diverse varianti del ciclo FOR, eccone una:

Il blocco all’interno del FOR precedente viene ripetuto tante volte quanto il numero di elementi contenuti in numbers. Per ogni iterazione viene estratto da numbers l’elemento i-esimo e usato per incrementare la variabile sum.

Probabilmente se sei uno sviluppatore conosci bene e utilizzi frequentemente il ciclo for per evitare codice ripetuto e per impostare la ripetizione di un blocco un numero di volte che non è conosciuto a tempo di compilazione. Forse però non conosci le problematiche legate a questo approccio alla programmazione. Vediamole insieme. (altro…)

Approfondisci

Abacus

#4 • Operatori di assegnazione e aritmetici

Negli esempi precedenti abbiamo visto come assegnare un valore a una variabile o una costante usando il simbolo =.

Quel simbolo è uno dei tanti operatori che abbiamo a disposizione per manipolare le informazioni all’interno di un programma.

Pensate a una calcolatrice, sono presenti vari tasti. Alcuni di questi sono delle cifre mentre altri sono dei simboli che manipolano i valori numerici.
(altro…)

Approfondisci

Mysterious box

#3 • Le costanti

safeSe avete afferrato il concetto di variabile della lezione precedente troverete questa lezione molto semplice.

Infatti una costante è semplicemente una variabile a cui possiamo/dobbiamo assegnare un valore una sola volta. Immaginatela come una scatola nella quale possiamo mettere un oggetto che poi non può più essere rimosso.

Una costante può essere letta tutte le volte che vogliamo, analogamente a una variabile. (altro…)

Approfondisci

Colored boxes

#2 • Variabili e Tipi di Dato

giftIn programmazione, una variabile è un contenitore di un qualche valore. Una scatola, come abbiamo visto nella lezione precedente, nella quale possiamo inserire un numero, una frase o altri tipi di dati.

Prima di essere utilizzata una variabile deve essere dichiarata (che equivalente al concetto di costruire una scatola).

Una volta che la variabile è stata dichiarata possiamo:

  1. valorizzarla (mettere qualcosa nella scatola)
  2. leggerla (guardare cosa c’è nella scatola)
  3. valorizzarla con un nuovo dato

Le variabili sono uno dei mattoni fondamentali con cui si scrive un programma, da ora in poi le incontrerete molto spesso. (altro…)

Approfondisci

Playground

#1 • Prepariamo il Playground per Swift

code-pencil-rulerIn questa guida ti insegnerò le basi della programmazione usando un linguaggio particolarmente adatto a questo scopo Swift. Oltre che facile e divertente, Swift è il linguaggio creato da Apple per scrivere app per iPhone, iPad, Apple Watch e Mac. Quindi alla fine della guida se vorrai potrai usare queste nozioni per scrivere una tua app.

Avrai bisogno di un Mac con OS X Yosemite installato. Senza questi strumenti puoi comunque seguire la guida ma purtroppo non potrai mettere in pratica i concetti quindi sarà più difficile imparare. In ogni caso Apple ha annunciato che Swift diventerà opensource quindi entro la fine dell’anno dovrebbe essere possibile eseguirlo su Linux. Troverai maggiori nel sito appena si avranno notizie. (altro…)

Approfondisci

iMac Keyboard

#0 • Perché imparare a programmare? Perché questa è l’era del software

0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, …

stopwatchLa tecnologia elettronica evolve da anni con un ritmo esponenziale, ovvero raddoppia le proprie potenzialità ad ogni ciclo. Questo fenomeno è noto come Legge di Moore e venne enunciata nel 1965 dal cofondatore di Intel Gordon E. Moore. L’osservazione di Moore era che il numero delle componenti per circuito integrato raddoppiava ogni anno, inoltre prevedeva che il fenomeno sarebbe continuato per almeno un’altra decade.

La previsione di Moore si rivelò esatta e nel 1975 decise di aggiornare la sua stima per il futuro portando il tempo necessario alle componenti per raddoppiare da 1 a 2 anni.

Questo andamento continuò per decenni fino a diventare una forza trainante di avanzamento tecnologico, cambiamenti sociali, produttività e crescita economica.

Durante gli anni 60 questo fenomeno era lontano dalla vita comune delle persone ma oggi è impossibile non notare gli effetti della legge di Moore in tanti aspetti quotidiani. Pensate alla memoria del telefono che avete oggi. E’ plausibile che sia il doppio di quella del telefono che avevate 2-3 anni fa che a sua volta era il doppio di quello precedente. (altro…)

Approfondisci

Bright green leaf

Differenze tra Reference Type e Value Type in Swift

In Swift esistono 3 tipi di dati:

  1. Class
  2. Struct
  3. Enum

Class è un Reference Type mentre Struct e Enum sono Value Type.

La differenza fondamentale è che nel caso di Reference Type, n variabili (o costanti) possono referenziare la stessa istanza di una classe.

Nell’ambito dei Value Type invece, un valore può essere referenziato da una sola variabile (o costante).

(altro…)

Approfondisci