Bine ați venit la ultimul tutorial din seria de jocuri Brick Breaker! În acest tutorial, vom gestiona logica pentru coliziuni rămase, vom verifica stările de câștig și pierderi, nivelurile de schimbare și multe altele.
Asigurați-vă că ați citit partea 1 și partea 2 din această serie pentru a înțelege pe deplin codul prezentat în acest tutorial.
Când mingea se ciocnește cu o cărămidă, vom folosi aceeași tehnică aplicată la paleta pentru a determina partea pe care o va urma mingea:
funcția removeBrick (e) - Verificați care parte a cărămizii lovit mingea, stânga, dreapta dacă (e.other.name == "cărămidă" și (ball.x + ball.width * 0.5) < (e.other.x + e.other.width * 0.5)) then xSpeed = -5 elseif(e.other.name == 'brick' and (ball.x + ball.width * 0.5) >= (e.other.x + e.other.width * 0.5)), apoi xSpeed = 5 sfârșitul final
Atunci când o cărămidă este lovită, vom folosi celălalt parametru al lui coliziune eveniment pentru a afla exact ce cărămidă a fost lovită și apoi scoateți-o din etapa și grupul de cărămizi:
-- Bounce, Eliminați dacă (e.other.name == 'cărămidă') apoi ySpeed = ySpeed * -1 e.other: removeSelf () e.other = nil bricks.numChildren = bricks.numCopii - 1
Fiecare lovitură de cărămidă va adăuga 100 de puncte la scor. Scorul va fi luat de la constanta scorului și va fi adăugat scorului curent ca text.
scor = scor + 1
scoreNum.text = scor * SCORE_CONST
scoreNum: setReferencePoint (display.CenterLeftReferencePoint)
scoreNum.x = 54
Sfârșit
Acest cod verifică dacă mai sunt mai multe cărămizi de pe scenă și afișează mesajul "ați câștigat" dacă nu:
în cazul în care (bricks.numChildren < 0) then alert(' You Win!', ' Next Level ?') gameEvent = 'win' end end
Viteza mingii este determinată de xSpeed și ySpeed variabile. Cand Actualizați funcția este executată, mingea începe să se deplaseze folosind aceste valori pentru plasarea pe fiecare cadru.
actualizare funcție (e) - Mingea de mișcare ball.x = ball.x + xSpeed ball.y = ball.y + ySpeed
Acest cod verifică coliziunea peretelui cu mingea și răspunde prin trimiterea mingii în direcția opusă atunci când este necesar:
în cazul în care (ball.x < 0) then ball.x = ball.x + 3 xSpeed = -xSpeed end--Left if((ball.x + ball.width) > display.contentWidth) apoi ball.x = ball.x - 3xSpeed = -xSpeed sfârșit - dreapta dacă (ball.y < 0) then ySpeed = -ySpeed end--Up
O instrucțiune if este utilizată pentru a verifica dacă paleta nu are mingea. Dacă este adevărat, este afișată o alertă prin care se solicită utilizatorului dacă dorește să încerce din nou.
daca (ball.y + ball.height> paddle.y + paddle.height) atunci alerta ('You Lose', 'Joaca din nou?') gameEvent = 'pierde' end-down / lose
Ecranul Alert afișează informațiile despre starea jocului. Se afișează când se ajunge la un eveniment câștig / pierdere.
În această funcție se folosesc doi parametri:
('alertBox.png', 90, 202) transition.from (caseta, time = time) =================================================================================================================== (T, 0, 0, 'akashi', 19) titleTF: setTextColor (254,203,50) titleTF: setReferencePoint (display.CenterReferencePoint ) titleTF.x = display.contentCenterX titluTF.y = display.contentCenterY - 15 msgTF = display.newText (m, 0, 0, 'akashi', 12) msgTF: setTextColor (254,203,50) msgTF: setReferencePoint (display.CenterReferencePoint ) msgTF.x = display.contentCenterX msgTF.y = caseta display.contentCenterY + 15: addEventListener ('tap', restart) alertScreen = display.newGrup () alertScreen: insert (alertBg) alertScreen: titleTF) alertScreen: inserare (msgTF) sfârșit
Următoarea funcție verifică starea jocului (câștigă, pierde, terminat) și efectuează acțiunea corespunzătoare:
(e) dacă (gameEvent == 'win' și table.maxn (levels)> currentLevel), apoi currentLevel = currentLevel + 1 changeLevel (nivele [currentLevel]) - next levelNum.text = tostring (currentLevel) elseif gameEvent == 'win' și table.maxn (levels) <= currentLevel) then box:removeEventListener('tap', restart) alertScreen:removeSelf() alertScreen = nil alert(' Game Over', ' Congratulations!') gameEvent = 'finished' elseif(gameEvent == 'lose') then changeLevel(levels[currentLevel])--same level elseif(gameEvent == 'finished') then addMenuScreen() transition.from(menuScreen, time = 300, y = -menuScreen.height, transition = easing.outExpo) box:removeEventListener('tap', restart) alertScreen:removeSelf() alertScreen = nil currentLevel = scoreText:removeSelf() scoreText = nil scoreNum:removeSelf() scoreNum = nil levelText:removeSelf() levelText = nil levelNum:removeSelf() levelNum = nil ball:removeSelf() ball = nil paddle:removeSelf() paddle = nil score = 0 end end
Această funcție modifică actualizarea nivelului atunci când este necesar:
() - Ștergeți nivelul Caramida cărămizii: removeSelf () bricks.numChildren = 0 bricks = display.newGroup () - Eliminați caseta Alert: removeEventListener ('tap', restart) - Resetează poziția mingii și a paletei ball.x = (display.contentWidth * 0.5) - (minge.width * 0.5) ball.y = (paddle.y - paddle.height) - (minge.height * 0.5) -2 zbaturi. x = display.contentWidth * 0.5 - Redraw Cărămizi buildLevel (nivel) - Start fundal: addEventListener ('tap', startGame) sfârșit
Pentru a începe inițial jocul, Principal funcția trebuie să fie numită. Cu codul de mai sus, vom face asta aici:
Principal()
Fișierul Default.png este o imagine care va fi afișată chiar când porniți aplicația în timp ce iOS încarcă datele de bază pentru a afișa ecranul principal. Adăugați această imagine în folderul sursă al proiectului, acesta va fi adăugat automat de către compilatorul Corona.
Utilizând grafica pe care ați creat-o înainte de a crea acum o pictogramă frumoasă și bună. Dimensiunea pictogramei pentru pictograma non-retina iPhone este de 57x57px, dar versiunea retinei este 114x114px și magazinul iTunes necesită o versiune de 512x512px. Vă sugerăm să creați prima versiune 512x512 și apoi să scalați pentru alte dimensiuni.
Nu trebuie să aibă colțurile rotunjite sau strălucirea transparentă, iTunes și iPhone-ul vor face asta pentru tine.
Este timpul să faceți testul final. Deschideți Simulatorul Corona, navigați în dosarul proiectului, apoi faceți clic pe Deschidere. Dacă totul funcționează așa cum era de așteptat, sunteți gata pentru ultimul pas!
În Simulatorul Corona mergeți la Fișier> Construiți și selectați dispozitivul țintă. Completați datele solicitate și faceți clic pe construi. Așteptați câteva secunde și aplicația dvs. va fi gata pentru testarea dispozitivului și / sau trimiterea pentru distribuire!
Rezultatul final este un joc personalizabil și distractiv. Încercați să adăugați propriile grafice și niveluri personalizate, pentru a crea lucruri în ordine!
Sper că ți-a plăcut această serie de tutori și ți se pare util. Mulțumesc că ați citit!