Corona SDK Sviluppa un gioco simile alla frenesia - Passaggi finali

Benvenuti al tutorial finale della nostra serie di giochi come Frenzic! In questo tutorial, gestiremo la logica dei blocchi e i passaggi per creare l'app finale.


Da dove siamo partiti?

Assicurati di controllare parte 1 e parte 2 della serie per comprendere appieno questo tutorial.

Passaggio 1: posizionare la funzione Blocchi

Questa funzione viene eseguita quando il giocatore tocca uno dei quadratini del contenitore. In pratica controlla se è disponibile la posizione corretta per posizionare il quadrato e posizionarlo se è vero. La funzione nel passaggio successivo viene chiamata quando viene inserito il blocco.

 function placeBlock: tap (e) eventTarget = e.target - Controlla se position è disponibile local position = currentXPosition, currentYPosition if (position [1] == 5 e position [2] == 5 e eventTarget.a == false) quindi blocca [#blocks] .x = eventTarget.x + position [1] blocks [#blocks] .y = eventTarget.y + position [2] eventTarget.a = true blockPlaced () elseif (position [1] = = 35 e position [2] == 5 e eventTarget.b == false) quindi blocca [#blocks] .x = eventTarget.x + position [1] blocks [#blocks] .y = eventTarget.y + position [2 ] eventTarget.b = true blockPlaced () else = posizione [1] == 5 e posizione [2] == 35 e eventTarget.c == false) quindi blocca [#blocks] .x = eventTarget.x + position [1] ] blocchi [#blocks] .y = eventTarget.y + position [2] eventTarget.c = true blockPlaced () elseif (position [1] == 35 e position [2] == 35 e eventTarget.d == false) quindi blocca [#blocks] .x = eventTarget.x + position [1] blocks [#blocks] .y = eventTarget.y + position [2] eventTarget.d = true blockPlaced () end end

Passaggio 2: Aggiungi blocco all'array

Quando il blocco viene inserito nel contenitore, aggiungiamo il blocco alla matrice che tiene traccia dei blocchi memorizzati in quel contenitore. Questo ci aiuterà a determinare quando il contenitore è pieno. Suoniamo anche un suono e aumentiamo il punteggio di uno ogni volta che viene inserito un blocco.

 function blockPlaced () - Push block to containers blocca array if (eventTarget.name == 'up') then table.insert (up.blocksGFX, blocchi [#blocks]) up.blocks = up.blocks + 1 elseif (eventTarget .name == 'right') then table.insert (right.blocksGFX, blocks [#blocks]) right.blocks = right.blocks + 1 elseif (eventTarget.name == 'down') then table.insert (down. blocksGFX, blocks [#blocks]) down.blocks = down.blocks + 1 elseif (eventTarget.name == 'left') then table.insert (left.blocksGFX, blocchi [#blocks]) left.blocks = left.blocks + 1 fine - Punteggio punteggio = punteggio + 1 - Suono media.playEventSound ('bell.caf')

Passaggio 3: contenitore completo (colore singolo)

Il prossimo codice controlla se il contenitore è stato riempito da un singolo blocco di colore usando l'array contenitore. Aumenta il punteggio di 150 e riproduce il suono corrispondente. Viene chiamata una funzione per rimuovere i blocchi: creeremo tale funzione nei passaggi successivi.

 if (up.blocks == 4) then if (up.blocksGFX [1] .name == up.blocksGFX [2] .name e up.blocksGFX [2] .name == up.blocksGFX [3] .name e up.blocksGFX [3] .name == up.blocksGFX [4] .name) then score = score + 150 complete () end elseif (right.blocks == 4) then if (right.blocksGFX [1] .name = = right.blocksGFX [2] .name e right.blocksGFX [2] .name == right.blocksGFX [3] .name e right.blocksGFX [3] .name == right.blocksGFX [4] .name) quindi segna = score + 150 complete () end elseif (down.blocks == 4) then if (down.blocksGFX [1] .name == down.blocksGFX [2] .name e down.blocksGFX [2] .name == down .blocksGFX [3] .name e down.blocksGFX [3] .name == down.blocksGFX [4] .name) then score = score + 150 complete () end elseif (left.blocks == 4) then if (left .blocksGFX [1] .name == left.blocksGFX [2] .name e left.blocksGFX [2] .name == left.blocksGFX [3] .name e left.blocksGFX [3] .name == left.blocksGFX [4] .name) then score = score + 150 complete () end end

Passaggio 4: contenitore completo

Questo codice viene eseguito quando il contenitore è pieno, ma i blocchi all'interno non sono dello stesso colore.

 if (up.blocks == 4 o right.blocks == 4 o down.blocks == 4 o left.blocks == 4) then score = score + 50 complete () end

Passaggio 5: Ripristina timer

Dopo aver svuotato i contenitori pieni, il punteggio viene impostato sul campo di testo nello stage, il timer viene resettato e viene chiamato un altro blocco.

 scoreTF.text = score timer.cancel (timerSource) timerSource = nil timerSource = timer.performWithDelay (3000, timesUp, 0) newBlock (false) fine

Passaggio 6: rimuovere i blocchi

Questa funzione cancella i blocchi nei contenitori e ripristina le variabili corrette per preparare il contenitore per i nuovi blocchi.

 function complete () media.playEventSound ('bell4.caf') removeBlocks () eventTarget.a = false eventTarget.b = false eventTarget.c = false eventTarget.d = false end function removeBlocks () if (eventTarget.name == ' up ') quindi per i = 1, 4 do display.remove (up.blocksGFX [i]) up.blocksGFX [i] = nil end up.blocks = 0 elseif (eventTarget.name ==' right ') quindi per i = 1, 4 do display.remove (right.blocksGFX [i]) right.blocksGFX [i] = nil end right.blocks = 0 elseif (eventTarget.name == 'down') quindi per i = 1, 4 do display .remove (down.blocksGFX [i]) down.blocksGFX [i] = nil end down.blocks = 0 elseif (eventTarget.name == 'left') quindi per i = 1, 4 do display.remove (left.blocksGFX [i]) left.blocksGFX [i] = nil end left.blocks = 0 end end

Passaggio 7: avviso

La funzione di avviso viene eseguita quando il giocatore non ha più vite, visualizza il punteggio finale raggiunto e aggiunge un ascoltatore per tornare alla schermata del titolo.

 function alert () timer.cancel (timerSource) timerSource = nil native.showAlert ('Game Over', 'Il tuo punteggio:'? score, 'OK', alertHandler) end function alertHandler (e) if (e.action = = 'clic su') quindi se (e.index == 1) quindi restart () end end end

Passaggio 8: riavvio

La prossima funzione ricaricherà il gioco e tornerà al Vista del titolo.

 funzione restart (e) display.remove (gameView) Main () fine

Passaggio 9: chiama la funzione principale

Per iniziare inizialmente il gioco, theяPrincipaledeve essere chiamata. Con il codice sopra riportato, lo faremo qui:

 Principale()

Passaggio 10: schermata di caricamento

Il file Default.png è un'immagine che verrà visualizzata quando si avvia l'applicazione mentre iOS carica i dati di base per mostrare la schermata principale. Aggiungi questa immagine alla cartella sorgente del progetto, verrà automaticamente aggiunta dal complino Corona.


Passaggio 11: icona

Usando la grafica che hai creato prima ora puoi creare un'icona carina e di bell'aspetto. La dimensione dell'icona per l'icona dell'iPhone non retina è 57x57px, ma la versione retina è 114x114px e lo store iTunes richiede una versione 512x512px. Suggerisco di creare prima la versione 512? 512 e poi ridimensionare le altre dimensioni.

Non è necessario avere gli angoli arrotondati o il bagliore trasparente, iTunes e l'iPhone lo faranno per te.


Passaggio 12: test in simulatore

È tempo di fare il test finale. Apri il simulatore Corona, vai alla cartella del progetto, quindi fai clic su apri. Se tutto funziona come previsto, sei pronto per il passaggio finale!


Passaggio 13: Build

Nel simulatore Corona vai suFile> CreaE selezionare il dispositivo di destinazione. Compila i dati richiesti e clicca costruire. Attendi qualche secondo e la tua app sarà pronta per il test del dispositivo e / o l'invio per la distribuzione!


Conclusione

Sperimenta il risultato finale e prova a creare la tua versione personalizzata del gioco!
Spero ti sia piaciuta questa serie di tutorial e la trovi utile. Grazie per aver letto!