Ein Blackjack-Spiel in Corona machen - Gameplay implementieren

Im vorherigen Teil dieser Serie haben wir unser Interface für ein Blackjack-Spiel zusammengestellt und das Kartendeck erstellt. In diesem Teil des Tutorials fügen wir die erforderliche Blackjack-Spiellogik hinzu. Lass uns anfangen!


17. CreateDataFile ()

Wir brauchen eine Möglichkeit, um das Geld des Spielers zwischen den Spielsitzungen zu speichern, und dazu verwenden wir eine einfache Textdatei. Fügen Sie den folgenden Code unter dem hinzu createDeck () Funktion.

Funktion createDataFile () local path = system.pathForFile ("data.txt", system.DocumentsDirectory) local fh, errStr = io.open (path, "r") - r bedeutet Lesemodus, wenn fh dann druckt ("DataFile Exists") Bereits ") - existiert bereits, also kehren wir nur von dieser Funktion zurück. Return else print (" Grund ist fehlgeschlagen: "… errStr) - Fehlermeldung im Terminal anzeigen - Datei erstellen, da sie noch nicht existiert fh = io.open (Pfad, "w") - w bedeutet Schreibmodus, wenn fh dann local money = 500 fh: write (money) else print ("Datei fehlgeschlagen!" ... errStr) end io.close (fh) end end

Hier erstellen wir eine Datei mit dem Namen "data.txt"und schreiben 500 dazu Der Spieler startet das Spiel mit 500,00 USD. Es ist wichtig, dass Sie immer anrufen io.close () wenn Sie mit Ihren Operationen fertig sind.

Weitere Informationen zum Erstellen dieser Datendatei finden Sie in der Dokumentation auf der Corona-Site.


18. ReadFile ()

Da wir nun eine Möglichkeit haben, unsere Datendatei zu erstellen, benötigen wir eine Methode zum Lesen des Inhalts. Geben Sie unter dem folgenden ein createDataFile () Funktion, die Sie im obigen Schritt eingegeben haben.

Funktion readMoney () local path = system.pathForFile ("data.txt", system.DocumentsDirectory) local fh, errStr = io.open (Pfad, "r") wenn fh dann local theMoney = fh: read ("* n" ) theMoney else print zurückgeben ("Grund ist fehlgeschlagen:" ... errStr) - Fehlermeldung am Ende des Endgerätes anzeigen

Wir öffnen die Datei auf dieselbe Weise und verwenden sie dann lesen ("* n") um den Wert aus der Textdatei zu erhalten. Das "* n"bedeutet als Zahl gelesen.


19. SaveMoney ()

Um unsere Dateibearbeitungsvorgänge abzuschließen, benötigen wir eine Möglichkeit zum Speichern. Geben Sie unter dem Code, den Sie oben eingegeben haben, Folgendes ein.

Funktion saveMoney (money) local path = system.pathForFile ("data.txt", system.DocumentsDirectory) local fh, errStr = io.open (Pfad, "w") wenn fh dann fh: write (money) else print (" Grund für das Öffnen ist fehlgeschlagen: "… errStr) - Fehlermeldung am Ende des Endgeräts anzeigen. Schließen (fh)

Hier öffnen wir die Datei zum Schreiben, wie durch "w" in dem öffnen() Methode. Wir schreiben dann Geld in die Datei, die als Parameter übergeben wurde.


20. Anfangssaldo einstellen

Wir müssen jetzt das anfängliche Gleichgewicht schaffen, wenn das Spiel zum ersten Mal beginnt. Fügen Sie oben an der Seite Folgendes hinzu Konfiguration().

function Setup () createDataFile (); setupCoins (); setupButtons (); setupTextFields (); setupGroups (); createDeck (); Ende

Wenn Sie das Corona-Terminal öffnen und die App zweimal ausführen, sollten Sie Folgendes sehen:Datendatei ist bereits vorhanden"auf dem Terminal ausgedruckt. Ich habe das verlassen drucken() Meldungen im Dateibearbeitungscode, damit Sie die Schritte und Fehler sehen können. Wenn alles gut funktioniert, können Sie sie entfernen.


21. Anfangsbestand anzeigen

Nun, da wir das Gleichgewicht eingestellt haben, zeigen wir es in unserer App. Ändern Sie den folgenden Code innerhalb der setupTextFields () Funktion.

function setupTextFields () instructionsText = display.newText ("Platzieren Sie Ihre Wette", 300, 300, native.systemFont, 30); instructionsText: setTextColor (0,0,0) bankText = display.newText ("Your Bank: $"… readMoney (), 10,905, native.systemFont, 30); bankText: setTextColor (0,0,0) betText = display.newText ("", 650,906, native.systemFont, 30); betText: setTextColor (0,0,0); Ende

Beachten Sie, dass wir das Guthaben anfügen "Ihre Bank: $"indem Sie die readMoney () Funktion.


22. Wetten

Nun, da wir das Geld haben, können wir den Code zu unserem hinzufügen betHandler () Funktion. Wir haben diese Funktion im vorherigen Teil des Tutorials erstellt. Stellen Sie also sicher, dass Sie sie hinzufügen, anstatt sie neu zu definieren!

local betHandler = Funktion (Ereignis) local theMoney = readMoney (); wenn event.phase == "begann", dann local t = event.target if (bet + t.betAmount> theMoney), dann drucken ("Versuchen, mehr zu setzen als zu haben"); drucken ("Geld ist"… theMoney); Rückkehr; else bet = bet + t.betAmount local tempImage = display.newImage ("money"… t.betAmount ... ".png"); local randomX = (math.random () * 150); local randomY = (math.random () * 100); tempImage.x = randomX; tempImage.y = randomY; coinContainer: insert (tempImage); dealBtn.isVisible = true; instructionsText.text = ""; betText.text = "Ihre Wette: $"… Wette; Ende Ende Ende

Hier lesen wir zuerst, wie viel Geld der Spieler hat. Wenn sie versuchen, mehr zu wetten, als sie haben, kehrt die Funktion einfach zurück. Ich habe die verlassen drucken() Anweisungen im Code, die beim Debuggen helfen. Wir setzen einen dynamischen Schlüssel, betAmount, wenn wir das Geld aufstellen. Wenn sie nicht versuchen zu viel zu wetten, addieren wir den Betrag zu Wette Variable.

Als nächstes erstellen wir eine tempImage, Erzeugen Sie zwei Zufallszahlen, stellen Sie die Bilder ein x und y zu den Zufallszahlen und schließlich fügen Sie das Bild dem Münzbehälter hinzu. Sie werden feststellen, dass wir verwenden "Geld" ... t.betAmount ... ".png" für die Bild-URL. Unsere Bilder für das Geld heißen "money10.png","money25.png" und "money50.png", also alles, was wir hier tun, ist die Verkettung, um die Bildzeichenfolge zu bilden.

Zum Schluss setzen wir die dealBtn um sichtbar zu sein, klären Sie die anweisungenText und setze das betText gleich dem Wette.

Jetzt müssen wir das hinzufügen addListeners () Funktion für unsere Konfiguration() Code. Fügen Sie den folgenden Code am unteren Rand hinzu.

function Setup () createDataFile () setupCoins (); setupButtons (); setupTextFields (); setupGroups (); createDeck (); addListeners (); Ende

Wenn Sie die App jetzt testen, sollten Sie etwas Geld wetten können.


23. Handwerte abrufen

Wir brauchen einen Weg, um den Handwert der Hand des Spielers und des Dealers zu ermitteln. Geben Sie unter dem folgenden ein createDeck () Funktion.

Funktion getHandValue (theHand) local handValue = 0; local hasAceInHand = false; für i = 1, # theHand do local cardsValue = Tonnummer (stringSub (theHand [i], 2,3)); wenn (cardsValue> 10) dann cardsValue = 10; Ende handValue = HandValue + KartenValue; if (cardsValue == 1) dann hasAceInHand = true; end end if (hasAceInHand und handValue <= 11)then handValue = handValue + 10; end return handValue; end

Wir richten ein HandValue Variable und a hasAceInHand Variable. Als nächstes gehen wir durch die Hand das wird entweder das sein SpielerHand oder der dealerHand. Wir erstellen eine Variable KartenValue, gib es auf eine Zahl, indem du einen Teil der aktuellen Karte erhältst. Ob KartenValue ist größer als 10 wir setzen es auf 10. Jacks, Queens und Kings sind vertreten durch 11, 12, und 13. Wir addieren dann den Wert zu HandValue. Wenn der Wert der Karte gleich ist 1 Dann wissen wir, dass sie ein Ass in der Hand haben. Wenn sie ein Ass haben und ihr HandValue ist kleiner oder gleich 11 Wir fügen hinzu 10 dazu.


24. Deal ()

Wir haben jetzt alles für einen Deal bereit, also animieren wir jetzt die Karten, um das Spiel interessanter zu machen. Diese Funktion ist recht umfangreich, da hier die gesamte Logik des Spiels stattfindet. Wir teilen es in mehrere Schritte auf. Fügen Sie den folgenden Code in das ein Deal() Funktion, die Sie im ersten Teil dieser Serie erstellt haben.

 money10.isVisible = false; money25.isVisible = false; money50.isVisible = false; dealBtn.isVisible = false; local randIndex = math.random (#deck) local tempCard = display.newImage ("card_front.png", 630,55); table.insert (allCards, TempCard); lokale whichPosition; local whichArray = ; lokal welcheGruppe; if (dealTo == "player") dann whichArray = SpielerHand; whichPosition = playerCardsY; whichGroup = SpielerGruppe; sonst whichArray = dealerHand; whichPosition = dealerCardsY; whichGroup = DealerGroup; end table.insert (whichArray, deck [randIndex]); local xPos = 20 + # whichArray * 35 Umschaltung.to (TempCard, time = 1000, x = xPos, y = whichPosition, onComplete = function () if (dealTo == "dealer" und #dealerHand == 1), dann zuerstDealerCard = deck [randIndex]; dealerGroup: insert (tempCard); else tempCard: removeSelf (); tempCard = display.newImage (deck [randIndex]… ".png", xPos-45, whichPosition-60); whichGroup: insert (tempCard) ); end table.remove (deck, randIndex); if (#dealerHand < 2)then if(dealTo == "player")then dealTo = "dealer" else dealTo = "player" end deal(); end end );

Hier setzen wir unser Geld für unsichtbar und unseren Deal-Button für sichtbar. Als nächstes generieren wir eine randIndex von dem Deck Tabelle. Wir erzeugen dann ein neues Bild TempCard, und füge das ein TempCard in die alle Bilder Tabelle. Wir richten drei lokale Variablen ein, welche Position, whichArray, und welche Gruppe. Wir prüfen, wer gerade behandelt wird, um diese Variablen entsprechend zu initialisieren.

Wir legen dann ein deck [randIndex] in whichArray, das ist entweder die SpielerHand oder der dealerHand Tabelle. Denken Sie daran, dass unser Deck aus Strings besteht, so dass Deck [randIndex] so etwas wie "h5","d10".

Wir setzen eine lokale Variable xPos gleich 20 + # whichArray * 35, was macht es auf 20 zuzüglich der Tischlänge + 35. Das erste mal durch die tischlänge wäre 1, so 20 + 1 * 35. Das nächste Mal wäre das durch die Tischlänge 2 so wäre es 20 + 2 * 35. All dies ermöglicht es uns, unsere Karten gleichmäßig entlang der X-Achse zu platzieren.

Wir benutzen Coronas Übergang.nach Methode, um die TempCard. Wenn die Karte den Übergang abgeschlossen hat, prüfen wir, ob wir mit dem Händler handeln und ob seine Handlänge ist 1. Wenn ja, setzen wir ersteDealerCard gleich deck [randIndex], und legen Sie die Karte in die Händlergruppe. Wir benötigen einen Verweis auf die erste Karte des Dealers, um sie später zeigen zu können.

Wenn dies nicht die erste Karte des Dealers war, entfernen wir die TempCard, Erzeugen Sie ein neues Bild mit deck [randIndex], und legen Sie es in die entsprechende Gruppe (Spieler oder Händler). Der Grund, den wir abziehen 45 und 60 Dies liegt daran, dass Corona den Bezugspunkt von Bildern standardmäßig auf die Mitte setzt und unsere Bilder dies sind 90 x 120. Folglich nehmen wir die Hälfte davon.

Zuletzt entfernen wir die Karte an Position randIndex von dem Deck Tabelle und prüfen, ob dealerHand Länge ist kleiner als 2. Wenn es so ist, ändern wir uns Geschäft mit zu seinem Gegenteil (Spieler oder Händler) und dann wieder handeln.

Schließlich können Sie die App testen, etwas Geld wetten und die ersten beiden Karten erhalten.


25. Deal () Fortsetzung…

Fügen Sie den folgenden Code unter dem Aufruf hinzu Deal() im obigen Schritt.

 if (#dealerHand < 2)then if(dealTo == "player")then dealTo = "dealer" else dealTo = "player" end deal(); elseif(#dealerHand == 2 and #playerHand == 2) then if(getHandValue(playerHand)==21 or getHandValue(dealerHand) == 21)then doGameOver(true); else standBtn.isVisible = true; hitBtn.isVisible = true; end end

Hier prüfen wir, ob beides dealerHand und SpielerHandDie Länge ist gleich 2. Wenn dies der Fall ist, werden wir prüfen, ob eine ihrer Hände gleich 21 ist. Wenn eine ihrer Hände gleich 21 ist, ist das Spiel beendet. Wir nennen doGameOver (true) das wird Gewinne auszeichnen und ein neues Spiel beginnen. Das wahr Parameter gilt für Blackjack. Andernfalls wird es falsch sein.


26. DoGameOver ()

Das doGameOver () function prämiert die Gewinne und startet ein neues Spiel. Wir werden diese Funktion auch in mehreren Schritten codieren. Jetzt können wir den Blackjack-Teil testen. Geben Sie den folgenden Code unter dem ein Deal Funktion.

function doGameOver (hasBlackJack) local playerHandValue = getHandValue (playerHand); local dealerHandValue = getHandValue (dealerHand); local tempCardX = allCards [2] .x; local tempCardY = allCards [2] .y; allCards [2]: removeSelf (); local tempCard = display.newImage (ersteDealerCard… ".png", tempCardX-45, tempCardY-60); DealerGroup: Einfügen (TempCard); tempCard: toBack (); if (hasBlackJack) dann wenn (playerHandValue> dealerHandValue) dann Geld = Geld + Wette * 1,5; instructionsText.text = "Sie haben BlackJack!"; Gewinner = "Spieler" sonst Geld = Geld - Wette; instructionsText.text = "Der Händler hat BlackJack!"; Gewinner = "Händler" Ende Ende Ende

Hier erhalten wir den Handwert des Spielers und des Händlers. Wir bekommen einen Hinweis darauf allCards [2], x, und y, Dies ist die erste Karte des Dealers, und dann entfernen wir sie aus dem Display. Wir erzeugen dann eine TempCard mit der ersteDealerCard Variable, die wir zuvor eingerichtet haben. Wieder ziehen wir ab 45 und 60. Wir legen dann diese neue Karte in die ein Händlergruppe. Wenn wir das tun, ist es auf der zweiten Karte, also schicken wir sie per Anruf nach hinten unterstützen().

Wir prüfen, ob hasBlackJack ist wahr, und wenn ja, prüfen wir, ob die Hand des Spielers größer ist als die des Dealers. Wenn ja, vergeben wir etwas Geld, setzen das anweisungenText entsprechend und ändern Gewinner zu "Spieler".


27. Geld initialisieren

Wir müssen daran denken, das zu initialisieren Geld Variable, bevor wir etwas damit anfangen. Fügen Sie Folgendes in das ein Konfiguration() Funktion.

function Setup () createDataFile (); money = readMoney (); setupCoins ();… ende

28. Test auf Blackjack

Wir sind an dem Punkt, an dem wir testen können, ob der Spieler oder Dealer Blackjack hat. Wir werden vorübergehend Code ändern, um ihn zu testen, aber wir werden ihn wieder ändern. Zuerst in der Deal Funktion, ändern Sie die folgenden.

 elseif (#dealerHand == 2 und #playerHand == 2) dann if (true) dann doGameOver (true);

Dann innerhalb der doGameOver () Funktion ändern die ersten beiden Zeilen so.

local playerHandValue = 21 - getHandValue (playerHand); local dealerHandValue = 18 -; getHandValue (dealerHand);

Jetzt können Sie die App testen. Sie sollten sehen, dass der Spieler Blackjack bekommt.

Ändern Sie nun die ersten beiden Zeilen im doGameOver Zu dem Folgendem

local playerHandValue = 18 - getHandValue (playerHand); local dealerHandValue = 21 -; getHandValue (dealerHand);

Wenn Sie jetzt testen, sollten Sie sehen, dass der Dealer Blackjack erhalten hat.


29. Zurücksetzen aus dem Test

Nachdem wir nun getestet haben, sollten wir unsere Variablen zurücksetzen. In der Deal Funktion ändern Sie die folgenden.

elseif (#dealerHand == 2 und #playerHand == 2) dann wenn (getHandValue (playerHand) == 21 oder getHandValue (dealerHand) == 21) dann doGameOver (true);

Dann innerhalb der doGameOver () Funktion, ändern Sie die ersten beiden Zeilen wieder in ihren vorherigen Zustand.

local playerHandValue = getHandValue (playerHand); local dealerHandValue = getHandValue (dealerHand);

Wenn Sie noch einmal testen und weder Sie noch der Dealer Blackjack erhalten, sollte der Deal-Button unsichtbar werden und die Hit- und Stand-Buttons sichtbar werden.


30. Hit ()

Wir müssen dem Spieler erlauben, zu schlagen oder zu stehen, sobald die ersten beiden Karten ausgeteilt wurden. Geben Sie im Feld Folgendes ein schlagen() Funktion, die Sie im vorherigen Teil dieser Serie eingegeben haben.

Funktionstreffer (Ereignis) Wenn ("begonnen" == Ereignisphase), dann dealTo = "Spieler"; Deal(); Ende Ende

Wenn Sie jetzt testen, sollten Sie treffen können.

Nach einigen Qualitätskontrolltests haben Sie möglicherweise bemerkt, dass der Player schnell die Taste drücken kann schlagen Taste immer und immer wieder, viele Karten gleichzeitig ausgeben. So sollte das Spiel nicht funktionieren. Um das Problem zu beheben, müssen wir eine Bedingung hinzufügen, um sicherzustellen, dass sie nur zum richtigen Zeitpunkt treffen können. Fügen Sie Folgendes am Ende Ihrer Variablendeklarationen hinzu.

local canBet = true;

Ändern Sie jetzt die schlagen() Funktion auf die folgenden.

Funktionstreffer (Ereignis) if ("begann" == event.phase) dann if (canBet) dann dealTo = "Spieler"; Deal(); canBet = false; Ende Ende Ende

Innerhalb des Deal() Funktion, fügen Sie die folgende Codezeile hinzu.

Transition.to (tempCard, time = 1000, x = xPos, y = whichPosition, onComplete = function () canBet = true;

Jetzt kann der Spieler nur noch einmal schlagen, die Karte wurde beendet.


31. Stand ()

Als nächstes müssen wir den Spieler stehen lassen. Fügen Sie Folgendes in das ein Stand() Funktion, die Sie im vorherigen Teil dieser Serie eingegeben haben.

Funktion stand () playerYields = true; standBtn.isVisible = false; hitBtn.isVisible = false; if (getHandValue (dealerHand)) < 17)then dealTo = "dealer" deal(); else doGameOver(false); end end

Hier zeigen wir an, dass der Spieler "hält". Stellen Sie das ein standBtn und HitBtn unsichtbar Wir prüfen, ob die Hand des Händlers weniger als ist 17, und wenn es so ist, ändern wir uns Geschäft mit zum Händler und Deal. Wenn seine Hand nicht weniger als ist 17, dann rufen wir an doGameOver (). Der Händler muss stehen 17 oder größer.

Wenn Sie jetzt testen, erhält der Spieler die gewünschte Hand und drückt dann auf Stand. Es gibt jedoch einige Probleme. Wenn der Spieler pleite geht, kann er beim Dealer weiter Karten ziehen. Der Dealer muss weiter Karten ziehen, bis er fertig ist 17 oder über oder bis er kaputt geht. Wir werden diese Probleme beheben, wenn wir unsere Arbeit beendet haben Deal() Funktion in den nächsten zwei Schritten.


32. Deal () Fortsetzung…

Fügen Sie Folgendes in das ein Deal() Funktion.

if (getHandValue (playerHand) == 21 oder getHandValue (dealerHand) == 21) dann doGameOver (true); else standBtn.isVisible = true; hitBtn.isVisible = true; end end if (#dealerHand> = 3 und (getHandValue (dealerHand)) < 17))then deal(); elseif( playerYields and getHandValue(dealerHand)>= 17) dann standBtn.isVisible = false; hitBtn.isVisible = false; doGameOver (false); Ende

Hier überprüfen wir, ob die dealerHandDie Länge ist größer oder gleich 3 und dass die Hand des Händlers weniger ist als 17. Wenn seine Hand weniger ist 17 er muss eine karte ziehen. Ansonsten prüfen wir, ob der Spieler nachgegeben hat und ob die Hand des Dealers größer oder gleich ist 17. Wenn ja, ist das Spiel vorbei. Es ist möglich, dass der Händler hat 17 oder größer mit den ersten beiden Karten.


33. Beenden der Deal () - Funktion

Geben Sie den folgenden Code in das Feld ein Deal() Funktion.

if (#dealerHand> = 3 und (getHandValue (dealerHand)) < 17))then deal(); elseif( playerYields and getHandValue(dealerHand)>= 17) dann standBtn.isVisible = false; hitBtn.isVisible = false; doGameOver (false); end if (getHandValue (playerHand)> 21) dann standBtn.isVisible = false; hitBtn.isVisible = false; doGameOver (false); Ende

Wenn der Spieler eine Karte zieht und zieht, die ihn überführt 21, Das Spiel ist vorbei.


34. GameOver () Fortsetzung…

In diesem Schritt werden wir die Codierung fortsetzen Spiel ist aus() Funktion. Ab jetzt bestimmt die Deal-Funktion nur, wer gewinnt, wenn der Spieler oder Dealer einen Blackjack hat. Wir müssen mit allen anderen möglichen Ergebnissen umgehen. Geben Sie im Feld Folgendes ein doGameOver () Funktion.

sonst Geld = Geld - Wette; instructionsText.text = "Der Händler hat BlackJack!"; winner = "dealer" Ende sonst if (playerHandValue> 21) dann InstructionsText.text = "You Busted!"; Geld = Geld - Wette; Gewinner = "Händler"; elseif (dealerHandValue> 21) dann Geld = Geld + Wette; instructionsText.text = "Dealer Busts. Sie gewinnen!"; Gewinner = "Spieler"; elseif (dealerHandValue> playerHandValue) dann Geld = Geld - Wette; instructionsText.text = "Sie verlieren!"; Gewinner = "Dealer" elseif (dealerHandValue == playerHandValue) dann Geld = Geld - Wette; instructionsText.text = "Tie - Dealer gewinnt!"; Gewinner = "Unentschieden" elseif (dealerHandValue < playerHandValue)then money = money +bet; instructionsText.text="You Win!"; winner = "player" end end

Wenn Sie den Code jetzt testen, sollten Sie in der Lage sein, ein vollständiges Spiel zu spielen. Der Anweisungstext zeigt das Ergebnis. Spiele ein paar Runden und stelle sicher, dass alles korrekt erscheint. Wenn Sie das Spiel wirklich vollständig testen möchten, indem Sie andere Handwerte eingeben, können Sie dieselbe Technik verwenden, die wir zuvor in diesem Lernprogramm verwendet haben, um auf Blackjack zu testen.


35. GameOver () Fortsetzung…

Geben Sie unten im Feld Folgendes ein doGameOver () Funktion

elseif (dealerHandValue.) < playerHandValue)then money = money +bet; instructionsText.text="You Win!"; winner = "player" end end if(money < 10)then money = 500 end saveMoney(money)

Nach jeder Runde sollten wir das Geld des Spielers sparen. Wenn ihr Geld weniger als ist 10 Wir werden das für bankrott halten und ihr Geld zurücksetzen 500. Sehen Sie als Übung, ob Sie eine Warnmeldung erhalten können, in der Folgendes angezeigt wird:Sie sind in Konkurs gegangen, der Händler gewährt Ihnen 500,00 US-Dollar."


36. Spielende beenden ()

Nach jeder Runde bewegen wir die Münzen zum Gewinner und beginnen ein neues Spiel. Geben Sie unter dem Code, den Sie oben eingegeben haben, Folgendes ein.

saveMoney (money) local tweenTo; wenn (Gewinner == "Spieler"), dann tweenTo = playerCardsY; else tweenTo = dealerCardsY end transition.to (coinContainer, time = 1000, y = tweenTo, onComplete = function () für i = coinContainer.numChildren, 1, -1 do local child = coinContainer [i] child: removeSelf () child) = nil; end timer.performWithDelay (2000, newGame); coinContainer.y = 600; end);

Hier sehen wir, wer die Runde gewonnen hat, und animiert die Münzen dazu. Wenn die Animation abgeschlossen ist, entfernen wir alle Münzen aus dem coinContainer, und setze sie auf Null, da wir mit ihnen fertig sind. Zuletzt rufen wir an neues Spiel() nach zwei Sekunden setzen wir auch unsere zurück coinContainer Position.


37. Neues Spiel ()

Geben Sie unter dem folgenden ein doGameOver () Funktion.

function newGame () instructionsText.text = "PLACE YOUR BET"; betText.text = ""; money10.isVisible = true; money25.isVisible = true; money50.isVisible = true; bankText.text = "Ihre Bank: $"… readMoney () für i = dealerGroup.numChildren, 1, -1 do local child = dealerGroup [i] child: removeSelf () child = nil; end für i = playerGroup.numChildren, 1, -1 do local child = playerGroup [i] child: removeSelf () child = nil; end dealTo = "Spieler"; playerHand = ; dealerHand = ; allCards = ; createDeck () ;; playerYields = falsch; Gewinner = ""; bet = 0; canBet = true; Ende

Hier setzen wir das Geld auf sichtbar, entfernen die Karten sowohl aus der Spieler- als auch aus der Dealer-Gruppe und setzen alle unsere Variablen zurück.


Fazit

Wir haben mit dem Corona SDK ein unterhaltsames und interessantes Blackjack-Spiel programmiert. Vielen Dank für das Lesen. Ich hoffe, Sie fanden dieses Tutorial hilfreich!