Bygg et pokerspill i Corona Grensesnittoppsett

I denne todelte opplæringen vil jeg vise deg hvordan du bygger et pokerspill med Corona SDK. Du vil lære om berøringskontroller, tweening-elementer, timere, og hvordan du lager en tilpasset sorteringsfunksjon.

Introduksjon

I den første opplæringen vil vi fokusere på å sette opp prosjektet og skape brukergrensesnittet for spillet. For å få deg glade for dette prosjektet, er et skjermbilde av hvordan spillet vil se ut når det er ferdig.


Spillekortene er ikke inkludert i nedlastingsfilene. Hvis du vil følge med, kan du kjøpe kortsettet på Graphic River eller bruke et annet sett med kort. Dimensjonene til hvert kort er 75px x 105px, som oversetter til 150px x 210px for @ 2x størrelse.

Hvis du vil kjøre demoapplikasjonen til denne opplæringen, må du legge til kortet i prosjektets katalog. Bildene til kortene skal begynne med h, c, d, eller s, med et nummer vedlagt bokstaven (d1.png til d12.png, h1.png til h13.png, etc.).

Hvis du ønsker å jobbe med de originale vektorfilene, ble grafikken til pokermaskinen skapt av Andrei Marius og er tilgjengelig på VectorTuts +. Du er velkommen til å laste dem ned fra Vectortuts+.

1. Nytt prosjekt

Åpne Corona Simulator, klikk Nytt prosjekt, og konfigurer prosjektet som vist nedenfor, skriv inn følgende detaljer. Velg et sted for å lagre prosjektet ditt og klikk OK. Dette vil opprette en mappe med et antall ikoner og tre filer som er viktige for oss, main.lua, config.lua, og build.settings. Vi vil se på hver fil i de neste trinnene.


2. Build.Settings

De build.settings Filen er ansvarlig for prosjektets byggetidseiendommer. Åpne denne filen, fjern innholdet, og fyll den med følgende kodestykke.

 settings = orientation = default = "landscapeRight", støttet = "landscapeLeft", "landscapeRight",,

I build.settings, Vi setter standardretningen og begrenser programmet til bare støtte en landskapsorientering. Du kan lære hvilke andre innstillinger du kan inkludere i build.settings ved å utforske Corona-dokumentasjonen.

3. Config.lua

Config.lua-filene håndterer programmets konfigurasjon. Som vi gjorde med build.settings, åpne denne filen, fjern innholdet, og legg til følgende kode.

 application = content = width = 768, height = 1024, skala = "letterbox", fps = 30, imageSuffix = ["@ 2x"] = 2, - bilder med "@ 2x" vedlagt vil bli brukt til iPad 3

Dette angir standardbredde og høyde på skjermen, bruker letterbox å skalere bildene, setter rammer per sekund til 30, og bruker imageSuffix Innstilling for dynamisk bildevalg. Nedlastingsfilene for denne opplæringen inkluderer to filer for hvert bilde, imageName.png og [email protected]. iPads med en retina skjerm vil bruke @ 2x bilder, mens iPad 1 og 2 vil bruke vanlige bilder.

Du kan lære hvilke andre egenskaper du kan sette inn config.lua ved å sjekke ut Corona-dokumentasjonen.

4. Main.lua

De main.lua fil er filen som søknaden lastes først og bruker for å starte opp programmet. Vi legger all vår kode inn i denne filen. I de neste trinnene vil vi knytte ut en rekke funksjoner. Du bør legge dem alle til main.lua.

5. Skjul statuslinje

Vi ønsker ikke at statuslinjen skal vises i vår søknad. Legg til følgende for å linje til main.lua for å oppnå dette.

 display.setStatusBar (display.HiddenStatusBar)

6. Variabler

Den neste kodestykket erklærer variablene vi trenger gjennom hele prosjektet. Les kommentarene for å bedre forstå hva hver variabel brukes til. De fleste av dem er selvforklarende.

 local pokerMachine = display.newImage ("cardsBG.png", true) pokerMachine.anchorX, pokerMachine.anchorY = 0,0 - Angir bildene ankre det bruker de nye grafiske 2.0 lokale draktene = "h", "d" "c", "s"; - hjerter = h, diamanter = d, klubber = c, spader = s lokale dekk; - Dekk av kort lokale spillerHand =  --Holds spillerne kort lokale cashOutButton lokal betMaxButton lokal betButton lokal dealButton local holdButtons =  --Holdes "Hold" -knappene local isNewGame = true local MAXBETAMOUNT = 15 - Maks antall spilleren kan satse på lokale instruksjonerText lokalt betAmount = 0 - Hvor mye spilleren har satset så langt lokal creditText lokal betTekst local winText lokale spillText local gameData =  - Dette vil inneholde spilldata - Kredittene og antall spill som spilles

7. oppsett

De oppsett funksjonen brukes til å sette opp spillets eiendeler og starte spillet.

 funksjon oppsett () slutten

8. setupButtons

Denne funksjonen setter opp knappene i spillet.

 funksjon setupButtons () end

9. setupTextFields

Denne funksjonen setter opp tekstfeltet som brukes i programmet.

 funksjon setupTextFields () end

10. enableDealButton

Som navnet indikerer, aktiverer denne funksjonen avtaleknappen.

 funksjon enableDealButton () end

11. disableDealButton

Denne funksjonen deaktiverer avtaleknappen.

 funksjon deaktivereDealButton () slutten

12. enableBetButtons

Denne funksjonen gjør det mulig å satse på knappene.

 funksjon enableBetButtons () end

1. 3. disableBetButtons

Denne funksjonen deaktiverer innsatsknappene.

 funksjon deaktivereBetButtons () slutten

14. enableHoldButtons

Denne funksjonen aktiverer venteknappene.

 funksjon enableHoldButtons () end

15. disableHoldButtons

Denne funksjonen aktiverer venteknappene.

 funksjon deaktivereHoldButtons () slutten

16. createDeck

Denne funksjonen skaper et kort kort.

 funksjon createDeck () end

17. holdCard

Denne funksjonen går gjennom spillerens hånd og bestemmer hvilke kort som holdes.

 funksjon holdCard (event) slutten

18. betMax

Denne funksjonen kalles når spilleren satser maksimumsbeløpet.

 funksjon betMax () ende

19. vedde

Denne funksjonen kalles når spilleren plasserer en faktisk innsats.

 funksjonssats () ende

20. doDeal

Denne funksjonen håndterer håndtering av kortene.

 funksjon doDeal () ende

21. dealInitialHand

Denne funksjonen omhandler den første hånden.

 funksjon dealInitialHand () slutten

22. dealNewCards

Denne funksjonen omhandler den andre delen av hånden.

 funksjon dealNewCards () slutten

23. getHand

Denne funksjonen viser ut spillerenes hånd.

 funksjon getHand () ende

24. newGame

Denne funksjonen nullstiller alle variablene og starter et nytt spill.

 funksjonen newGame () slutten

25. awardWinnings

Denne funksjonen tildeler spilleren pengene pengene vant.

 funksjon awardWinnings (theHand, theAward) slutten

26. resetCardsYPosition

Denne funksjonen nullstiller kortene ' y posisjon etter at en spiller har et kort.

 funksjon resetCardsYPosition () slutten

27. generateCard

Denne funksjonen genererer et tilfeldig kort.

 funksjonen generateCard () slutten

28. getCard

Denne funksjonen ringer getGenerateCard og legger den på skjermen.

 funksjon getCard (indeks) ende

29. Gjennomføring setupButtons

Nå som vi har alle funksjonene stubbet ut, skal vi begynne å implementere dem. Implementere setupButtons som vist under.

 funksjonoppsettButtons () cashOutButton = display.newImage ("buttonCashOut.png", 89.572) cashOutButton.anchorY, cashOutButton.anchorY = 0,0 lokal holdButtonPosition = 186 for i = 1,5 gjør lokal tempHoldButton = display.newImage ("buttonHold1. png ", holdButtonPosition + (93 * (i-1)), 572) tempHoldButton.buttonNumber = jeg tempHoldButton.anchorX, tempHoldButton.anchorY = 0,0 table.insert (holdButtons, tempHoldButton) slutten 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 instructionsText = display.newText (" ", 400,400, native.systemFont, 30) instructionsText: setFillColor (0,0,0) enableBetButtons

I setupButtons, Vi initialiserer knappene våre som nye bilder. Vi lagrer tempHoldButtons i et bord slik at vi kan referere dem uten å måtte opprette fem separate variabler. Vi oppretter også instructionsText og aktiver innsatsknappene. De vise objektet har en metode som heter newImage, som aksepterer banen til bildet, samt en x og y-posisjon. Som nevnt i dokumentasjonen, er newImage Metoden har flere valgfrie parametere. I denne opplæringen bruker vi den nye Graphics 2.0-klassen, så vi må sette bildene anchorX og anchorY posisjoner. Du kan lære mer om å migrere gamle prosjekter for å bruke den nye Graphics 2.0-klassen i Corona-dokumentasjonen.

Legg til et anrop til oppsett på slutten av main.lua og ring deretter setupButtons innsiden oppsett.

 oppsett () - Legg til i slutten av "main.lua"
 funksjonoppsett () setupButtons () end

Hvis du skulle teste din søknad nå, bør du se grensesnittet sammen med knappene.

30. Gjennomføring setupTextFields

I setupTextFields, Vi setter opp tekstfeltene i programmet. Ta en titt på implementeringen nedenfor.

 funksjon 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) end

De vise objektet har metoden newText som tar som parametere den tekst, x og y koordinater, skrift og skriftstørrelse. De newText Metoden tar flere valgfrie parametere, som du kan utforske i dokumentasjonen. Vi bruker den nye setFillColor metode fra Graphics 2.0, som aksepterer prosentandeler. I dette eksemplet setter vi tekstfeltene til røde. Ved å sette inn rette inn eiendom til Ikke sant, teksten vil bli justert til høyre i tekstfeltet. Du må sette bredde eiendom også hvis du bruker rette inn. Anrop setupTextFields i oppsett.

 funksjon oppsett () setupButtons () setupTextFields () slutten

Hvis du kjører programmet enda en gang, vil du ikke merke noen endring da tekstfeltene er tomme for øyeblikket. De er klar for litt tekst skjønt.

31. randomSeed

Fordi vi ønsker å få et tilfeldig kort, må vi frø ut tilfeldiggeneratoren. Hvis vi ikke ville gjøre dette, ville vi ende opp med samme tilfeldighet igjen og igjen. Skriv inn følgende kodestykke i vår oppsett funksjon.

 funksjon oppsett () math.randomseed (os.time ()) setupButtons () setupTextFields () ende

32. createDeck

Gjennomføringen av createDeck funksjonen er heller ikke for vanskelig heller. Vi sløyfe gjennom drakter bord og legg til et nummer fra 1 til 1. 3 til det. Vi legger det inn i dekkbordet. Bildene til kortene våre heter d1.png, h3.png, etc. med 1 Å være ess og 1. 3 å være kongen.

 funksjonen createDeck () dekk = ; for i = 1, 4 gjør for j = 1, 13 gjør lokale tempCard = passer [i] ... j table.insert (dekk, tempCard) endeendens ende

h2> Konklusjon

Dette bringer den første delen av denne todelte opplæringen til slutt. I den andre delen vil vi fullføre spillet. Jeg håper å se deg der.