Crea un gioco basato su memoria sonora - Game Logic

Questa è la seconda puntata del nostro tutorial Corona SDK Sound Memory. Nel tutorial di oggi, aggiungeremo alla nostra interfaccia e all'interazione del gioco. Continuare a leggere!


Disponibile anche in questa serie:

  1. Crea un gioco di memoria basato su audio - Creazione di interfacce
  2. Crea un gioco basato su memoria sonora - Game Logic

Da dove siamo partiti ...

Assicurati di controllare la prima parte della serie per capire e preparare questo tutorial.


1. Avvia i pulsanti di ascolto

Questa funzione aggiunge gli ascoltatori necessari a Vista del titolo pulsanti.

 function startButtonListeners (action) if (action == 'add') then playBtn: addEventListener ('tap', showGameView) creditsBtn: addEventListener ('tap', showCredits) else playBtn: removeEventListener ('tap', showGameView) creditsBtn: removeEventListener ( 'tocca', mostraCrediti) fine

2. Mostra crediti

Il titoli di coda lo schermo viene mostrato quando l'utente tocca il Di pulsante, un ascoltatore tocco viene aggiunto alla vista crediti per rimuoverlo.

 function showCredits: tap (e) playBtn.isVisible = false creditsBtn.isVisible = false creditsView = 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 (creditsView, time = 300, y = display.contentHeight * 0.5 + creditsView.height, onComplete = function credits): addEventListener ('tap ', hideCredits) fine) fine

3. Nascondi crediti

Quando il titoli di coda lo schermo viene toccato, verrà intercettato e rimosso.

 function hideCredits: tap (e) transition.to (creditsView, time = 300, y = display.contentHeight, onComplete = function () creditsBtn.isVisible = true playBtn.isVisible = true creditsView: removeEventListener (visualizzazione 'tap', hideCredits) .remove (creditsView) creditsView = nil end) transition.to (title, time = 300, y = lastY); fine

4. Mostra vista gioco

Quando il Giocare Tocca il pulsante, la vista del titolo viene interpolata e rimossa rivelando la vista di gioco. Ci sono molte parti coinvolte in questa visualizzazione, quindi le suddivideremo nei passaggi successivi.

 function showGameView: tap (e) transition.to (titleView, time = 300, x = -titleView.height, onComplete = function () startButtonListeners ('rmv') display.remove (titleView) titleView = nil end)

5. Aggiungi pulsanti quadrati

Questo codice posiziona le immagini dei pulsanti di gioco sul palco.

 -- Aggiungi quadrati r.gfx = display.newImage ('red.png', 75, 155) g.gfx = display.newImage ('green.png', 165, 155) ye.gfx = display.newImage ('yellow.png ', 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. Messaggio di istruzioni

Le seguenti righe aggiungeranno il Istruzioni messaggio, mostralo per due secondi e poi svanisce.

 -- Istruzioni Messaggio local ins = display.newImage ('message.png', 61, 373) transition.from (ins, time = 200, alpha = 0.1, onComplete = function () timer.performWithDelay (2000, function () transition. a (ins, time = 200, alpha = 0.1, onComplete = function () display.remove (ins) ins = nil gameTimer = timer.performWithDelay (500, playLevel, #currentLevel) end) end) end)

7. Pulsante di controllo

Questo pulsante viene utilizzato per verificare l'input dell'utente e assicurarsi che sia uguale al livello dei suoni. È invisibile per impostazione predefinita.

 -- Check Button check = display.newImage ('checkBtn.png', 135, 406) check.isVisible = false

8. Ascoltatori di giochi

Questa funzione aggiunge gli ascoltatori necessari per avviare la logica di gioco.

 function gameListeners (action) if (action == 'add') then r.gfx: addEventListener ('tap', onTap) g.gfx: addEventListener ('tap', onTap) ye.gfx: addEventListener ('tap', onTap ) b.gfx: addEventListener ('tap', onTap) check: addEventListener ('tap', checkInput) else r.gfx: removeEventListener ('tap', onTap) g.gfx: removeEventListener ('tap', onTap) ye. gfx: removeEventListener ('tap', onTap) b.gfx: removeEventListener ('tap', onTap) check: removeEventListener ('tap', checkInput) gameTimer = nil end end

9. Funzione di livello di riproduzione

Questa funzione legge il livello attuale variabile per determinare quale livello giocare. Utilizza anche una transizione per puntare visivamente al pulsante associato al suono. Quando viene eseguita la sequenza di livelli, dai un'occhiata il pulsante diventa visibile.

 function playLevel () if (times <= #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. Registrare l'input dell'utente

Premendo i pulsanti al centro chiamerà questa funzione. Suonerà un suono e registrerà il suo valore nel userInput tavolo. Questa tabella verrà utilizzata nella funzione successiva per confrontare i suoni.

 funzione onTap (e) if (e.target.name == 'r') then table.insert (userInput, r.gfx) audio.play (rs) transition.from (e.target, time = 200, alpha = 0.1) elseif (e.target.name == 'g') then table.insert (userInput, g.gfx) audio.play (gs) transition.from (e.target, time = 200, alpha = 0.1 ) elseif (e.target.name == 'ye') then table.insert (userInput, ye.gfx) audio.play (ye.s) transition.from (e.target, time = 200, alpha = 0.1 ) elseif (e.target.name == 'b') then table.insert (userInput, b.gfx) audio.play (bs) transition.from (e.target, time = 200, alpha = 0.1) end fine

11. Controllare l'input

Questa funzione confronta i nomi dei pulsanti premuti con la tabella dei livelli e chiama un avviso con il messaggio corrispondente.

 function checkInput (e) check.isVisible = false per i = 1, #currentLevel do if (userInput [i] .name == currentLevel [i] .gfx.name) quindi correct = correct + 1 end end if (correct == #currentLevel) quindi alert ('win') else alert ('lose') end end

12. Avviso

Il Mettere in guardia la funzione crea una vista di avviso, la anima e termina la partita.

 function alert (action) gameListeners ('rmv') if (action == 'lose') then alertView = display.newImage ('lose.png', 110, 218) else alertView = display.newImage ('win.png', 110, 218) end transition.from (alertView, time = 200, alpha = 0.1) end

13. Chiamare la funzione principale

Per iniziare il gioco, il Principale la funzione deve essere chiamata. Lo faremo qui con il codice sopra riportato.

 Principale()

14. Schermata di caricamento

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


15. Icona

Usando la grafica creata in precedenza, ora puoi creare una bella icona. La dimensione dell'icona per un iPhone senza display retina è 57x57px, ma la versione retina è 114x114px e lo store iTunes richiede una versione 512x512px. Raccomando di creare prima la versione 512x512 e ridimensionarla per le altre dimensioni.

iTunes e l'iPhone creeranno gli angoli arrotondati e il bagliore trasparente.


16. Test in Simulator

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


17. Build

Nel Corona Simulator vai a File e Build e seleziona il tuo 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

In questa serie abbiamo appreso il caricamento del suono, la riproduzione e il confronto dei tavoli. Queste sono abilità che possono essere molto utili in un ampio numero di giochi.

Puoi sperimentare il risultato finale e provare a creare la tua versione personalizzata del gioco!

Spero ti sia piaciuta questa serie di tutorial e l'ho trovata utile. Grazie per aver letto!