Scrivere il tuo primo gioco per Android con il Corona SDK


La categoria più popolare sul Google Play Store è sempre stato Games. Anche se probabilmente tutti noi usiamo applicazioni di produttività chiave come un browser web, un client di posta elettronica, e un’applicazione di messaggistica istantanea, il gioco rimane ancora una parte importante dell’esperienza mobile. Quindi non è una sorpresa che molte persone che vogliono imparare a sviluppare per Android vuole iniziare facendo un gioco. Inoltre, siamo onesti, la scrittura di un gioco è un intero carico più divertente che lo sviluppo di una applicazione di produttività!

La lingua ufficiale di Android è Java e l’ambiente di sviluppo ufficiale è Android Studio. Se si vuole guardare in Java allora vi consiglio la nostra basi Java esercitazione , e se si vuole imparare come scrivere un’applicazione utilizzando Android Studio allora ti suggerisco di controllare la nostra tutorial su scrittura del primo app Android . Tuttavia Java e Android in studio non sono gli unici modi per sviluppare per Android. È possibile trovare una panoramica delle lingue disponibili e SDK nella nostra Guida: Io voglio sviluppare applicazioni Android – Quali lingue devo imparare

Scrivere il tuo primo gioco per Android con il Corona SDK

Una delle SDK citati nella guida di linguaggi di programmazione è Corona, una terza parte SDK progettato principalmente per i giochi di scrittura. Invece di Java, Corona utilizza Lua, un linguaggio di scripting veloce che è facile da imparare ma potente. Tuttavia, Corona non è l’unico SDK mobile gaming che utilizza Lua, altri esempi ben noti includono Cocos2d-X Marmalade , e Gideros .

Scarica e installa

Per iniziare con Corona che si sta per bisogno di scaricare e installare l’SDK. Vai Corona sito e premere il pulsante di download. Sarà necessario creare un account (che è gratuito) per poter scaricare il kit. Se si vuole costruire un reale file .apk, piuttosto che solo in esecuzione il programma nell’emulatore, è necessario installare Java 7, ma non sarà necessario installare l’SDK di Android. Per installare la Java 7 Development Kit andare a sito web di Oracle , cercare la sezione chiamata “Java SE Development Kit 7u79” e scaricare la versione per il vostro PC.

Una volta installato Corona è necessario attivarlo. Questo è un processo di una volta, che è gratuito. Avviare la Corona Simulator e accettare la licenza. Inserire l’indirizzo email e la password che hai usato per il download, e fare clic su Login.

Avvio del progetto

Da dentro il clic Corona Simulator su “Nuovo progetto”. Inserire un nome per la vostra applicazione nel “Nome applicazione:” il campo e lasciare il resto delle impostazioni ai valori predefiniti. Fare clic su “OK”.

Scrivere il tuo primo gioco per Android con il Corona SDK

verrà visualizzato 433 Tre finestre. I primi due sono la Corona Simulator e Output Simular Corona. Corona aprirà anche una finestra di Esplora risorse che mostra i file per il vostro progetto.

La maggior parte dei file (alcuni 23 di loro) nella directory del progetto sono per l’icona dell’applicazione! Il file più importante per noi in questo momento è main.lua , in quanto questo è dove scrivere il codice per la nostra app.

Introduzione a Lua

Prima di entrare nella scrittura del codice, abbiamo bisogno di fare un tour whistle-stop di Lua. L’interprete Lua (ricordate che questo è un linguaggio di scripting, non un linguaggio compilato) è disponibile per Windows, OS X, e Linux. Tuttavia è incorporato a Corona, per cui in questo momento non è necessario installare nulla in più. Il modo più semplice per giocare con Lua è quello di utilizzare il in diretta online demo .

Potete trovare un sacco di buoni tutorial su Lua on-line e si dovrebbe dare un’occhiata alla target=”_blank”> , in Lua , The.Lua.Tutorial , e Il Tutorial Point Lua Tutorial

Ecco un piccolo programma Lua che vi mostrerà alcune delle caratteristiche principali di Lua:.

 funzione locale doubleIt (x) return x * 2 finale per i = 1 , 10,1 fare x = doubleIt (i) se (x == 10) quindi stampare ("dieci") else print (doubleIt (i)) end end 

Il codice sopra mostra tre importanti costrutti Lua : funzioni, loop, e se le dichiarazioni. La funzione di doubleIt () è molto semplice, si raddoppia solo il passato nel parametro x .

Il codice principale è un per anello da 1 a 10. Chiede doubleIt () per ogni iterazione. Se il valore di ritorno è di 10 (cioè quando i è 5) poi le stampe di codice su “dieci”, altrimenti viene stampato solo il risultato di doubleIt () .

Scrivere il tuo primo gioco per Android con il Corona SDK

Se avete qualche esperienza di codifica quindi il codice di esempio dovrebbe essere abbastanza facile da seguire. Se stai cercando di imparare un po ‘di programmazione di base, allora vi consiglio di utilizzare alcune delle risorse legati sopra per affinare le tue capacità.

Scrivere il gioco

La scrittura di programmi di base a Corona è semplice. Hai solo bisogno di preoccuparsi di un file, main.lua, e lasciare Corona fare tutto il lavoro pesante. Il gioco che stiamo per scrivere è un semplice “tap” di gioco. Un palloncino o una bomba non riuscirà giù per lo schermo. Se il giocatore tappa sul pallone segnano un punto, toccare su una bomba, allora il punteggio sarà diviso 2, a titolo di penale. Per scrivere il codice è necessario modificare main.lua . È possibile farlo in qualsiasi editor di testo.

La Corona SDK è dotato di un motore fisico in 2D, il che rende i giochi di costruzione molto semplice. Il primo passo nella scrittura del gioco è quello di inizializzare il motore fisico:

 Fisica locali = richiedono ("fisica") physics.start () 

Il codice è abbastanza autoesplicativo. La fisica del modulo viene caricato e inizializzato, viene assegnato alla variabile fisica . Per attivare il motore physics.start () è chiamato.

Poi creiamo alcune variabili utile che sarà utile non solo per questo gioco semplice, ma anche per i giochi più complessi. halfW e halfH tenere i valori per la metà della larghezza dello schermo e la metà dell’altezza dello schermo:

 halfW = display.contentWidth * 0.5 halfH = Display .contentHeight * 0,5 

La Display è un oggetto predefinito che Corona rende disponibile a livello globale.

Ora arriva il primo passo che rende effettivamente successo qualcosa sullo schermo:

 bkg locale = display.newImage ("night_sky_pext.webp", halfW, halfH) 

Oltre a immobili come contentHeight e contentWidth , Display oggetto ha anche un sacco di funzioni utili. Il newImage () funzione legge un’immagine il file (in questo caso un _pext.webp) e lo visualizza sullo schermo. Gli oggetti di visualizzazione sono resi in strati, quindi quanto questa è la prima immagine che stiamo mettendo sullo schermo allora sarà sempre lo sfondo (a meno che il codice fa espressamente qualcosa per cambiare la situazione). I parametri di halfW e halfH dire Corona per posizionare l’immagine al centro.

A questo punto è possibile eseguire il codice nell’emulatore e vedere il immagine di sfondo. Se si salva il file quindi l’emulatore noterà che il file è stato modificato e di offrire per il rilancio. Se ciò non accade, allora utilizzare File- & gt; Rilancio

Dal momento che l’utente dovrà conquistare punti per la maschiatura su palloni, abbiamo bisogno di inizializzare una variabile punteggio e visualizzare il punteggio sullo schermo:.

 punteggio = 0 scoreText = display.newText (punteggio, halfW, 10) 

Il punteggio sarà conservato nel nome fantasioso variabile partitura, e scoreText è l’oggetto che visualizza il punteggio. Come newImage () , newText () mettere qualcosa sullo schermo, in questo caso il testo. Dal momento che scoreText è una variabile globale, allora possiamo cambiare il testo in qualsiasi punto. Ma noi ci metteremo a che presto

È possibile rilanciare l’emulatore e vedere il punteggio di 0 schermo verso l’alto dello schermo

Scrivere il tuo primo gioco per Android con il Corona SDK

A sinistra: solo lo sfondo. A destra:. Contesto e punteggio

Ora arriva qualcosa di un po ‘più difficile, ma non ti preoccupare io spiegherò riga per riga:

 funzione locale balloonTouched (evento ) if (event.phase == "ha cominciato") allora Runtime: removeEventListener ("enterFrame", event.self) event.target: removeSelf () = punteggio punteggio + 1 scoreText.text fine = fine punteggio 

Il codice sopra definisce una funzione chiamata balloonTouched () , che sarà chiamato ogni volta che un pallone viene toccato. Non abbiamo ancora detto Corona a chiamare questa funzione ogni volta che il pallone è sfruttato, che verrà più tardi, ma quando facciamo questa è la funzione che viene chiamato.

Toccare o toccare eventi hanno più fasi, molti a sostenere trascinamento. L’utente posiziona il dito su un oggetto, questa è la fase “iniziato”. Se scorrere il dito in qualsiasi direzione, che è la fase “spostati”. Quando l’utente solleva il dito dallo schermo, che è la fase “si è concluso”.

La prima linea di balloonTouched () controlli siamo nella fase “ha cominciato”. Vogliamo togliere il pallone e incrementare il punteggio il più presto possibile. Se la funzione viene chiamata di nuovo per altre fasi, come “si è concluso”, quindi la funzione non fa nulla.

All’interno della se dichiarazione sono quattro righe di codice. Affrontiamo gli ultimi due prima, in quanto sono più semplici. score = punteggio + 1 solo incrementa il punteggio di uno e scoreText.text = punteggio cambia il testo punteggio sullo schermo per riflettere il nuovo punteggio. Ricordi come ho detto che scoreText è stata globale e potrebbe essere accessibile ovunque, beh questo è quello che facciamo qui.

Ora, per le prime due righe. Una volta che un pallone o una bomba cade la parte inferiore dello schermo esiste ancora nella memoria della app, è solo che non si può vedere. Mentre il gioco procede il numero di questi oggetti fuori schermo aumenterà continuamente. Quindi abbiamo bisogno di avere un meccanismo che elimina gli oggetti una volta che sono fuori dalla vista. Lo facciamo in una funzione chiamata fuori campo , che non abbiamo ancora scritto. Questa funzione viene chiamata una volta per frame durante il gioco. Una volta che un palloncino è stato sfruttato allora abbiamo bisogno di eliminare e rimuovere la chiamata che controlla se il pallone è andato fuori campo

La linea di event.target:. RemoveSelf () cancella il palloncino. Quando un evento di tocco si verifica uno dei parametri della funzione listener è il evento parametro. Racconta la funzione sull’evento e che tipo di evento si tratta, ad esempio, event.phase. Ci dice anche che l’aerostato è stato sfruttato, event.target. removeSelf () funzione fa quello che dice lo fa, elimina l’oggetto (in questo caso un palloncino).

La linea prima che rimuove l’ascoltatore “ enterFrame “, che è la funzione che si chiama ogni frame per vedere se il palloncino è caduto dal fondo dello schermo. Prenderemo in esame che, in modo più dettagliato quando si arriva a scrivere il fuori campo funzione listener.

Quindi, per ricapitolare. balloonTouched () controlla che questo è l’inizio della sequenza di tatto. Esso quindi rimuove l’ascoltatore “enterFrame”, che è la funzione che viene chiamata ogni frame per vedere se il palloncino è caduto dal fondo dello schermo. Quindi, elimina il pallone, incrementa il punteggio e visualizza il nuovo punteggio

Questo è stato per palloncini, ora abbiamo bisogno di qualcosa di simile per le bombe:.

 funzione locale bombTouched (evento) if ( event.phase == "ha cominciato") allora Runtime: removeEventListener ("enterFrame", event.self) event.target: removeSelf () = punteggio Math.floor (partitura * 0,5) scoreText.text = segnare end 

Come si può vedere il codice è molto simile, con l’eccezione che, invece di incrementare il punteggio, il punteggio viene moltiplicato per 0,5 (cioè divisa per 2). Il () turni funzione giù il punteggio al numero intero più vicino. Quindi, se il giocatore ha avuto un punteggio di 3 e batté una bomba, allora il nuovo punteggio sarebbe 1, e non 1.5.

Ho citato il fuori campo () funzione in precedenza. Questa funzione sarà chiamata ogni fotogramma per verificare se un oggetto è andato fuori dallo schermo. Ecco il codice:

 funzione locale fuori campo (self, evento) se (self.y == nil) per poi tornare end if (self.y & gt; display.contentHeight + 50) poi Durata: removeEventListener ( "enterFrame", auto) auto: removeSelf () end end 

In informatica c’è una situazione conosciuta come una condizione di competizione. È qui che due cose stanno per accadere, ma si potrebbe succedere prima, o, talvolta, l’altro potrebbe accadere prima. E ‘una corsa. Alcune condizioni di gara sono invisibili, perché una cosa sembra sempre accadere prima, ma possono causare errori interessanti che un giorno, sotto le giuste condizioni, l’altra cosa accade prima e poi le interruzioni di sistema!

Non c’è una condizione di competizione in questo semplice gioco, perché possono accadere due cose molto vicine tra loro: un palloncino di essere sfruttato e fuori campo () funzione chiamata per vedere se il pallone è andato fuori dallo schermo. Il risultato è che il codice per eliminare il pallone può essere chiamato e poi il offscreen () funzione viene chiamata (che avviene come 30 volte al secondo). Per ovviare a questo strano sequenza di eventi del fuori campo () funzione ha bisogno di controllare se il y valore dell’oggetto è nil (null) o no. Se si tratta di nil , allora vuol dire che l’oggetto è stato eliminato già, così si muovono lungo, questi non sono i droidi che stiamo cercando.

Se l’oggetto è ancora in giocare, quindi controllare la sua posizione, se si è passati a 50 pixel sullo schermo quindi eliminarlo e rimuovere l’ascoltatore in modo che il fuori campo () funzione non sarà chiamato di nuovo per questo oggetto. Il codice per fare in modo che fuori campo () è chiamato ogni fotogramma è parte della prossima sezione di codice.

L’intera premessa di questo gioco è che i nuovi palloni o le bombe continueranno per cadere giù per lo schermo. Quindi abbiamo bisogno di una funzione che creerà o un nuovo palloncino o una nuova bomba:

 funzione addNewBalloonOrBomb locale () locale startx = Math.random (display.contentWidth * 0.1, display.contentWidth * 0.9) if ( Math.random (1,5) == 1) allora - BOMBA! bomba locale = display.newImage ("bomb_pext.webp", startx, -300) physics.addBody (bomba) bomb.enterFrame = offscreen Durata: addEventListener ("enterFrame", bomb) bomb: addEventListener ("touch", bombTouched) else - Balloon palloncino locale = display.newImage ("red_balloon_pext.webp", startx, -300) physics.addBody (palloncino) balloon.enterFrame = offscreen Durata: addEventListener ("enterFrame", balloon) palloncino: addEventListener ("touch", balloonTouched) end end 

La prima riga della funzione decide dove il pallone cadrà dall’alto del x aereo. Se il pallone o una bomba sempre caduto nel mezzo, che non sarà molto interessante! Così startx è un numero casuale compreso tra il 10 per cento e il 90 per cento della larghezza dello schermo.

Avanti un numero casuale viene prelevato da 1 a 5. Se il numero è 1, allora una bomba sarà eliminato. Se 2, 3, 4 o 5 poi un palloncino sarà abbandonato. Ciò significa che le bombe verranno eliminati circa il 20 per cento del tempo.

La bomba e il codice palloncino sono abbastanza simili. In primo luogo l’immagine (o una bomba o un palloncino) viene visualizzato con newImage (). La x posizione è quella di startx , mentre il suo y posizione è impostata su -300, vale a dire la parte superiore dello schermo. La ragione di ciò è che vogliamo l’oggetto a cadere da fuori area dello schermo nella zona visibile e poi dal fondo. Dal momento che stiamo usando il motore fisico 2D è bene dare un po ‘di distanza iniziale a cadere l’oggetto, in modo che possa guadagnare un po’ di velocità.

La chiamata a physics.addBody () prende l’immagine caricata da newImage () e lo trasforma in un oggetto nel motore fisico. Questo è molto potente. Ogni file di immagine può essere trasformato in un corpo che risponde alla forza di gravità e le collisioni semplicemente chiamando physics.addBody () .

Le ultime tre righe della bomba o il fumetto codice configurare gli ascoltatori. Impostazione del enterFrame proprietà dice Corona quale funzione di chiamare ogni fotogramma e la chiamata a Durata: addEventListener () lo imposta. Infine la chiamata a palloncino: addEventListener () dice a Corona quale funzione chiamare se la bomba o il pallone è toccato

E ora il gioco è quasi completo.. Abbiamo solo bisogno di altre due linee di codice:

 addNewBalloonOrBomb () timer.performWithDelay (500, addNewBalloonOrBomb, 0) 

La prima linea rende la prima bomba o palloncino caduta chiamando esplicitamente addNewBalloonOrBomb () . La seconda riga imposta un timer che chiamerà addNewBalloonOrBomb () ogni mezzo secondo (500 millisecondi). Ciò significa che un nuovo palloncino o bomba cadrà ogni mezzo secondo.

Scrivere il tuo primo gioco per Android con il Corona SDK

È ora possibile eseguire il gioco nell’emulatore.

Questa è la lista completa per main.lua, il progetto di codice sorgente completo per questo gioco può essere trovato qui su GitHub .

 -------------------------------------- -------------------------------------------------- - - - Falling pallone e bombe gioco - Scritto da Gary Sims per Android Authority - ----------------------------- -------------------------------------------------- ---------- - Avviare il motore fisico di fisica locale = richiedono ("fisica") physics.start () - Calcola la metà della larghezza dello schermo e l'altezza halfW = display.contentWidth * 0.5 halfH = display. contentHeight * 0.5 - Impostare lo sfondo bkg locale = display.newImage ("night_sky_pext.webp", halfW, halfH) - Score punteggio = 0 scoreText = display.newText (punteggio, halfW, 10) - Chiamato quando il pallone è sfruttato da giocatore - Aumento punteggio 1 funzione locale balloonTouched (evento) se (event.phase == "ha cominciato") allora Runtime: removeEventListener ("enterFrame", event.self) event.target: removeSelf () = punteggio punteggio + 1 scoreText.text fine = fine punteggio - Chiamato quando la bomba è sfruttato dal giocatore - Metà del punteggio come una funzione locale pena bombTouched (evento) se (event.phase == "ha cominciato") allora Durata: removeEventListener ( "enterFrame", event.self) event.target: removeSelf () = punteggio Math.floor (partitura * 0,5) scoreText.text = segnare end end - Eliminare gli oggetti che è caduto nella parte inferiore dello schermo funzione locale fuori campo (auto , evento) se (self.y == nil) per poi tornare end if (self.y & gt; display.contentHeight + 50) poi Durata: removeEventListener ("enterFrame", auto) auto: removeSelf () end end - Aggiungere una nuova mongolfiera caduta o bomba funzione addNewBalloonOrBomb locale () - È possibile trovare red_ballon_pext.webp e bomb_pext.webp nel repository GitHub locale startx = Math.random (display.contentWidth * 0.1, display.contentWidth * 0.9) if (Math.random (1,5) == 1) allora - BOMBA! bomba locale = display.newImage ("bomb_pext.webp", startx, -300) physics.addBody (bomba) bomb.enterFrame = offscreen Durata: addEventListener ("enterFrame", bomb) bomb: addEventListener ("touch", bombTouched) else - Balloon palloncino locale = display.newImage ("red_balloon_pext.webp", startx, -300) physics.addBody (palloncino) balloon.enterFrame = offscreen Durata: addEventListener ("enterFrame", balloon) palloncino: addEventListener ("touch", balloonTouched) end end - Aggiungere un nuovo palloncino o bombe ora addNewBalloonOrBomb () - Continuare ad aggiungere una nuova mongolfiera o una bomba ogni 0,5 secondi timer.performWithDelay (500, addNewBalloonOrBomb, 0) 

Le prossime tappe

Il passo successivo è quello di giocare il gioco in un vero e proprio dispositivo Android. Per creare un file .apk cliccare su File- & gt; costruire per Android … e compilare i campi. Il risultato sarà un file .apk che è possibile copiare sul dispositivo e quindi installare. Sarà necessario assicurarsi di aver configurato il dispositivo per consentire l’installazione di app da fonti sconosciute. Amazon ha qualche buona documentazione su questo come è necessario anche per impostare questo per installare l’Amazon Appstore. Corona ha anche una guida su come firmare, costruire e testare la vostra applicazione su dispositivi Android .

Scrivere il tuo primo gioco per Android con il Corona SDK

Con il gioco correttamente installato sul vostro dispositivo la prossima cosa da fare è migliorare il gioco. Ad esempio, perché non provare ad aggiungere un “pop” o “bang” suono tutto un pallone o una bomba è congelato. Corona ha un API per questo: media.playEventSound () .

Oppure, perché non provare l’aggiunta di un terzo tipo di oggetto, diciamo una spinta eccellente che raddoppia il punteggio attuale, o come su una musica di sottofondo?

Wrap-up

Giochi di scrittura con Corona è abbastanza semplice perché l’SDK gestisce le cose come OpenGL e include un built-in 2D motore fisico. Inoltre Lua è facile da imparare e non dovrebbe essere difficile per chiunque abbia anche il minimo di esperienza di programmazione. Il sito ha un sacco di Coronalabs documentazione tra cui un sacco di guide e tutorial .

In meno di 100 righe di codice abbiamo un gioco di lavoro. OK, non sta andando a vincere alcun premio, ma mostra la potenza e la flessibilità della Corona SDK.


Autorità Android
Scrivere il tuo primo gioco per Android con il Corona SDK
L'ecosistema di dati reti di quinta generazione o 5 continuerà ad aumenta...

EUROPA PRESS Battezzato come un Copione, questo software dannoso utilizzar...

Bandai Namco ha confermato che ci sarà una versione occidentale.Bandai Na...

...

Bibliography ►

phoneia.com (July 13, 2015). Scrivere il tuo primo gioco per Android con il Corona SDK. Bogotá: E-Cultura Group. Recovered from https://phoneia.com/it/scrivere-il-tuo-primo-gioco-per-android-con-il-corona-sdk/