Costruisci un gioco di poker in Corona configurazione dell'interfaccia

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.

introduzione

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+.

1. Nuovo progetto

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.


2. Build.Settings

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.

3. Config.lua

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.

4. Main.lua

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.

5. Nascondi barra di stato

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)

6. Variabili

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

7. impostare

Il impostare la funzione viene utilizzata per impostare le risorse di gioco e avviare il gioco.

 fine funzione setup ()

8. setupButtons

Questa funzione imposta i pulsanti nel gioco.

 funzione setupButtons () end

9. setupTextFields

Questa funzione imposta il campo di testo utilizzato nell'applicazione.

 function setupTextFields () end

10. enableDealButton

Come indica il nome, questa funzione abilita il pulsante di offerta.

 funzione enableDealButton () fine

11. disableDealButton

Questa funzione disabilita il pulsante Deal.

 function disableDealButton () end

12. enableBetButtons

Questa funzione abilita i pulsanti di scommessa.

 funzione enableBetButtons () end

13. disableBetButtons

Questa funzione disabilita i pulsanti di scommessa.

 funzione disableBetButtons () end

14. enableHoldButtons

Questa funzione abilita i pulsanti di attesa.

 funzione enableHoldButtons () end

15. disableHoldButtons

Questa funzione abilita i pulsanti di attesa.

 function disableHoldButtons () end

16. createDeck

Questa funzione crea un mazzo di carte.

 funzione createDeck () end

17. holdCard

Questa funzione passa attraverso la mano del giocatore e determina quali carte vengono trattenute.

 funzione holdCard (evento) fine

18. betMax

Questa funzione è chiamata quando il giocatore punta il massimo.

 funzione betMax () fine

19. scommessa

Questa funzione è chiamata quando il giocatore piazza una scommessa reale.

 function bet () end

20. doDeal

Questa funzione gestisce la gestione delle carte.

 funzione doDeal () fine

21. dealInitialHand

Questa funzione distribuisce la mano iniziale.

 funzione dealInitialHand () fine

22. dealNewCards

Questa funzione tratta la seconda parte della mano.

 funzione dealNewCards () fine

23. getHand

Questa funzione individua la mano del giocatore.

 funzione getHand () fine

24. nuovo gioco

Questa funzione ripristina tutte le variabili e avvia una nuova partita.

 funzione newGame () fine

25. awardWinnings

Questa funzione assegna al giocatore il denaro vinto.

 funzione awardWinnings (theHand, theAward) fine

26. resetCardsYPosition

Questa funzione ripristina le carte y posizione dopo che un giocatore ha una carta.

 function resetCardsYPosition () fine

27. generateCard

Questa funzione genera una carta casuale.

 funzione generateCard () fine

28. getCard

Questa funzione chiama getGenerateCard e lo mette sullo schermo.

 funzione getCard (indice) fine

29. Attuazione 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.

30. Attuazione 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.

31. 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

32. 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ì.