Creați un joc de memorie bazat pe sunet - joc de logică

Aceasta este a doua tranșă din tutorialul nostru Corona SDK Sound Memory. În tutorialul de astăzi, vom adăuga la interfața noastră și interacțiunea jocului. Citește mai departe!


Disponibile și în această serie:

  1. Creați un joc de memorie bazat pe sunet - crearea interfeței
  2. Creați un joc de memorie bazat pe sunet - joc de logică

Unde am plecat ...

Asigurați-vă că verificați partea întâi a seriei pentru a înțelege pe deplin și pentru a vă pregăti pentru acest tutorial.


1. Începeți ascultarea butoanelor

Această funcție adaugă ascultătorilor necesari Vizualizarea titlurilor butoane.

 funcția startButtonListeners (acțiune) dacă (action == 'add') atunci playBtn: addEventListener ('tap', showGameView) creditsBtn: addEventListener 'tap', showCredits) sfârșitul final

2. Afișați creditele

credite se afișează ecranul atunci când utilizatorul pictură Despre , se adaugă un ascultător de atingere în vizualizarea creditelor pentru al elimina.

 funcția showCredități: apăsați (e) playBtn.isVisible = credite falseBtn.isVisible = credite falseView = display.newImage ('credits.png', 0, display.contentHeight) lastY = title.y transition.to (title, time = 300 , y = display.contentHeight * 0.5 - title.height - 25) transition.to (crediteView, time = 300, y = display.contentHeight * 0.5 + creditsView.height, onComplete = function () creditsView: addEventListener ', hideCredits) end end

3. Ascundeți creditele

Cand credite ecranul este lovit, va fi completat din scenă și scos.

 hideCredite: tap (e) transition.to (crediteView, time = 300, y = display.contentHeight, onComplete = function () creditsBtn.isVisible = true playBtn.isVisible = credite realeView: removeEventListener .remove (creditsView) creditsView = nil end) transition.to (titlu, timp = 300, y = lastY); Sfârșit

4. Afișați vizualizarea jocului

Cand Joaca butonul este apăsat, vizualizarea titlurilor este completată și eliminată dezvăluind vizualizarea jocului. Există multe părți implicate în această viziune, astfel încât le vom împărți în pașii următori.

 funcția showGameView: atingeți (e) transition.to (titleView, time = 300, x = -titleView.height, onComplete = function () startButtonListeners ('rmv') display.remove (titleView) titleView =

5. Adăugați butoane pătrat

Acest cod plasează imaginile butonului jocului în scenă.

 -- Adăugați pătrate r.gfx = display.newImage ('red.png', 75, 155) g.gfx = display.newImage ('green.png', 165, 155) ye.gfx = display.newImage (' ', 75, 245) b.gfx = display.newImage (' blue.png ', 165, 245) r.gfx.name =' r 'g.gfx.name =' g 'ye.gfx.name =' ye 'b.gfx.name =' b '

6. Mesaj de instrucțiuni

Următoarele linii vor adăuga instrucțiuni mesaj, arătați-l timp de două secunde și apoi deconectați-l.

 -- Instrucțiuni Mesaj local ins = display.newImage ('message.png', 61, 373) transition.from (ins, time = 200, alpha = 0.1, onComplete = function () timer.performWithDelay (2000, transition). (ins, time = 200, alpha = 0.1, onComplete = functie () display.remove (ins) ins = nil gameTimer = timer.performWithDelay (500, playLevel, #currentLevel)

7. Verificați butonul

Acest buton este folosit pentru a testa intrarea utilizatorului și pentru a vă asigura că acesta este egal cu sunetele de nivel. Este implicit invizibil.

 -- Verificați butonul de verificare = display.newImage ('checkBtn.png', 135, 406) check.isVisible = false

8. Ascultarea jocurilor

Această funcție adaugă ascultătorii necesari pentru a porni logica jocului.

 funcția gameListeners (acțiune) dacă (action == 'add') atunci r.gfx: addEventListener ('tap', onTap) g.gfx: addEventListener ('tap', onTap) ) b.gfx: addEventListener ('tap', onTap) verificați: addEventListener ('tap', checkInput) alt r.gfx: removeEventListener ('tap', onTap) g.gfx: removeEventListener ('tap', onTap) ye. gfx: removeEventListener ('atinge', onTap) b.gfx: removeEventListener ('atinge', onTap) verifica: removeEventListener ('tap', checkInput) gameTimer =

9. Funcția de redare a nivelului

Această funcție citește nivelul actual variabilă pentru a determina ce nivel să joace. De asemenea, utilizează o tranziție pentru a indica vizual butonul asociat sunetului. Când secvența de nivel a fost terminată Verifica butonul devine vizibil.

 funcția playLevel () dacă (de ori <= #currentLevel) then transition.from(currentLevel[times].gfx, time = 200, alpha = 0.1) audio.play(currentLevel[times].s) times = times + 1 end if(times == #currentLevel+1) then check.isVisible = true gameListeners('add') end end

10. Înregistrați intrarea utilizatorului

Apăsând butoanele din centru veți apela această funcție. Acesta va reda un sunet și va înregistra valoarea acestuia în userInput masa. Acest tabel va fi utilizat în următoarea funcție pentru a compara sunetele.

 funcția onTap (e) dacă (e.target.name == 'r') apoi table.insert (userInput, r.gfx) audio.play (rs) transition.from (e.target, time = 0.1) elseif (e.target.name == 'g') apoi table.insert (userInput, g.gfx) audio.play (gs) transition.from (e.target, time = 200, alpha = ) elseif (e.target.name == 'ye') apoi table.insert (userInput, ye.gfx) audio.play (ye.s) transition.from (e.target, time = 200, alpha = 0.1 ) elseif (e.target.name == 'b') apoi table.insert (userInput, b.gfx) audio.play (bs) transition.from (e.target, time = 200, alpha = 0.1 Sfârșit

11. Verificați intrarea

Această funcție compară numele butoanelor apăsate în tabelul de nivel și apelează o alertă cu mesajul corespunzător.

 funcția checkInput (e) check.isVisible = false pentru i = 1, #currentLevel do dacă (userInput [i] .name == currentLevel [i] .gfx.name) #currentLevel), apoi alertați ('win') alt alert ('lose') sfârșitul final

12. Alertă

Alerta funcția creează o vizualizare de alertă, o animă și termină jocul.

 ('rmv') if (action == 'lose') atunci alertView = display.newImage ('lose.png', 110, 218) altar alertView = display.newImage 110, 218) final transition.from (alertView, time = 200, alpha = 0.1)

13. Apelați funcția principală

Pentru a începe jocul, Principal funcția trebuie să fie numită. Vom face asta cu codul de mai sus.

 Principal()

Ecran de încărcare

Default.png fișierul este o imagine care va fi afișată chiar când porniți aplicația în timp ce iOS-ul î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 complilerul Corona.


15. Icon

Folosind grafica pe care ați creat-o înainte, puteți crea acum o pictogramă frumoasă. Dimensiunea pictogramei pentru un afișaj iPhone fără retină este de 57x57 px, însă versiunea retinei este 114x114px și magazinul iTunes necesită o versiune de 512x512px. Vă recomandăm să creați mai întâi versiunea 512x512 și să reduceți dimensiunile pentru celelalte dimensiuni.

iTunes și iPhone vor crea colțurile rotunjite și o strălucire transparentă.


16. Testarea în simulator

E timpul să facem testul final. Deschideți Simulatorul Corona, navigați în dosarul proiectului și faceți clic pe Deschideți. Dacă totul funcționează așa cum era de așteptat, sunteți gata pentru ultimul pas!


17. Construiți

În Simulatorul Corona mergeți la Fișier și 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 pregătită pentru testarea dispozitivului și / sau trimiterea pentru distribuire!


Concluzie

În această serie, am învățat despre încărcarea, jocul și compararea tabelului. Acestea sunt abilități care pot fi foarte utile într-un număr mare de jocuri.

Puteți experimenta rezultatul final și încercați să faceți versiunea personalizată a jocului!

Sper că ți-a plăcut această serie de tutori și ți-a dat de ajutor. Mulțumesc că ați citit!

Cod