Efectuarea unui joc Blackjack în Corona - Crearea interfeței

În acest tutorial vă voi arăta cum să creați un joc Blackjack pentru iPad utilizând Corona SDK. Să începem!

Doriți să aflați cum a fost proiectat acest joc? Această serie de tutori se bazează pe lucrarea lui Andrei Marius, care a publicat inițial un tutorial în profunzime despre Illustrator, care a demonstrat modul de proiectare a jocului pe Vectortuts+.


1. Proiect nou

Deschideți Simulatorul Corona și alegeți "Proiect nou".


Pe ecranul următor, alegeți următoarele setări.

Setările proiectului

Apasă pe "Următor →", apoi alegeți deschideți în editor. Aceasta va deschide "Main.lua"în editorul de text implicit.


2. Configurarea proiectului

Deschis "Config.lua"ștergeți totul și schimbați-l la următoarele.

 aplicație = content = width = 768, height = 1024, scale = "letterBox", fps = 30,

Aceasta stabilește lățimea implicită a proiectului, înălțimea, scara și FPS. ""letterbox"setarea scalei înseamnă că aplicația se va mări în ambele direcții cât mai uniform posibil și, dacă este necesar, va afișa jocul" Letter Boxed ", așa cum vedeți în unele filme DVD.


3. Ascunderea barei de stare

Nu vrem ca bara de stare să apară în aplicația noastră, așa că introduceți următoarele în "Main.lua"

 display.setStatusBar (display.HiddenStatusBar);

4. Variabilele locale

Adăugați următoarele sub codul introdus în pasul de mai sus.

 cartea localăTable = display.newImage ("table.png", true); bani locali10; - banii locali de 10 USD; - Cipul de bani de 25 USD; --Citiunea locală de 50 de dolari pe locBtn; - afișează butoanele local hitBtn; - butonul de apăsare local standBtn; - butonul standului instrucțiuni localeText; - dați Instrucțiuni și arătați costume locale câștigătoare = "h", "d", "c", "s"; - inimile = h, diamantele = d, cluburile = c, punțile locale; - pachetul de carduri de monede pentru carduri locale; - un grup care va deține grupul local de distribuitori chipsuri; - am plasat cardurile dealerului în acest grup de jucători locali; - am pus cardurile de jucător în acest grup local dealTo = "jucător"; - care este în prezent împărțit la jucătorul localHand = ; - un tabel care să țină cărțile jucătorilor dealer localHand = ; - un tabel care să dețină cardurile dealerilor local allCards =  - un tabel care să țină toate cardurile locale betAmount = 0; - cât de mult pariază jucătorul Total bani locali; - câte bani are jucătorul local blackJack = false; - dacă jucătorul sau distribuitorul are blackjack local firstDealerCard = ""; - o referire la prima carte pe care dealer-ul este împărțită local playerYields = false; - dacă jucătorul a stat sau nu în mână; - care este câștigătorul rundei este pariul local = 0; - cât de mult adaugă playerul la variabila betAmount local bankText; - arată jucătorii bani betText local; - arată cât de mult jucătorul pariază dealerCardsY local = 120; - poziția Y a cardurilor dealerului local playerCardsY = 810; - poziția Y a cărților de jucător

Acestea sunt toate variabilele pe care le vom folosi în acest joc. Citiți comentariile pentru a înțelege ce sunt pentru.


5. Configurarea ()

Funcția de configurare va fi apelată la prima încărcare a aplicației. Introduceți următoarele sub codul introdus în pasul de mai sus.

 funcția Setare () se termină

Acum apelați funcția de configurare exact sub punctul în care ați declarat-o.

 Înființat()

6. SetupCoins ()

Adăugați următoarele de mai sus în cazul în care vă apelați Înființat() în pasul de mai sus.

 funcția setupCoins () money10 = display.newImage ("money10.png", 50,960); money10.betAmount = 10; money25 = display.newImage ("bani25.png", 110.960); money25.betAmount = 25; money50 = display.newImage ("money50.png", 170,960); money50.betAmount = 50; Sfârșit

Aceasta ne fixează imaginile banilor și le adaugă betAmount cheie.

Acum numiți această funcție înăuntru Înființat().

 funcția Setup () setupCoins (); Sfârșit

7. SetupButtons ()

Adăugați următoarele sub setupCoins () funcție pe care ați declarat-o în pasul de mai sus.

 funcția setupButtons () dealBtn = display.newImage ("deal_btn.png", 250,960); dealBtn.isVisible = false; hitBtn = display.newImage ("hit_btn.png", 400960); hitBtn.isVisible = false; standBtn = display.newImage ("stand_btn.png", 550,960); standBtn.isVisible = false; Sfârșit

Aceasta ne fixează butoanele și le face invizibile.

Apelați această funcție înăuntru Înființat().

 funcția Setup () setupCoins (); setupButtons (); Sfârșit

8. SetupTextFields ()

Adăugați următoarele sub setupButtons () funcția pe care ați introdus-o în pasul de mai sus.

 funcția setupTextFields () instructionsText = display.newText ("Place Your Bet", 300, 300, native.systemFont, 30); instrucțiuniText: setTextColor (0,0,0) bankText = display.newText ("Banca dvs.: $", 10,905, native.systemFont, 30); banTxt: setTextColor (0,0,0) betText = display.newText ("", 650,906, native.systemFont, 30); betText: setTextColor (0,0,0); Sfârșit

Aceasta stabilește Câmpuri de text și stabilește culoarea textului în negru.

Adăugați această funcție la Înființat() funcţie.

 funcția Setup () setupCoins (); setupButtons (); setupTextFields () sfârșit

9. SetupGroups ()

Adăugați următoarele sub setupTextFields () funcţie.

 funcția setupGroups () coinContainer = display.newGroup () coinContainer.x = 250; coinContainer.y = 600; dealerGroup = display.newGroup (); playerGroup = display.newGrup (); Sfârșit

Aceasta stabilește grupurile care vor fi folosite pentru a ține cărțile și banii pe care jucătorul le pariază

Adăugați această funcție la Înființat() funcționează exact așa cum ați procedat în pașii anteriori.


10. Verificați progresul

Dacă testați aplicația, ar trebui să vedeți interfața care rulează corect.

Interfața jocurilor

11. AddListeners ()

Adăugați următoarele sub setupGroups () funcţie.

 funcția addListeners () money10: addEventListener ('touch', betHandler); money25: addEventListener ( 'atingere', betHandler); money50: addEventListener ( 'atingere', betHandler); dealBtn: addEventListener ( 'atingere', afacere); hitBtn: addEventListener ( 'atingere', a lovit); standBtn: addEventListener ( 'atingere', stand); Sfârșit

Aceasta adaugă ascultătorilor touch pentru elementele de interfață, astfel încât utilizatorul să poată interacționa cu ele. Trebuie să creăm funcțiile care vor fi numite atunci când utilizatorul face clic pe ele.


12. BetHandler ()

Introduceți următoarele sub addListeners () funcţie.

 funcția betHandler (eveniment) final

Această funcție se va ocupa de pariuri. Se va asigura că utilizatorul nu încearcă să parieze mai mult decât are în banca sa.


13. Deal ()

Introduceți următoarele sub codul introdus în pasul de mai sus.

 funcția deal deal ()

Această funcție este locul unde se află inima jocului. Toată logica jocului va fi tratată în această funcție.


14. Hit ()

Adăugați următoarele sub afacere() funcţie.

 funcția de lovit (eveniment) sfârșitul

Această funcție va fi apelată atunci când utilizatorul apasă butonul "lovit".


15. Stand ()

Introduceți următoarele sub codul introdus în pasul de mai sus.

 funcția stand end ()

Când jucătorul se hotărăște să stea, această funcție va fi apelată.


16. CreateDeck ()

Adăugați următoarele sub createDeck () funcţie.

 funcția createDeck () deck = ; pentru i = 1, 4 pentru j = 1, 13 do tempCard local = costume [i] ... j; table.insert (punte, tempCard); sfârșitul capătului final

Aceasta reinițializează masa de pe punte și creează o punte proaspătă. Ea trece prin fiecare valoare în costume tabel și atașează numărul 1 prin 13 lor. Am setat variabila tempCard egal cu rezultatul, apoi introduceți-l în punte masa.

Acum apelați acest lucru în Înființat() funcţie.

 funcția Setup () setupCoins (); setupButtons (); setupTextFields (); setupGroups (); createDeck (); Sfârșit

Vom primi niște cărți aleatorii de pe punte, deci asigurați-vă că este cu adevărat întâmplător că vom avea nevoie de sămânța generatorului de aleatoare. Dacă nu facem acest lucru, de fiecare dată când jocul începe, va genera aceeași aleatorie. Adăugați următoarele createDeck ().

 funcția Setup () setupCoins (); setupButtons (); setupTextFields (); setupGroups (); math.randomseed (os.time ()); createDeck (); Sfârșit

Concluzie

Acest lucru aduce o parte din acest tutorial la un moment dat. În următoarea parte a seriei vom începe încorporarea gameplay-ului. Vă mulțumim pentru lectură. Rămâi acordat pentru partea a doua!

Cod