Welkom bij de laatste tutorial in onze Frenzic-achtige gameserie! In deze zelfstudie behandelen we de logica van de blokken en de stappen om de uiteindelijke app te bouwen.
Controleer alsjeblieft deel 1 en deel 2 van de serie om deze tutorial volledig te begrijpen.
Deze functie wordt uitgevoerd wanneer de speler op een van de containervierkanten tikt. Het controleert in feite of de juiste positie beschikbaar is om het vierkant te plaatsen en plaatst het als het waar is. De functie in de volgende stap wordt aangeroepen wanneer het blok wordt geplaatst.
functie plaatsBlok: tik (e) eventTarget = e.target - Controleer of positie beschikbaar is lokale positie = currentXPosition, currentYPosition if (positie [1] == 5 en positie [2] == 5 en eventTarget.a == false) blokkeert vervolgens [#blocks] .x = eventTarget.x + positie [1] blokken [#blocks] .y = eventTarget.y + positie [2] eventTarget.a = true blockPlaced () elseif (positie [1] = = 35 en positie [2] == 5 en eventTarget.b == false) blokkeert vervolgens [#blocks] .x = eventTarget.x + positie [1] blokken [#blocks] .y = eventTarget.y + positie [2 ] eventTarget.b = true blockPlaced () elseif (positie [1] == 5 en positie [2] == 35 en eventTarget.c == false) blokkeert vervolgens [#blocks] .x = eventTarget.x + positie [1 ] blokkeert [#blocks] .y = eventTarget.y + positie [2] eventTarget.c = true blockPlaced () elseif (positie [1] == 35 en positie [2] == 35 en eventTarget.d == false) blokkeert vervolgens [#blocks] .x = eventTarget.x + positie [1] blokken [#blocks] .y = eventTarget.y + positie [2] eventTarget.d = true blockPlaced () end end
Wanneer het blok in de container wordt geplaatst, voegen we het blok toe aan de array die de opgeslagen blokken in die container bijhoudt. Dit helpt ons te bepalen wanneer de container vol is. We spelen ook een geluid en verhogen de score met één telkens wanneer een blok wordt geplaatst.
function blockPlaced () - Push-blok naar containers blokkeert array als (eventTarget.name == 'up') dan table.insert (up.blocksGFX, blokkeert [#blocks]) up.blocks = up.blocks + 1 elseif (eventTarget .name == 'right') en vervolgens table.insert (right.blocksGFX, blokkeert [#blocks]) right.blocks = right.blocks + 1 elseif (eventTarget.name == 'down') en vervolgens table.insert (down. blocksGFX, blokkeert [#blocks]) down.blocks = down.blocks + 1 elseif (eventTarget.name == 'left') then table.insert (left.blocksGFX, blokkeert [#blocks]) left.blocks = left.blocks + 1 einde - Score score = score + 1 - Geluid media.playEventSound ('bell.caf')
De volgende code controleert of de container is gevuld door een blok met één kleur met behulp van de containergroep. Het verhoogt de score met 150 en speelt het bijbehorende geluid af. Een functie om de blokken te verwijderen wordt genoemd-we zullen die functie in de volgende stappen creëren.
if (up.blocks == 4) then if (up.blocksGFX [1] .name == up.blocksGFX [2] .name and up.blocksGFX [2] .name == up.blocksGFX [3] .name en up.blocksGFX [3] .name == up.blocksGFX [4] .name) scoren vervolgens = score + 150 voltooid () end elseif (right.blocks == 4) then if (right.blocksGFX [1] .name = = right.blocksGFX [2] .name en right.blocksGFX [2] .name == right.blocksGFX [3] .name en right.blocksGFX [3] .name == right.blocksGFX [4] .name) scoren dan = score + 150 voltooid () end elseif (down.blocks == 4) then if (down.blocksGFX [1] .name == down.blocksGFX [2] .name en down.blocksGFX [2] .name == down .blocksGFX [3] .name en down.blocksGFX [3] .name == down.blocksGFX [4] .name) scoren dan score + 150 voltooid () end elseif (left.blocks == 4) then if (left .blocksGFX [1] .name == left.blocksGFX [2] .name en left.blocksGFX [2] .name == left.blocksGFX [3] .name en left.blocksGFX [3] .name == left.blocksGFX [4] .name) scoor vervolgens = score + 150 compleet () end-end
Deze code wordt uitgevoerd als de container vol is, maar de blokken binnenin hebben niet dezelfde kleur.
if (up.blocks == 4 of right.blocks == 4 of down.blocks == 4 of left.blocks == 4) scoor vervolgens = score + 50 compleet () einde
Nadat de volle containers zijn gewist, wordt de score in de fase ingesteld op het tekstveld, wordt de timer gereset en wordt een ander blok opgeroepen.
scoreTF.text = score timer.cancel (timerSource) timerSource = nil timerSource = timer.performWithDelay (3000, timesUp, 0) newBlock (false) einde
Deze functies wissen de blokken in de containers en stellen de juiste variabelen opnieuw in om de container voor te bereiden op nieuwe blokken.
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 ') en dan voor i = 1, 4 doen display.remove (up.blocksGFX [i]) up.blocksGFX [i] = nul end up.blocks = 0 elseif (eventTarget.name ==' right ') dan voor i = 1, 4 doen display.remove (right.blocksGFX [i]) right.blocksGFX [i] = nul einde right.blocks = 0 elseif (eventTarget.name == 'down') en dan voor i = 1, 4 wel .remove (down.blocksGFX [i]) down.blocksGFX [i] = nul einde down.blocks = 0 elseif (eventTarget.name == 'left') en dan voor i = 1, 4 do display.remove (left.blocksGFX [i]) left.blocksGFX [i] = nul einde left.blocks = 0 end end
De waarschuwingsfunctie wordt uitgevoerd wanneer de speler geen levens heeft, het geeft de uiteindelijke score weer en voegt een luisteraar toe om terug te keren naar het titelscherm.
function alert () timer.cancel (timerSource) timerSource = nil native.showAlert ('Game Over', 'Your Score:'? score, 'OK', alertHandler) end function alertHandler (e) if (e.action = = 'geklikt') en als dan (e.index == 1) herstart () einde end end
De volgende functie zal de game opnieuw laden en terugkeren naar de Titelweergave.
functie opnieuw opstarten (e) display.remove (gameView) Main () end
Om het spel in eerste instantie te starten, is theяHoofdEr moet een functie worden aangeroepen. Met de bovenstaande code op zijn plaats, doen we dat hier:
Hoofd()
Het bestand Default.png is een afbeelding die juist wordt weergegeven wanneer u de toepassing start terwijl de iOS de basisgegevens laadt om het hoofdscherm weer te geven. Voeg deze afbeelding toe aan uw projectbronmap en deze wordt automatisch toegevoegd door de Corona-compileermachine.
Met behulp van de afbeeldingen die u eerder hebt gemaakt, kunt u nu een mooi en goed uitziend pictogram maken. De pictogramgrootte voor het niet-retina-iPhone-pictogram is 57x57px, maar de netvliesversie is 114x114px en de iTunes-winkel heeft een 512x512px-versie nodig. Ik stel voor eerst de 512- 512-versie te maken en vervolgens de overige formaten te verkleinen.
Het hoeft niet de afgeronde hoeken of de transparante schittering te hebben, iTunes en de iPhone zullen dat voor je doen.
Het is tijd om de laatste test te doen. Open de Corona Simulator, blader naar uw projectmap en klik vervolgens op Openen. Als alles werkt zoals verwacht, bent u klaar voor de laatste stap!
Ga in de Corona Simulator naarBestand> Builden selecteer je doelapparaat. Vul de vereiste gegevens in en klik op bouwen. Wacht een paar seconden en uw app is gereed voor apparaattesten en / of verzending voor distributie!
Experimenteer met het eindresultaat en probeer je aangepaste versie van het spel te maken!
Ik hoop dat je deze tutorialserie leuk vond en het nuttig vond. Bedankt voor het lezen!