Close Menu
iSpazioiSpazio
  • Notizie
  • Offerte
  • Downloads
  • Recensioni
  • Sconti Amazon
Menu Espanso
  • Home
  • Forum
  • Notizie
  • Offerte
  • iOS 18
  • iPhone 16
  • Downloads
  • Guide
  • Sconti Amazon
  • Contatti
  • Pubblicità
Facebook X (Twitter) Instagram YouTube TikTok
iSpazioiSpazio
  •  Forum
  • Scontiamolo
  • Wallpapers Central
  • Teslers
Scarica l'App
  • W W D C 2 5
  • Offerte
  • Guide
    • Personalizzazione
    • Video Guide TikTok
  • Recensioni
  • Downloads
    • Sfondi
    • Suonerie
    • Comandi Rapidi
    • Sfondi Personalizzati
    • Widget e Altro
    • iOS
    • iTunes
  • Dispositivi Apple
    1. iPhone
    2. iPad
    3. Mac
    4. Apple Watch
    5. iOS 26
    6. View All

    iPhone 16e entra nella Top 10 in Europa, ma non convince come gli SE

    3 Giu 2025

    WhatsApp interrompe il supporto per alcuni modelli di iPhone

    3 Giu 2025

    iPhone 17 e 17 Air con schermo a 120Hz, ma senza ProMotion | Rumor

    3 Giu 2025

    iPhone 17 delude già prima del lancio: ancora un chip A18 e solo 8GB di RAM

    2 Giu 2025

    iPadOS 26 apre la strada all’iPad gigante: tutto ruota intorno al nuovo modello pieghevole

    13 Giu 2025

    iPadOS 26, watchOS 26 e macOS Tahoe: Ecco quali sono i dispositivi compatiibili sui quali potremo installarli

    10 Giu 2025

    iPadOS 26 migliora il multitasking con le applicazioni che diventano finestre in stile desktop

    10 Giu 2025

    iPadOS 26 rivoluzionerà il multitasking su iPad

    8 Giu 2025

    Apple migliora l’AutoFill dei codici di verifica su iOS 26 e macOS Tahoe

    13 Giu 2025

    iPadOS 26, watchOS 26 e macOS Tahoe: Ecco quali sono i dispositivi compatiibili sui quali potremo installarli

    10 Giu 2025

    Apple presenta macOS Tahoe 26 che rende il Mac più versatile, produttivo ed intelligente che mai

    10 Giu 2025

    macOS 26 potrebbe chiamarsi “macOS Tahoe” | Rumor

    2 Giu 2025

    watchOS 26 introduce una nuova gesture del polso: ecco i modelli compatibili

    12 Giu 2025

    iOS 26 introduce le Notifiche per il Meteo estremamente avverso e widget dedicati per le tue prossime destinazioni

    11 Giu 2025

    Apple rimuove 5 quadranti da Apple Watch con l’arrivo di watchOS 26: ecco a quali dovremo dire addio

    11 Giu 2025

    iPadOS 26, watchOS 26 e macOS Tahoe: Ecco quali sono i dispositivi compatiibili sui quali potremo installarli

    10 Giu 2025

    CarPlay si rinnova con iOS 26: Ecco tutte le 9 novità in arrivo tra nuovo design, widget, video in sosta ed altro

    14 Giu 2025

    tvOS 26 ed iOS 26 offrono la funzione di Login Automatico per le applicazioni su Apple TV

    14 Giu 2025

    Problemi di spazio in memoria per gestire gli aggiornamenti software automatici? iOS 26 pensa anche a questo!

    14 Giu 2025

    Apple apre ai codici promozionali per tutti gli acquisti in-app, non solo abbonamenti

    14 Giu 2025

    CarPlay si rinnova con iOS 26: Ecco tutte le 9 novità in arrivo tra nuovo design, widget, video in sosta ed altro

    14 Giu 2025

    tvOS 26 ed iOS 26 offrono la funzione di Login Automatico per le applicazioni su Apple TV

    14 Giu 2025

    Problemi di spazio in memoria per gestire gli aggiornamenti software automatici? iOS 26 pensa anche a questo!

    14 Giu 2025

    Apple apre ai codici promozionali per tutti gli acquisti in-app, non solo abbonamenti

    14 Giu 2025
  • iPhone 16
  • iOS 26
  • Sconti Amazon
Contatti
Pubblicità
iSpazioiSpazio
  • Notizie
  • Offerte
  • Downloads
  • Recensioni
  • Sconti Amazon

iSpazio Developer Program #12 – Creiamo il nostro primo gioco: Pong!

Andrea BusiBy Andrea Busi11 Mar 2009Commenta7 Mins Read
Condividi Facebook Twitter Telegram WhatsApp Copy Link Threads Email
Share
Facebook Twitter WhatsApp Telegram Threads Email Copy Link
In qualità di Affiliato Amazon, iSpazio riceve un guadagno dagli acquisti idonei (info). Vedi le offerte su Telegram.
Icona Cerchi Prodotti Apple ed accessori Tech in sconto?

Cerchi Prodotti Apple ed accessori Tech in sconto?

Segui il nostro canale @scontiamolo su Telegram!

Advertising

Eccoci con un nuovo appuntamento dell’iSpazio Developers Program. Oggi iniziamo con una serie di tutorial che ci permetteranno di creare il nostro primo vero gioco per iPhone! Si tratta di un classico, molto in voga negli anni ’80: stiamo parlando di Pong! Chi non lo conosce?

In questa prima puntata vedremo come realizzare la parte grafica, e come implementare l’algoritmo che si occupa del movimento della pallina senza discostarci dall’obiettivo principale, che resta sempre quello di fornirvi le spiegazioni dettagliate per capire bene tutti i passaggi ed assimilare il codice, in maniera tale da riuscire a ricreare questo gioco secondo i vostri gusti.

Indice:

1. Creiamo un nuovo progetto
2. Impostiamo la struttura grafica
3. Inseriamo le costanti
4. Scriviamo i metodi necessari
5. Proviamo il gioco!

1. Creiamo un nuovo progetto

Aprimo Xcode, selezioniamo “File -> New Project”. Nel menù che ci appare selezioniamo “ViewBased Application”, clicchiamo su “Choose…” e immettiamo come nome “PongTutorial” e fate clic su “Save”. Abbiamo così creato il nostro nuovo progetto.

Ora procediamo in un modo un po’ diverso da come abbiamo fatto in tutti i precedenti tutorial. Questo vi permetterà di vedere come gestire un’applicazione (e le relative viste) in un modo un po’ diverso.

Il gioco che vogliamo realizzare riprende il classico Pong, un gioco molto di moda negli anni 80. Ecco una semplice bozza del gioco che andremo a realizzare:

immagine-194

Facciamo un rapido riepilogo dei componenti che ci servono:

  • 3 immagini: una per ogni barra dei giocatori e una per la pallina (saranno di tipo UIImageView);
  • 3 label di testo: due per i punteggi e una per avviare la partita;

Ora che abbiamo definito tutti i componenti possiamo scrivere il codice necessario! Apriamo il file “PongTutorialViewController.h” e inseriamo il seguente codice:

immagine-256

Potete notare che abbiamo dichiarato i componenti che ho descritto poco sopra, insieme ad altre due variabili: una è “statoPartita”, ch ci informerà dello stato della partita, ovvero se è in corso oppure è stata terminata; la seconda variabile è “velocitàPalla”, un componente che conterrà due valori: la velocità sull’asse X quella sull’asse Y. Questa variabile ci servirà per far muovere la nostra pallina, che per ora avrà una velocità fissa, non seguirà quindi nessuna particolare legge oraria.

Salviamo ora il nostro file, assicurandoci che l’icona in XCode sia bianca (segno che abbiamo salvato il file, passaggio fondamentale per impostare correttamente la parte grafica).

2. Impostiamo la struttura grafica

Prima di impostare i componenti grafici dobbiamo importare nel progetto le due immagini che ci serviranno: quelle delle barre e della pallina. Potete creare le vostre immagini personalizzate, oppure utilizzare quelle che trovate qui di seguito:

pallina

barra

Salvate le immagini e inseritele nel progetto, semplicemente trascinando le immagini nel progetto di XCode e cliccando “Add” alla schermata che vi apparirà:

immagine-334

Apriamo ora il file “PongTutorialViewController.xib”, che avvierà Interface Builder. Ora dobbiamo ricreare il layout che abbiamo abbozzato in precedenza. Inseriamo nella vista un componente UIImageView, assegnandoci l’immagine della barra (vi basterà selezionarla dal menù “Attribute Inspector”:

immagine-425

Rimpicciolite poi i bordi di tale elemento, in modo che i puntini mostrati da IB corrispondano, più o meno, ai bordi dell’immagine. Per capirci, dovrete avere un risultato come questo:

immagine-515

Inseriamo poi i componenti mancanti, personalizzandoli come preferiamo. Il risultato finale sarà più o meno come questo:

immagine-611

Ora dobbiamo collegare gli elementi che abbiamo appena inserito con quelli che abbiano dichiarato in precedenza in XCode. Per far ciò, clicchiamo, ad esempio, sulla pallina. Se apriamo, poi, la scheda “Connections Inspector” vediamo che non c’è nessun collegamento:

immagine-713

Notiamo, però, un pallino, che ci permette di creare nuovi collegamenti. Prendiamo il pallino a fianco di “New Referencing Outlet” e trasciniamolo su “File’s Owner”, nella finestrella che ci mostra tutti i componenti della vista:

immagine-88

Nel menù a discesa che ci appare selezioniamo, ovviamente, l’elemento “pallina”. Avremo così creato la connessione desiderata. Se avete eseguito i passaggi in maniera corretta avrete un risultato come questo (ovviamente all’interno di “Connections Inspector” della pallina):

immagine-98

Ripetete ora il procedimento con tutti gli altri elementi, ovvero con le due barre, le due label per il punteggio e la label per avviare la partita.

Salvate poi il tutto e uscite da Interface Builder, tornando ad XCode.

3. Inseriamo le costanti

Ora dobbiamo iniziare a scrivere il codice che permetterà alla nostra pallina di muoversi. Andiamo nel file “PongTutorialViewController.m” e inseriamo il seguente codice:

immagine-105

Abbiamo dichiarato quattro costanti, ovvero delle variabili a cui non potremo cambiare valore durante il corso del nostro programma. Le prime due costanti si riferiscono allo stato della partita, mentre le seconde due alla velocità con cui la pallina si deve muovere. Perchè due valori della velocità? Perchè il nostro gioco è bidimensionale, e quindi ha due componenti: la componente X, data dal movimento orizzontale, e la componente Y, ovvero il movimento verticale. Questi due valori sono modificabili a nostro piacimento, potrete, quindi, variare la velocità con cui la pallina si muove.

Nota teorica: avremmo anche potuto non utilizzare le costanti, ma come vedrete il loro utilizzo ci semplificherà molto il codice, rendendolo più leggibile. Ad esempio, se vogliamo controllare se la partita è in corso dovremo fare:

if (partita == kPartitaInCorso) …

Come potete notare è molto leggibile e immediato. Senza costanti avremmo dovuto scrivere così:

if (partita == 1) …

Il codice non è cambiato, fa sempre lo stesso controllo. Ma sicuramente risulta meno comprensibile, soprattutto se rileggete il codice qualche settimana dopo averlo scritto.

4. Scriviamo i metodi necessari

La prima operazione da compiere è quella di importare gli elementi. Inseriamo, quindi, la seguente istruzione:

immagine-1114

Dobbiamo adesso definire il metodo che imposterà la aprtita all’avvio del gioco. Per fare questo dobbiamo utilizzare il metodo “viewDidLoad”, che si avvia proprio dopo il caricamento della vista. Inseriamo il seguente codice:

immagine-1211

Potete leggere nei commenti che abbiamo eseguito semplici operazioni di inizializzazione, che ci permettono di iniziare una nuova partita. L’istruzione che merita un po’ più di attenzione è l’inizializzazione di un componente NSTimer. Questo elemento si occupa di ripetere l’azione “gameLoop” ogni X secondi, che noi abbiamo settato a 0.05. Quando avremo creato anche il restante codice, provate a modificare tale valore: vedrete che la velocità della pallina cambierà, in quanto l’azione viene ripetuta un numero maggiore o minore di volte. Quindi, con un valore di 1 la pallina sarà molto lenta, mentre se lo portiamo a 0.01 sarà ancora più veloce!

Ora dobbiamo implementare l’algoritmo che fa muovere la nostra pallina. Sempre nel file “PongTutorialViewController.m” scriviamo il seguente metodo:

immagine-1310

Non è niente di difficile, i passaggi sono tutti commentati nel codice. Comunque, se la partita è in corso dobbiamo muovere la nostra pallina, e questo lo facciamo aumentando le coordinate del centro della stessa con i valori che abbiamo impostato alle velocità (ecco percè c’era una componente per l’asse X e una per l’asse Y). Se il centro risulta essere esterno alla vista invertiamo la velocità, in modo da variare la direzione con cui si muove la pallina.

L’ultima azione (per questo tutorial) che dobbiamo implementare riguarda la gestione dell’avvio della partita, ovvero quando l’utente tappa sulla stringa a centro schermo la partita deve cominciare. Aggiungiamo, quindi, il seguente metodo:

immagine-1410

La gestione è un po’ semplificata, in quanto con questo metodo ci basterà cliccare su una parte qualsiasi dello schermo per iniziare la partita. Ma a noi ora basta così.
Completiamo, infine, il metodo “dealloc”, che libera la memoria da noi utilizzata:

immagine-1510

È molto importante gestire nella maniera migliore la memoria, soprattutto quando si sviluppano videogiochi. Un gioco lento e scattoso, infatti, non potrà mai avere successo.

5. Proviamo il gioco!

È giunto il momento di provare il nostro gioco! Clicchiamo su “Build and Go!” e gustiamoci la nostra pallina che vaga per lo schermo!

immagine-1610

Se Avete Problemi, questo è il nostro file di progetto.

La guida è stata creata da Andrea Busi per “iSpazio.net” e “Bubi Devs”. La versione originale inglese del tutorial è disponibile a questo indirizzo: “iPhone Game Programming Tutorial, Part 1 – iCodBlog“. I meriti quindi relativamente alla versione inglese, sono del legittimo autore.


Sai che siamo anche su Telegram? Unisciti al nostro canale iSpazio per ricevere le notifiche oppure Apple Italia per chattare con altri utenti. Scopri i migliori prodotti Tech in sconto su Amazon con il nostro canale OFFERTE iSpazio.

Scarica la nostra app e leggi le notizie in mobilità. Porta iSpazio sempre con te, anche su Telegram.
| Applicazione iOS
Con l'applicazione ufficiale di iSpazio resterai sempre aggiornato sulle notizie Apple, video tutorial per iPhone e tanto altro. riceverai una notifica per ogni nuovo articolo. Puoi utilizzare anche i Widget per tenere le novità sott'occhio nella Home o nella Lockscreen.
Scaricala subito!
| Canale Telegram 10.700+ Utenti
Su Telegram invece, segnaliamo soltanto le notizie più importanti ed urgenti oppure i nostri nuovi video su YouTube. E' un canale molto interessante, assolutamente non invasivo perchè non inviamo troppe push, e vi consigliamo di seguirci anche lì.
Unisciti a noi!
ispazio notifiche
iSpazio Tutorials
Seguici su Google News
Share. Facebook Twitter Telegram WhatsApp Threads Email Copy Link
Previous ArticleUnread SMS Fixer 2.1.0-1 – Update | Cydia – iSpazio Repository
Next Article iPod Touch 2G: Arriva finalmente il Jailbreak completo e definitivo!

Articoli correlati

GUIDA ISPAZIO: come eliminare le mappe da un qualsiasi navigatore senza bisogno del Jailbreak

11 Ago 2009Commenta

Guida iSpazio: Eliminare le mappe superflue dal nuovo navigatore iGo My Way

10 Ago 2009Commenta

iSpazio Developers Program #13 – Pong, parte 2: completiamo il nostro gioco!

24 Mar 2009Commenta

Guida Sblocco Firmware 2.2 per iPhone / iPhone 3G ed iPod Touch con QuickPwn 2.2 – MAC

23 Nov 2008Commenta

Leggi o Aggiungi Commenti

Advertising

Da non perdere!

iOS 26 Beta 1 è disponibile: Ecco come scaricarlo ed installarlo su iPhone

9 Giu 2025

Ecco la lista degli iPhone sui quali è possibile installare iOS 26

9 Giu 2025

Apple presenta iOS 26 con nuovo design “Liquid Glass” e tantissime novità!

10 Giu 2025

Apple prepara il più grande restyling software dai tempi di iOS 7 e coinvolgerà tutti i suoi sistemi operativi

26 Mag 2025
Advertising

Gli articoli più letti

watchOS 26 introduce una nuova gesture del polso: ecco i modelli compatibili

iOS 18.6 sarà uno degli ultimi aggiornamenti prima dell’arrivo di iOS 26, ecco cosa aspettarsi

Info su iSpazio
Info su iSpazio

iSpazio è il punto di riferimento italiano per tutti gli appassionati Apple. Dal 2007, sul nostro sito trovi notizie, recensioni e guide per imparare ad utilizzare al meglio iOS, l'iPhone e tutti gli altri dispostivi dell'azienda.

Contattaci
Pubblicità

Il Network
Il Network

L'esperienza maturata su iSpazio ci ha portati, con il tempo, a realizzare altri progetti ed aprire nuovi siti con tematiche strettamente correlate al nostro Blog principale.

Oggi, siamo i fieri proprietari di un Network composto da: iSpazio, Scontiamolo, Wallpapers Central e Smart Central e Teslers.

Link Rapidi
  • Chi siamo
  • Contattaci
  • Legal
  • Privacy Policy
  • Pubblicità su
© Copyright 2025 iSpazio SRL | Partita IVA: 10137091210
  • Chi siamo
  • Contattaci
  • Legal
  • Privacy Policy
  • Pubblicità su

Type above and press Enter to search. Press Esc to cancel.