Create en Dancing Hangman spillet i Corona: Gameplay 
 21 
 Del 
 2 
 Del 
 
 Denne Cyber Monday Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av 
 Dette innlegget er en del av en serie som heter Lag en dans Hangman spillet i Corona.Create en dans Hangman spillet i Corona. Prosjekt SetupWhat Du skal lage 
 I den første delen av denne to -delen serien, la vi grunnlaget for overgangen mellom skjermbilder og for å tegne bøddelen hjelp Corona tegning API. I den andre og siste del av denne serien, vil vi gjennomføre spillet logikk, og overgangen til en vinn-skjermen hvor bøddelen vil gjøre en dans sammen med litt musikk. Kan komme i gang. 
 
 1. Opprette Word til Gjett 
 
 Trinn 1: Lese en tekstfil 
 
 Spillet leser i ord fra en tekstfil som inneholder tusenvis av ord. Vi vil filtrere ord basert på deres lengde og legge dem til en av tre lister, ord som er 5 tegn eller mindre, ord som er 9 tegn eller mindre, og ord som er 13 tegn eller mindre. 
 < p> Ved å ha tre separate ordlister, kan vi integrere et vanskelighetsnivå basert på ordlengde. Vi vil ikke gjøre det i denne opplæringen, men ordene vil allerede være delt opp i separate lister bør du bestemmer deg for å forfølge dette alternativet på egen hånd. 
 
 Legg til følgende kode i gamescreen.lua. 
 Funksjon readTextFile () lokale banen = system.pathForFile ( "wordlist.txt", system.ResourceDirectory) lokal fil = io.open (bane, "r") for linje i filen: linjer () gjør --Hvis rettet mot Windows Operating System kommentar følgende linje ut - line = string.sub (linje 1, #line - 1) if (#line > = 3 og #line < = 5) da table.insert (words5, linje) elseif (#line > = 3 og # linje < = 9) så table.insert (words9, linje) elseif (#line > = 3 og # linje < = 13) så table.insert (words13, linje) end end io.close ( ) fil file = nilend 
 readTextFile funksjonen leser i tekstfilen wordlist.txt. Vi sløyfe gjennom hver linje av wordlist.txt og, avhengig av ordets lengde, sett det inn i en av tre tabeller, words5, words9, eller words13. 
 
 Windows og Unix-baserte systemer håndtere linjeavslutninger annerledes. På Windows, vil det være en ekstra karakter, som vi kan fjerne ved hjelp av string.sub metoden. Hvis du bruker en Windows-maskin, må du legge til at kodelinje ved å fjerne -. Foregående det 
 
 Når du leser en fil, er det viktig å huske på at når du er ferdig, bør du lukke og nil ut filen som vises i gjennomføringen 
 
 Påkall denne funksjonen i scene. opprette. Jeg plasserte den på toppen, over de andre funksjonskall 
 funksjon scene. Opprette (hendelse) lokal gruppe = self.view readTextFile () drawChalkBoard (1,1,1) --SNIP - end 
 
 Trinn 2: createGuessWord 
 
 createGuessWord funksjonen er ansvarlig for å få et tilfeldig ord fra listen, og returnere den. Legg til følgende kode gamescreen.lua 
 funksjon createGuessWord () guessWord = {} lokale randomIndex = math.random (# words5) theWord = words5 [randomIndex].; print (theWord) for i = 1, #theWord gjøre lokal karakter = theWord: sub (i, i) if (karakter == "" ") så guessWord [i] =" ' "; elseif (tegnet == "-") så guessWord [i] = "-" ellers guessWord [i] = ""; end end lokale newGuessWord = table.concat (guessWord) returnerer newGuessWord; end 
 Vi bruker en tabell, guessWord, til å lagre hver bokstav i ordet. Grunnen til dette er at strengene er uforanderlig i Lua, noe som betyr at vi ikke kan endre et tegn på strengen. 
 
 Vi først generere et tilfeldig tall randomIndex, som vil være et nummer fra 1 til men mange elementer er i tabellen. Vi bruker da at nummer for å få et ord fra bordet. 
 
 Vi løkke over ordet og få en henvisning til løpende karakter ved hjelp av string.sub metoden. Hvis den nåværende karakter er en apostrof eller en bindestrek, vi sette det inn i tabellen guessword, ellers setter vi et spørsmålstegn i tabellen. 
 
 Vi deretter forvandle bordet guessWord inn en streng newGuessWord bruker table.concat metode. Til slutt, vi kommer tilbake newGuessWord 
 
 Trinn 3:.. CreateGuessWordText 
 
 createGuessWordText funksjonen lager Tekst på toppen av spillområdet som vil endres avhengig av spillerens gjetning 
 funksjon createGuessWordText () lokale alternativer = {text = createGuessWord (), x = 384, y = 70, width = 700, --required for flere linjer og justering font = native.systemFontBold, fontstørrelse = 50, align = "center" --new justering parameter} guessWordText = display.newText (opsjoner) guessWordText: setFillColor (0,0,0) scene.view: sett (guessWordText) end 
 Alternativ tabell inneholder de ulike konfigurasjonsmuligheter for teksten. Fordi createGuessWord funksjonen returnerer et ord som en streng, kan vi bare påkalle den når du setter teksten eiendommen. 
 
 Vi skaper teksten ved å påberope seg newText metoden på skjerm, passerer på alternativ tabellen. Vi satt sin farge og sett den inn i scenen syn 
 
 Påkall denne funksjonen i scene. Opprette som vist nedenfor 
 funksjon scene. Opprette (hendelse) --SNIP-- drawGallows () createGuessWordText ( ) end 
 et ord om Metatables 
 
 Lua programmeringsspråk har ikke et førsteklasses system bygget i. Men ved å bruke Lua er metatable konstruere kan vi etterligne en klasse system. Det er et godt eksempel på Corona nettside, som viser hvordan å gjennomføre dette. 
 
 En viktig ting å merke seg er at Corona er Vis objekter ikke kan settes som metatable. Dette har å gjøre med hvordan de underliggende C-språk grensesnitt med dem. En enkel måte å komme rundt dette på er å sette skjerm objekt som en nøkkel på et nytt bord og deretter sette det bordet som metatable. Dette er den tilnærmingen som vi tar i denne opplæringen. 
 
 Hvis du leser artikkelen ovenfor på Corona nettside, vil du ha lagt merke til at __Index metamethod ble brukt på metatable. Måten __Index metamethod verk, er at når du prøver å få tilgang til en fraværende felt i en tabell, det utløser tolk for å lete etter en __Index metamethod. Hvis __Index er der, vil det se for feltet og gi resultatet, ellers vil det resultere i null. 
 
 2. Implementering av GrowText Class 
 
 Spillet har tekst som vil vokse fra liten til stor over en kort periode, når brukeren vinner eller taper spillet. Vi vil skape denne funksjonaliteten som en modul. Ved å ha denne koden som en modul, kan vi bruke det i ethvert prosjekt som krever denne funksjonaliteten. 
 
 Legg til følgende growtext.lua, som du opprettet i første del av denne serien. 
 Lokal growText = {} lokale growText_mt = {__index = growText} funksjon growText.new (theText, positionX, positionY, theFont, theFontSize, Dersom Gruppe) lokal theTextField = display.newText (theText, positionX, positionY, theFont, theFontSize) lokal newGrowText = {theTextField = theTextField} if (Dersom Gruppe ~ = null) deretter Dersom Gruppe: sett (theTextField) end retur setmetatable (newGrowText, growText_mt) endfunction growText: SetColor (r, b, g) self.theTextField: setFillColor (r, g, b) endfunction growText : vokse () transition.to (self.theTextField, {XScale = 4,0, ySkala = 4,0, tid = 2000, gjentakelser = 1, onComplete = function () lokal hendelse = {name = "gameOverEvent",} self.theTextField.xScale = 1 self.theTextField.yScale = 1 Spilletid: dispatchEvent (hendelse) end}) endfunction growText: setVisibility (synlig) if (synlig == true) så self.theTextField.isVisible = true annet self.theTextField.isVisible = false slutten selv .theTextField.xScale = 1 self.theTextField.yScale = 1endfunction growText: setText (theText) self.theTextField.text = theTextendreturn growText 
 Vi skaper hovedtabellen growText og bordet for å bli brukt som metatable, growText_mt. I den nye metoden, skaper vi tekstobjektet og legge den til bordet newGrowText som vil bli satt som metatable. Vi legg deretter til tekstobjekt som den gruppen som ble vedtatt som en parameter, som vil være scenens gruppe der vi instantiate en forekomst av GrowText. 
 
 Det er viktig å sørge for at vi legger det til scenens gruppe, så det vil bli fjernet når scenen er fjernet. Til slutt setter vi metatable. 
 
 Vi har fire metoder som har tilgang til tekstobjektet og utføre operasjoner på sine eiendommer. 
 
 SetColor 
 
 SetColor metoden angir farge på teksten ved å påberope seg setFillColor metode, som tar som parameter R, G og B verdier tall fra 0 til 1. 
 
 vokse 
 
 vokse metoden bruker Overgang biblioteket for å gjøre teksten vokse. Det forstørrer teksten ved hjelp av XScale og ySkala egenskaper. Den onComplete funksjon blir påberopt når overgangen er fullført. 
 
 I denne onComplete funksjonen null vi tekstens XScale og ySkala egenskaper til en og sende en hendelse. Grunnen til at vi sende en hendelse her er å informere gamescreen at tekst er ferdig med sin overgang, og derfor spillet runden er over. 
 
 Dette vil alle bli klar snart, men det kan være lurt å lese opp på dispatchEvent i dokumentasjonen. 
 
 setVisibility 
 
 setVisibility metoden angir bare synligheten av teksten, avhengig av om sant eller usant ble vedtatt som en parameter. Vi nullstiller også XScale og ySkala eiendom til 1. 
 
 setText 
 
 setText metoden brukes til å stille inn selve teksten eiendom, avhengig av hva streng ble vedtatt i som parameter. 
 
 til slutt, vi returnere growText objektet. 
 
 3. createWinLoseText 
 
 createWinLoseText funksjonen lager en GrowText objekt som viser enten "du vinner!" eller "du mister!", avhengig av om brukeren vinner eller taper en runde. Legg til følgende kode gamescreen.lua. 
 Funksjon createWinLoseText () winLoseText = growText.new ( "DU VINNE", display.contentCenterX, display.contentCenterY-100, native.systemFontBold, 20, scene.view) winLoseText: setVisibility (false) end 
 Vi benytter denne funksjonen i scene: create, som vist nedenfor 
 funksjon scene. opprette (hendelse) --SNIP-- drawGallows () createWinLoseText () end 
 4. setupButtons 
 
 setupButtons funksjonen setter opp knappene, trekker dem til skjermen, og legger en hendelse lytteren som vil kalle funksjonen checkLetter. Den checkLetter funksjonen er der spillets logikk foregår. 
 Funksjons setupButtons () lokale XPOS = 150 lokale yPos = 600 for i = 1, #alphabetArray gjøre hvis (i == 9 eller i == 17) da yPos = yPos + 65 XPOS = 150 end if (i == 25) så yPos = yPos + 65 XPOS = 330 end lokale tempButton = widget.newButton {label = alphabetArray [i], labelColor = {default = {1,1, 1}}, onPress = checkLetter, shape = "roundedRect", width = 40, height = 40, cornerRadius = 2, fillColor = {default = {0, 0, 0, 1}, over = {0,5, 0.5, 0.5, 0,4}}, strokeColor = {default = {0,5, 0.5, 0.5, 0.4}, over = {0, 0, 0, 1}}, strokeWidth = 5} tempButton.x = XPOS tempButton.y = yPos XPOS = XPOS + 60 table.insert (gameButtons, tempButton) Sluttslutt 
 Vi først satt de første x og y posisjon deretter. Vi deretter kjøre en for løkke over alphabetArray, som igjen skaper en knapp for hver bokstav i alphabetArray. Vi ønsker åtte knapper per rad, så vi sjekke om jeg er lik 9 eller 17, og i så fall, øke vi yPos variabel for å opprette en ny rad og tilbakestille XPOS til begynnelsen posisjon. Hvis jeg er lik 25, er vi på siste rad, og vi sentrere de to siste knappene. 
 
 Vi skaper en tempButton ved hjelp av newButton metoden i widget klasse, som tar et bord av alternativer. Det er flere måter å påvirke det visuelle inntrykket av knappene. For dette spillet, bruker vi Shape Construction alternativet. Jeg foreslår at du leser dokumentasjonen på knappeobjekt for å lære mer om disse alternativene. 
 
 Vi setter etiketten ved å indeksere inn alphabetArray og sette onPress eiendommen for å ringe checkLetter. Resten av valgene har å gjøre med det visuelle utseende og bedre forklart ved å lese dokumentasjonen som nevnt tidligere. Til slutt, setter vi den tempButton i tabellen gameButtons slik at vi kan referere til den senere 
 
 Hvis du nå benytter denne metoden fra scenen. Opprette, skal du se at knappene er trukket til skjermen. Vi kan ikke trykke dem ennå, fordi vi ikke har opprettet checkLetter funksjon. Vi vil gjøre det i neste trinn 
 funksjon scene. Opprette (hendelse) --SNIP-- createGuessWordText () createWinLoseText () setupButtons () end 
 5. checkLetter 
 
 Spillets logikk bor i checkLetter funksjon. Legg til følgende kode gamescreen.lua 
 funksjon checkLetter (hendelse) lokal tempButton = event.target lokal theLetter = tempButton. GetLabel () theLetter = string.lower (theLetter) lokal correctGuess = false lokal newGuessWord = " "tempButton.isVisible = false for i = 1, # theWord gjøre lokal karakter = theWord: sub (i, i) if (karakter == theLetter) så guessWord [i] = theLetter correctGuess = true end end newGuessWord = table.concat ( guessWord) guessWordText.text = newGuessWord if (correctGuess == false) så numWrong = numWrong en drawHangman (numWrong); end if (newGuessWord == theWord) så wonGame = true didWinGame (sann) end if (numWrong == 6) deretter for i = 1, #theWord gjøre guessWord [i] = theWord: sub (i, i) newGuessWord = tabellen. concat (guessWord) guessWordText.text = newGuessWord; ende didWinGame (falsk) Sluttslutt 
 Det første vi gjør er, får brevet brukeren har gjettet ved å påberope seg getLabel metoden på knappen. Dette returnerer knappens etikett, en stor bokstav. Vi konverterer dette brevet til små bokstaver ved å kalle den nedre metoden på strengen, som tar som parameter strengen som skal lowercased. 
 
 Vi satt correctGuess til false, newGuessWord til en tom streng, og skjule knappen brukeren har tappet, fordi vi ikke vil at brukeren skal kunne trykke på knappen mer enn en gang per runde. 
 
 Neste, vi løkken over theWord, få den nåværende karakter ved hjelp av string.sub metoden, og sammenligne det tegn til theLetter. Hvis de er like, så brukeren har gjort et riktig gjetning, og vi oppdaterer den aktuelle bokstaven i guessWord, sette correctGuess til sann. 
 
 Vi skaper newGuessWord ved hjelp av table.concat metoden, og oppdatere guessWordText å reflektere eventuelle endringer. 
 
 Hvis correctGuess er fortsatt falsk, betyr det at brukeren har gjort en feil gjetning. Som et resultat, øke vi numWrong variabel og påkalle drawHangman funksjon, passerer i numWrong. Avhengig av hvor mange feil gjetter at brukeren har gjort, vil drawHangman funksjon trekke bøddel som passer. 
 
 Hvis newGuessWord er lik theWord, betyr det at brukeren har gjettet ordet og vi oppdaterer wonGame til sann, ringer den didWinGame funksjon og bestått i oppfyllelse. 
 
 Hvis numWrong er lik 6, betyr det at brukeren har brukt opp alle sine gjetninger og bøddelen har blitt fullt ut benyttet. Vi sløyfe gjennom theWord og sett hver karakter i guessWord lik karakterene i theWord. Vi viser så brukeren det riktige ordet. 
 
 Denne bit av koden skal være fornuftig nå som vi har gjort noe lignende et par ganger før. Til slutt, vi kaller didWinGame og passerer i falsk. 
 
 6. Vinne og tape 
 
 Trinn 1: didWinGame 
 
 didWinGame funksjonen kalles når bruken enten vinner av mister en runde 
 funksjon didWinGame (gameWon) hideButtons () winLoseText. SetVisibility (sann ) if (gameWon == true) så winLoseText: setText ( "dU VINNE !!") winLoseText: SetColor (0,0,1) ellers winLoseText: setText ( "dU tAPER !!") winLoseText: SetColor (1,0, 0) ende winLoseText: vokse () end 
 det første vi gjør er påberope hideButtons, som, som navnet antyder, skjuler alle knappene. Vi setter winLoseText å være synlig, og, avhengig av om brukeren har vunnet eller tapt runden, satt sin tekst og farge som passer. Til slutt, påberope vi vokse metoden på winLoseText. 
 
 Som vi så tidligere i denne opplæringen, når teksten er ferdig å vokse, sender det en hendelse. Vi trenger å bruke Runtime å lytte etter den hendelsen. Vi vil bli koding denne funksjonaliteten i de kommende trinnene 
 
 Trinn 2:. Vise og skjule knappene 
 
 De showButtons og hideButtons funksjoner vise eller skjule knappene ved looping gjennom gameButtons bordet , sette hver av knappen synlighet. 
 funksjons hideButtons () for i = 1, #gameButtons gjøre gameButtons [i] .isVisible = false endendfunction showButtons () for i = 1, #gameButtons gjøre gameButtons [i] .isVisible = sann Sluttslutt 
 Trinn 3: drawHangman 
 
 drawHangman funksjonen tar et tall som en parameter. . Avhengig av hva det tallet er, det trekker en bestemt del av bøddelen 
 funksjon drawHangman (drawNum) if (drawNum == 0) deretter drawGallows (); elseif (drawNum == 1) deretter drawHead (); elseif (drawNum == 2) deretter drawBody (); elseif (drawNum == 3) deretter drawArm1 (); elseif (drawNum == 4) så drawArm2 (); elseif (drawNum == 5) da drawLeg1 (); elseif (drawNum == 6) så drawLeg2 (); Sluttslutt 
 Trinn 4: Test Progress 
 
 Det har vært en god stund siden vi har sjekket vår fremgang, men hvis du tester nå du bør være i stand til å spille et par runder. For å tilbakestille spillet gå til Fil > Relansering i Corona Simulator. Husk at det riktige ordet blir skrevet til konsollen, slik som bør hjelpe deg å teste alt fungerer som det skal. 
 
 Når winLoseText er ferdig med å vokse, vil vi starte en ny runde. Hvis brukeren har vunnet runden, vil vi gå til en ny scene hvor bøddelen vil gjøre en lykkelig dans. Hvis brukeren har tapt, vil vi tilbakestille alt i gamescreen.lua og begynne en ny runde. 
 
 Før vi gjør noe av det, men vi trenger å lytte til gameOverEvent som blir sendt fra growText klassen . 
 
 7. Game Over 
 
 Trinn 1: Lytte etter gameOverEvent 
 
 Legg til følgende scenen: showet metode 
 funksjon scene. Fremvisning (hendelse) --SNIP-- if (fase == "gjorde") så Spilletid: addEventListener ( "gameOverEvent", Game) Sluttslutt 
 Vi passerer gameOverEvent som første argument i addEventListener metoden. Når en gameOverEvent er sendt, er Gameover-funksjonen kalles. 
 
 Vi bør også fjerne arrangementet lytteren på et tidspunkt. Vi gjør dette i scenen: hide metode som vist nedenfor 
 funksjon scene. Hide (hendelse) lokal fase = event.phase if (fase == "vil") så Spilletid: removeEventListener ( "gameOverEvent", Game) Sluttslutt 
 Trinn 2: Game 
 
 Legg til følgende kode i gamescreen.lua 
 funksjon Gameover () winLoseText. setVisibility (falsk) if (wonGame == true) så composer.gotoScene ( "gameoverscreen" ) ellers newGame () Sluttslutt 
 Hvis brukeren har vunnet spillet, påberope vi gotoScene metoden på komponisten objektet og overgang til gameoverscreen. Hvis ikke, kaller vi det newGame metoden, som tilbakestiller spillet og skaper et nytt ord 
 
 Trinn 3:. NewGame 
 
 newGame funksjonen tilbakestiller noen variabler, setter knappene til å være synlig, tømmer den hangmanGroup, og skaper et nytt ord. 
 funksjon newGame () clearHangmanGroup () drawHangman (0) numWrong = 0 guessWordText.text = createGuessWord () showButtons () end 
 det meste av denne koden bør være kjent for deg. Den clearHangmanGroup funksjonen er det eneste nye her, og vi vil se på den funksjonen i neste trinn 
 
 Trinn 4:. ClearHangmanGroup 
 
 clearHangmanGroup looper bare gjennom hangmanGroup er numChildren og fjerner dem. I utgangspunktet er vi rydde alt ut, slik at vi kan begynne å tegne på nytt 
 funksjon clearHangmanGroup () for i = hangmanGroup.numChildren, 1, -1 gjøre hangmanGroup [i]. RemoveSelf () hangmanGroup [i] = nilend 
 Trinn 5: Test Progress 
 
 Vi er på et punkt der vi kan teste fremgang igjen. Hvis du tester spillet, kan du miste et spill og et nytt spill skal starte. Du kan gjøre dette så lenge du ønsker. I neste trinn vil vi få gameoverscreen kablet opp. 
 
 8. Game Over Screen 
 
 Opprett en ny fil gameoverscreen.lua og legge til følgende kode i det 
 lokal komponist = require ( "komponist") lokale scenen = composer.newScene () lokal hangmanSprite lokal hangmanAudiofunction scene.: skape (event) lokal gruppe = self.view drawChalkBoard () lokale alternativer = {width = 164, height = 264, numFrames = 86} lokale hangmanSheet = graphics.newImageSheet ( "hangmanSheet.png", alternativer) lokal sequenceData = {{start = 1, teller = 86, tid = 8000, loopCount = 1}} hangmanSprite = display.newSprite (hangmanSheet, sequenceData) hangmanSprite.x = display.contentCenterX hangmanSprite.y = display.contentCenterY hangmanSprite.xScale = 1,5 hangmanSprite.yScale = 1,5 gruppe: sett (hangmanSprite) endfunction scene: vis (hendelse) lokal fase = event.phase lokal previousScene = composer.getSceneName ( "forrige") composer.removeScene (previousScene) if (fase == "gjorde") så hangmanSprite: addEventListener ( "sprite", hangmanListener) hangmanSprite: play () hangmanAudio = audio.loadSound ( "danceMusic.mp3") audio.play (hangmanAudio) endendfunction scene: hide (hendelse) lokal fase = event.phase if (fase == "vil" ) så hangmanSprite: removeEventListener ( "sprite", hangmanListener) audio.stop (hangmanAudio) audio.dispose (hangmanAudio) endendfunction drawChalkBoard () lokal tavla = display.newRect (0, 0, display.contentWidth, display.contentHeight) tavlen: setFillColor (1,1,1) chalkBoard.anchorX = 0 chalkBoard.anchorY = 0 scene.view: sett (tavle) endfunction hangmanListener (hendelse) if (event.phase == "endte") så timer.performWithDelay (1000, newGame, 1) endendfunction newGame () composer.gotoScene ( "gamescreen") endscene: addEventListener ( "skape", scene) scene: addEventListener ( "show", scene) scene: addEventListener ( "skjule", scene) tilbake scene 
 hangmanSprite er en SpriteObject som vil bli brukt til dans animasjon. Den hangmanAudio er en AudioObject som skal brukes til å spille litt musikk mens bøddelen gjør sitt danse 
 
 Trinn 1:. Animere Hangman 
 
 Som jeg nevnte, er hangmanSprite en SpriteObject forekomst og etter ha hangmanSprite være en sprite i stedet for et vanlig bilde, kan vi animere det. Den hangmanSprite har 86 separate bilder, hver og en å være en annen ramme for animasjonen. Du kan se dette ved å åpne hangmanSheet.png i et bilderedigeringsprogram. 
 
 Alternativ tabellen holder bredde, høyde og numFrames av de enkelte bildene i større format. Den numFrames variable inneholder verdien av antall mindre bilder. Den hangmanSheet er en forekomst av ImageSheet objektet, som tar som parametere bildet og opsjoner tabellen. 
 
 sequenceData variabel brukes av SpriteObject eksempel, er startnøkkelen bildet du ønsker å starte sekvensen eller animasjon med, og tellingen nøkkelen er hvor mange totalt bilder det er i animasjonen. Nå Nøkkelen er hvor lang tid det vil ta animasjonen til å spille og loopCount Nøkkelen er hvor mange ganger du ønsker animasjonen til å spille eller gjentakelse. 
 
 Til slutt oppretter du SpriteObject eksempel ved å sende i ImageSheet forekomst og sequenceData. 
 
 Vi setter hangmanSprite sin x og y posisjoner, og skalere det opp til 1,5 normal størrelse ved å bruke XScale og ySkala egenskaper. Vi setter det inn i gruppen for å sørge for at den er fjernet når scenen er fjernet 
 
 Trinn 2:. Spill av lyd 
 
 Inside scenen: show, fjerner vi den forrige scene, legge til en hendelse lytteren til hangmanSprite og påkalle sin play-metoden. Vi instantiate hangmanAudio ved å påberope seg loadSound metoden, passerer i danceMusic.mp3. Til slutt vi kaller stykket metoden for å starte lyden spilles 
 
 I scenen. Hide metode, fjerner vi arrangementet lytteren fra hangmanSprite, påkalle stopp på audio eksempel, og påkalle kast metoden. Den kast metoden sikrer at minnet som ble bevilget til lyden eksempel slippes 
 
 Trinn 3:. Rydder opp 
 
 I hangmanListener sjekker vi om det er i sluttfasen og, hvis sant, betyr det at animasjonen er ferdig å spille. Vi deretter påberope timer.performWithDelay. Tidtakeren branner etter ett sekund, påkalle newGame metoden, som bruker komponist til overgangen tilbake til gamescreen å starte et nytt spill. 
 
 Konklusjon 
 
 Dette var litt av en lang tutorial, men du har nå en funksjonell hangman spill med en fin vri. Som nevnt i begynnelsen av denne opplæringen, prøv å innlemme vanskelighetsgrader. Ett alternativ ville være å ha en alternativskjermen og implementere en SegmentedControl der brukeren kan velge mellom lister av 5, 9 og 13 brev ord. 
 
 Jeg håper du fant denne opplæringen nyttig og har lært noe nytt. Takk for lesing. 

