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.
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+.
Å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.
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.
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.
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.
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)
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
oppsett
De oppsett
funksjonen brukes til å sette opp spillets eiendeler og starte spillet.
funksjon oppsett () slutten
setupButtons
Denne funksjonen setter opp knappene i spillet.
funksjon setupButtons () end
setupTextFields
Denne funksjonen setter opp tekstfeltet som brukes i programmet.
funksjon setupTextFields () end
enableDealButton
Som navnet indikerer, aktiverer denne funksjonen avtaleknappen.
funksjon enableDealButton () end
disableDealButton
Denne funksjonen deaktiverer avtaleknappen.
funksjon deaktivereDealButton () slutten
enableBetButtons
Denne funksjonen gjør det mulig å satse på knappene.
funksjon enableBetButtons () end
disableBetButtons
Denne funksjonen deaktiverer innsatsknappene.
funksjon deaktivereBetButtons () slutten
enableHoldButtons
Denne funksjonen aktiverer venteknappene.
funksjon enableHoldButtons () end
disableHoldButtons
Denne funksjonen aktiverer venteknappene.
funksjon deaktivereHoldButtons () slutten
createDeck
Denne funksjonen skaper et kort kort.
funksjon createDeck () end
holdCard
Denne funksjonen går gjennom spillerens hånd og bestemmer hvilke kort som holdes.
funksjon holdCard (event) slutten
betMax
Denne funksjonen kalles når spilleren satser maksimumsbeløpet.
funksjon betMax () ende
vedde
Denne funksjonen kalles når spilleren plasserer en faktisk innsats.
funksjonssats () ende
doDeal
Denne funksjonen håndterer håndtering av kortene.
funksjon doDeal () ende
dealInitialHand
Denne funksjonen omhandler den første hånden.
funksjon dealInitialHand () slutten
dealNewCards
Denne funksjonen omhandler den andre delen av hånden.
funksjon dealNewCards () slutten
getHand
Denne funksjonen viser ut spillerenes hånd.
funksjon getHand () ende
newGame
Denne funksjonen nullstiller alle variablene og starter et nytt spill.
funksjonen newGame () slutten
awardWinnings
Denne funksjonen tildeler spilleren pengene pengene vant.
funksjon awardWinnings (theHand, theAward) slutten
resetCardsYPosition
Denne funksjonen nullstiller kortene ' y
posisjon etter at en spiller har et kort.
funksjon resetCardsYPosition () slutten
generateCard
Denne funksjonen genererer et tilfeldig kort.
funksjonen generateCard () slutten
getCard
Denne funksjonen ringer getGenerateCard
og legger den på skjermen.
funksjon getCard (indeks) ende
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.
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.
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
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.