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.
Assicurati di controllare parte 1 e parte 2 della serie per comprendere appieno questo tutorial.
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
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')
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
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
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
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
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
La prossima funzione ricaricherà il gioco e tornerà al Vista del titolo.
funzione restart (e) display.remove (gameView) Main () fine
Per iniziare inizialmente il gioco, theяPrincipaledeve essere chiamata. Con il codice sopra riportato, lo faremo qui:
Principale()
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.
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.
È 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!
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!
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!