In questo tutorial in due parti, ti mostrerò come costruire un gioco di poker usando il Corona SDK. Imparerai a conoscere i controlli tattili, gli elementi di interpolazione, i timer e come creare una funzione di ordinamento personalizzata.
Nel primo tutorial, ci concentreremo sull'impostazione del progetto e sulla creazione dell'interfaccia utente per il gioco. Per essere entusiasti di questo progetto, di seguito è riportato uno screenshot di come apparirà il gioco una volta terminato.
Le carte da gioco non sono incluse nei file di download. Se si desidera seguire, è possibile acquistare il set di carte su Graphic River o utilizzare un altro set di carte. Le dimensioni di ogni carta sono 75 px x 105 px
, che si traduce in 150 px x 210 px
per il @ 2x
taglia.
Se desideri eseguire l'applicazione demo di questo tutorial, devi aggiungere la scheda alla directory del progetto. Le immagini per le carte dovrebbero iniziare con h, c, d, o S, con un numero aggiunto alla lettera (d1.png a d12.png, h1.png a h13.png, eccetera.).
Se vuoi lavorare con i file vettoriali originali, la grafica per la macchina da poker è stata creata da Andrei Marius e sono disponibili su VectorTuts +. Sentiti libero di scaricarli da Vectortuts+.
Aprire il simulatore Corona, fare clic Nuovo progetto, e configurare il progetto come mostrato di seguito inserire i seguenti dettagli. Seleziona una posizione per salvare il tuo progetto e clicca ok. Questo creerà una cartella con un numero di icone e tre file che sono importanti per noi, main.lua, config.lua, e build.settings. Daremo un'occhiata a ciascun file nei prossimi passaggi.
Il build.settings il file è responsabile delle proprietà del tempo di costruzione del progetto. Apri questo file, rimuovi il suo contenuto e compilalo con il seguente frammento di codice.
settings = orientation = default = "landscapeRight", supportato = "landscapeLeft", "landscapeRight",,
Nel build.settings, stiamo impostando l'orientamento predefinito e limitando l'applicazione a solo supportare un orientamento orizzontale. Puoi scoprire quali altre impostazioni puoi includere in build.settings esplorando la Corona Documentation.
I file config.lua gestiscono la configurazione dell'applicazione. Come abbiamo fatto con build.settings, aprire questo file, rimuovere il suo contenuto e aggiungere il seguente codice.
application = content = width = 768, height = 1024, scale = "letterbox", fps = 30, imageSuffix = ["@ 2x"] = 2, - le immagini con "@ 2x" aggiunte verranno utilizzate per iPad 3
Questo imposta la larghezza e l'altezza predefinite dello schermo, utilizza letterbox per ridimensionare le immagini, imposta i fotogrammi al secondo 30
, e usa il imageSuffix
impostazione per la selezione dinamica dell'immagine. I file di download per questo tutorial includono due file per ogni immagine, imagename.png e [email protected]. Gli iPad con display retina useranno il @ 2x immagini, mentre l'iPad 1 e 2 useranno le immagini normali.
Puoi scoprire quali altre proprietà puoi impostare config.lua controllando la documentazione Corona.
Il main.lua file è il file che l'applicazione carica per primo e utilizza per avviare l'applicazione. Inseriremo tutto il nostro codice in questo file. Nei prossimi passi, elimineremo una serie di funzioni. Dovresti aggiungerli tutti a main.lua.
Non vogliamo che la barra di stato mostri nella nostra applicazione. Aggiungi il seguente per allineare a main.lua per realizzare questo.
display.setStatusBar (display.HiddenStatusBar)
Il prossimo snippet di codice dichiara le variabili di cui avremo bisogno per tutto il progetto. Leggi i commenti per capire meglio a cosa serve ciascuna variabile. Molti di loro sono auto-esplicativi.
pokerMachine locale = display.newImage ("cardsBG.png", vero) pokerMachine.anchorX, pokerMachine.anchorY = 0,0 - Imposta le ancore di immagini che usa le nuove versioni locali di Graphics 2.0 = "h", "d", "c", "s"; - cuori = h, quadri = d, fiori = c, spades = s mazzo locale; - Il mazzo di carte giocatore localeHand = --Tenuta le carte giocatori locale cashOutButton locale betMaxButton locale betButton locale dealButton locale holdButtons = --Tiene premuto il pulsante "Hold" local isNewGame = true local MAXBETAMOUNT = 15 - Importo massimo il giocatore può scommettere istruzioni localiTesto locale betAmount = 0 - Quanto il giocatore ha scommesso fino a qui locale creditText locale betText locale winText local gamesText local gameData = - Questo terrà i dati di gioco - I crediti e il numero di partite giocate
impostare
Il impostare
la funzione viene utilizzata per impostare le risorse di gioco e avviare il gioco.
fine funzione setup ()
setupButtons
Questa funzione imposta i pulsanti nel gioco.
funzione setupButtons () end
setupTextFields
Questa funzione imposta il campo di testo utilizzato nell'applicazione.
function setupTextFields () end
enableDealButton
Come indica il nome, questa funzione abilita il pulsante di offerta.
funzione enableDealButton () fine
disableDealButton
Questa funzione disabilita il pulsante Deal.
function disableDealButton () end
enableBetButtons
Questa funzione abilita i pulsanti di scommessa.
funzione enableBetButtons () end
disableBetButtons
Questa funzione disabilita i pulsanti di scommessa.
funzione disableBetButtons () end
enableHoldButtons
Questa funzione abilita i pulsanti di attesa.
funzione enableHoldButtons () end
disableHoldButtons
Questa funzione abilita i pulsanti di attesa.
function disableHoldButtons () end
createDeck
Questa funzione crea un mazzo di carte.
funzione createDeck () end
holdCard
Questa funzione passa attraverso la mano del giocatore e determina quali carte vengono trattenute.
funzione holdCard (evento) fine
betMax
Questa funzione è chiamata quando il giocatore punta il massimo.
funzione betMax () fine
scommessa
Questa funzione è chiamata quando il giocatore piazza una scommessa reale.
function bet () end
doDeal
Questa funzione gestisce la gestione delle carte.
funzione doDeal () fine
dealInitialHand
Questa funzione distribuisce la mano iniziale.
funzione dealInitialHand () fine
dealNewCards
Questa funzione tratta la seconda parte della mano.
funzione dealNewCards () fine
getHand
Questa funzione individua la mano del giocatore.
funzione getHand () fine
nuovo gioco
Questa funzione ripristina tutte le variabili e avvia una nuova partita.
funzione newGame () fine
awardWinnings
Questa funzione assegna al giocatore il denaro vinto.
funzione awardWinnings (theHand, theAward) fine
resetCardsYPosition
Questa funzione ripristina le carte y
posizione dopo che un giocatore ha una carta.
function resetCardsYPosition () fine
generateCard
Questa funzione genera una carta casuale.
funzione generateCard () fine
getCard
Questa funzione chiama getGenerateCard
e lo mette sullo schermo.
funzione getCard (indice) fine
setupButtons
Ora che abbiamo eliminato tutte le nostre funzioni, inizieremo a implementarle. Strumento setupButtons
come mostrato di seguito.
function setupButtons () cashOutButton = display.newImage ("buttonCashOut.png", 89,572) cashOutButton.anchorX, cashOutButton.anchorY = 0,0 local holdButtonPosition = 186 per i = 1,5 do tempHoldButton locale = display.newImage ("buttonHold1. png ", holdButtonPosition + (93 * (i-1)), 572) tempHoldButton.buttonNumber = i tempHoldButton.anchorX, tempHoldButton.anchorY = 0,0 table.insert (holdButtons, tempHoldButton) end betMaxButton = display.newImage (" buttonBetMax .png ", 679,572) betMaxButton.anchorX, betMaxButton.anchorY = 0,0 betButton = display.newImage (" buttonBet.png ", 775,572) betButton.anchorX, betButton.anchorY = 0,0 dealButton = display.newImage (" buttonDeal .png ", 869.572) dealButton.anchorX, dealButton.anchorY = 0,0 instructionText = display.newText (" ", 400,400, native.systemFont, 30) instructionsText: setFillColor (0,0,0) enableBetButtons () fine
Nel setupButtons
, inizializziamo i nostri pulsanti come nuove immagini. Conserviamo il tempHoldButtons
in una tabella in modo che possiamo fare riferimento a loro senza dover creare cinque variabili separate. Abbiamo anche impostato instructionsText
e abilitare i pulsanti di scommessa. Il display
l'oggetto ha un metodo chiamato nuova immagine
, che accetta il percorso dell'immagine e una posizione xey. Come menzionato nella documentazione, il nuova immagine
il metodo ha diversi parametri opzionali. In questo tutorial, stiamo usando la nuova classe Graphics 2.0, quindi dobbiamo impostare le immagini anchorX
e anchorY
posizioni. È possibile ottenere ulteriori informazioni sulla migrazione di vecchi progetti per utilizzare la nuova classe Graphics 2.0 nella documentazione Corona.
Aggiungi una chiamata a impostare
alla fine di main.lua e poi chiama setupButtons
dentro impostare
.
setup () - Aggiungi alla fine di "main.lua"
funzione setup () setupButtons () end
Se dovessi testare la tua applicazione ora, dovresti vedere l'interfaccia insieme ai pulsanti.
setupTextFields
Nel setupTextFields
, installiamo i campi di testo nell'applicazione. Dai un'occhiata alla sua implementazione qui sotto.
function setupTextFields () instructionsText = display.newText ("", 400,400, native.systemFont, 30) instructionsText: setFillColor (0,0,0) creditText = display.newText ("", 800,185, native.SystemFont, 22) creditText. width = 150 creditText.align = "right" creditText: setFillColor (255,0,0) betText = display.newText ("", 800,270, native.SystemFont, 22) betText.width = 150 betText.align = "right" betText : setFillColor (255,0,0) winText = display.newText ("", 800,355, native.SystemFont, 22) winText.width = 150 winText.align = "right" winText: setFillColor (255,0,0) gamesText = display.newText ("", 800,440, native.SystemFont, 22) gamesText.width = 150 gamesText.align = "right" gamesText: setFillColor (255,0,0) fine
Il display
l'oggetto ha il metodo newText
che prende come parametri il testo
, X
e y
coordinate, il tipo di carattere e la dimensione del carattere. Il newText
metodo prende diversi parametri opzionali, che puoi esplorare nella documentazione. Stiamo usando il nuovo SetFillColor
metodo da Graphics 2.0, che accetta percentuali. In questo esempio, impostiamo i campi di testo in rosso. Impostando il allineare
proprietà a destra
, il testo sarà allineato a destra all'interno del campo di testo. È necessario impostare il larghezza
proprietà pure se si sta utilizzando allineare
. Chiamata setupTextFields
nel impostare
.
funzione setup () setupButtons () setupTextFields () end
Se esegui l'applicazione ancora una volta, non noterai alcuna modifica poiché i campi di testo sono vuoti al momento. Sono comunque pronti per un po 'di testo.
randomSeed
Perché vogliamo ottenere una carta a caso, dobbiamo seminare il generatore casuale. Se non lo faremmo, finiremmo con la stessa casualità più e più volte. Inserisci il seguente frammento di codice all'interno del nostro impostare
funzione.
function setup () math.randomseed (os.time ()) setupButtons () setupTextFields () end
createDeck
L'implementazione del createDeck
la funzione non è neanche troppo difficile. Passiamo attraverso il tute
tabella e aggiungere un numero da 1
a 13
ad esso. Lo inseriamo quindi nella tabella del mazzo. Le immagini per le nostre carte sono nominate d1.png, h3.png, ecc. con 1
essere l'asso e il 13
essere il re.
function createDeck () deck = ; per i = 1, 4 do per j = 1, 13 do tempCard locale = semi [i] ... j table.insert (deck, tempCard) end end end
h2> Conclusione
Questo chiude la prima parte di questo tutorial in due parti. Nella seconda parte, finiremo il gioco. Spero di vedervi lì.