Create en Dancing Hangman spillet i Corona: Prosjekt Setup 
 23 
 Del 
 6 
 Del 
 
 Dette Cyber mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av 
 Dette innlegget er en del av en serie som heter Opprett en Dancing Hangman spillet i Corona.Create en Dancing Hangman spillet i Corona. GameplayWhat du skal lage 
 I denne todelte serien, jeg skal vise deg hvordan du lager den klassiske spillet hangman. Denne versjonen kommer med en overraskende slutt, men. Hvis du vinner spillet bøddelen gjør en lykkelig dans. Underveis vil du lære om Corona tegning API, scene ledelse, ekspedering egendefinerte hendelser, hvordan å utnytte en sprite ark, og hvordan du bruker moduler for å etterligne klasser i Lua programmeringsspråk. 
 
 I den andre delen av denne serien, vil vi gjøre bøddelen dans hvis brukeren vinner runden. Under bøddel dans, spiller vi litt musikk som ble opprettet av knarmahfox, lisensiert under Creative Commons Attribution License. 
 
 1. Nytt prosjekt 
 
 Åpne Corona Simulator, klikker du Nytt prosjekt, og konfigurere prosjektet som vist nedenfor. 
 
 Velg hvor du vil lagre prosjektet, og klikk OK. Dette vil opprette en mappe med et antall ikoner og tre filer som er av interesse for oss, main.lua, config.lua, og build.settings. Vi vil ta en titt på hver fil i de neste trinnene. 
 
 2. Bygg Innstillinger 
 
 build.settings filen er ansvarlig for oppbygging tids egenskapene til prosjektet. Åpne denne filen, fjerne innholdet, og fylle den med følgende konfigurasjon. 
 Innstillinger = {orientering = {default = "portrett", støttet = {"portrett"},}} 
 I build.settings, Vi setter standard orientering og begrenser anvendelsen å bare støtte et stående format. Du kan finne ut hvilke andre innstillinger du kan inkludere i build.settings ved å utforske dokumentasjonen Corona. 
 
 3. Programkonfigurasjon 
 
 config.lua filen håndterer konfigurasjonen for programmet. Som vi gjorde med build.settings, åpne denne filen, fjerne innholdet, og legge til følgende konfigurasjon. 
 Søknad = {content = {width = 768, height = 1024, skala = "letterbox", fps = 30} } 
 Dette setter standard bredde og høyde på skjermen, bruker letterbox å skalere bilder og setter bildefrekvens til 30. Besøk Corona dokumentasjonen for å lære mer om de andre egenskapene du kan stille inn i config.lua. 
 
 4. Entry Point 
 
 main.lua filen er den filen som programmet laster først og bruker til bootstrap søknaden. Vi skal bruke main.lua å sette noen standardinnstillinger for søknaden og Komponist biblioteket for å laste det første skjermbildet. 
 
 Hvis du ikke er kjent med Corona Komponist bibliotek, så jeg anbefaler å gi 
 dokumentasjon en rask lese. Kort sagt, er Komponist den innebygde løsningen på scene (skjerm) etablering og styring i Corona. Biblioteket gir utviklere med en enkel måte å opprette og overgang mellom scenene. 
 
 Den nyere Komponist modulen erstatter eldre og nå frarådet Storyboard modul. En migrasjon guide er tilgjengelig for å hjelpe konvertere dine gamle prosjekter over til å bruke Komponist 
 
 Trinn 1:. Hide Status Bar 
 
 Vi ønsker ikke statuslinjen viser i søknaden vår. Legg inn følgende kode til main.lua å skjule statuslinjen 
 display.setStatusBar (display.HiddenStatusBar) 
 Trinn 2:. Set Default Anchor poeng 
 
 For å sette standard anker eller registreringspunktene legger du til følgende kode blokken til main.lua. 
 display.setDefault ("anchorX", 0,5) display.setDefault ("anchorY", 0,5) 
 anchorX og anchorY egenskaper angi hvor du vil registreringspunkt skjermen objekter å være. Legg merke til at verdien varierer fra 0.0 til 1.0. For eksempel, hvis du ønsker registreringspunkt for å være øverst til venstre på skjermen objekt, så du hadde satt begge eiendommene til 0,0 
 
 Trinn 3:. Seed Random Generator 
 
 Vår spillet vil være å bruke Lua er Math.random funksjon for å generere tilfeldige tall. For å være sikker på at tallene er helt tilfeldig hver gang programmet kjøres, må du oppgi en startverdi. Hvis du ikke oppgir en startverdi, vil programmet generere samme tilfeldig hver gang. 
 
 En god startverdi er Lua er os.time funksjon siden det vil være forskjellig hver gang 
 programmet kjøres . Legg inn følgende kode til main.lua 
 math.randomseed (os.time ()) 
 Trinn 4:. Krev Komponist 
 
 Før vi kan bruke Komponist modulen, må vi først trenger det . Legg til følgende main.lua 
 lokal komponist = require ("komponist") 
 Trinn 5:. Legg den GameScreen Scene 
 
 Legg inn følgende kode til main.lua. Dette vil gjøre programmet gå til scenen heter gamescreen, som også er en Lua fil, gamescreen.lua. Du trenger ikke å legge den filtypen når du ringer gotoScene funksjonen. 
 Composer.gotoScene ("gamescreen") 
 5. GameScreen 
 
 Opprett en ny Lua fil kalt gamescreen.lua i prosjektets hovedkatalog. Dette vil være en komponist-fil, noe som betyr at vi må kreve at Komponist modulen og lage en komponist scene. Legg til følgende tekstutdraget til gamescreen.lua. 
 Lokal komponist = require ("komponist") lokale scenen = composer.newScene () avkastning scene 
 Kallet til newScene gjør gamescreen.lua del av komponistens scene hierarki. Dette betyr at det blir en skjerm i spillet, som vi kan kalle komponistens metoder på. 
 
 Herfra ut, lagt koden til gamescreen.lua bør plasseres over avkastningen uttalelse. 
 
 Trinn 1: Lokal Variabler 
 
 Følgende biten inneholder lokale variabler vi trenger for gamescreen scene 
 lokale widget = require ("Widget") - Trengs for knappen widgetlocal growText = krever (. "growtext") - En modul som gir et voksende tekst effectlocal words5 = {} - Holder ord 5 tegn eller mindre i lengthlocal words9 = {} - Holder ord 9 tegn eller mindre i lengthlocal words13 = {} - Holder ord 13 tegn eller mindre i lengthlocal hangmanGroup lokal alphabetArray = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"}local guessWordTextlocal theWord - Selve wordlocal guessWord - Ordet spilleren har guessedlocal numWrong = 0local gameButtons = {} - holder hele buttonslocal winLoseTextlocal wonGame = false 
 Det er viktig å forstå at lokale variabler i hoved blings bare bli kalt gang, når scenen er lastet for første gang. Når du navigerer gjennom komponistens scener, for eksempel ved å påberope metoder som gotoScence, vil de lokale variablene allerede initialisert. 
 
 Dette er viktig å huske på hvis du vil at lokale variabler å bli klargjort på nytt når 
 navigering tilbake til en bestemt scene. Den enkleste måten å gjøre dette på er å fjerne scene fra hierarkiet komponist ved å ringe removeScence metoden. Neste gang du navigere til den scenen, vil scenen automatisk lastes på nytt. Det er tilnærmingen vi skal ta i denne opplæringen. 
 
 For å kunne bruke Corona ButtonWidget, må vi kreve at Widget biblioteket. Den growText modulen er en spesialmodul vi vil skape for å gi en voksende teksteffekt. Opprett en ny fil i prosjekt mappe kalt growtext.lua 
 
 Trinn 2:. Komponist Hendelser 
 
 Hvis du har tatt deg tid til å lese dokumentasjon av Komponist biblioteket, som jeg linket til tidligere, vil du ha lagt merke til dokumentasjonen inneholder en mal som inneholder alle mulige komponist hendelsen. Kommentarene er svært nyttig som de indikerer hvilke hendelser å utnytte for initialisering eiendeler, timere, etc. Vi er interessert i scenen: opprette, scene: show, og scene:. Skjul metoder for denne opplæringen 
 
 scenen: skape 
 
 Legg inn følgende kode til gamescreen.lua 
 funksjon scene. opprette (hendelse) lokal gruppe = self.viewend 
 Denne metoden kalles når scenen syn ikke finnes ennå. Det er her du skal initialisere visningsobjekter og legge dem til åstedet. Gruppen variable peker til self.view, som er en GroupObject for hele scenen 
 
 scene. Vis 
 
 Komponist scene: showet metoden har to faser. Viljen fasen kalles når scenen er fortsatt off-screen, men er i ferd med å komme på skjermen. Det gjorde fasen kalles når scenen er på skjermen. Det er der du vil legge til koden for å gjøre scenen livne, start timere, legge hendelsen lyttere, spille av lyd, etc. 
 
 I denne opplæringen, vi er bare interessert i gjorde fasen. Legg inn følgende kode til gamescreen.lua 
 funksjon scene. Showet (hendelse) lokal fase = event.phase lokal previousScene = composer.getSceneName ("forrige") if (previousScene ~ = null) så composer.removeScene (previousScene ) end if (fase == "gjorde") så Sluttslutt 
 Vi erklærer en lokal variabel fase, som vi bruker til å sjekke hvilken fase showet metoden er i. Siden vi vil komme tilbake til denne scenen senere i spillet, vi sjekker for å se om det er en tidligere scene og i så fall, ta det 
 
 scene. skjule 
 
 Komponist scene: hide metoden har også to faser. Viljen fasen kalles når scenen er på skjermen, men er i ferd med å gå off-screen. Her vil du ønsker å stoppe eventuelle tidtakere, fjerner hendelsen lyttere, stoppe lyd, er etc. gjorde fasen kalles når scenen har gått av skjermen. 
 
 I denne opplæringen, vi er bare interessert i viljen fase . 
 funksjon scene: hide (hendelse) lokal fase = event.phase if (fase == "vil") så Sluttslutt 
 Trinn 3: Legg Scene Lyttere 
 
 Vi må legge til scene lyttere for den skaper, show, og skjule metoder. Legg til følgende kode i gamescreen.lua 
 scene. AddEventListener ("skape", scene) scenen: addEventListener ("show", scene) scenen: addEventListener ("skjule", scene) scenen: addEventListener ("ødelegge", scene) 
 Trinn 4: Test Progress 
 
 Du skal nå teste prosjektet for å sikre at det ikke er noen feil. En enkel måte å bekrefte at prosjektet fungerer som det skal, er å sette en print uttalelse i scenen. Showet metode som vist nedenfor 
 funksjon scene: Vis (hendelse) lokal fase = event.phase --SNIP-- if (fase == "gjorde") deretter skrive ("Working") - Midlertidig print uttalelse Sluttslutt 
 Hvis du teste appen og se i konsollen skal du se "arbeider" har blitt skrevet ut. Du kan fjerne utskrifts uttalelsen nå som du har verifisert prosjektet fungerer som det skal. 
 
 6. Tegning Tavle 
 
 Vi vil trekke en "tavle" som vil bli brukt som bakgrunn for spillet. Skriv inn følgende kode i gamescreen.lua 
 funksjon drawChalkBoard (r, g, b) lokal tavla = display.newRect (0, 0, display.contentWidth, display.contentHeight) tavlen. SetFillColor (r, g, b) chalkBoard.anchorX = 0 chalkBoard.anchorY = 0 scene.view: sett (tavle) end 
 newRect metoden tegner et rektangel på skjermen. Det tar som parametre x- og y-posisjoner av rektangelet, og bredden og høyden. Vi bruker display.contentWidth og display.contentHeight, som representerer den opprinnelige bredden og høyden av innholdet i piksler. Disse standard til skjermens bredde og høyde. 
 
 setFillColor tar som parameter R, G og B-verdier i prosent, fra 0 til 1. Ved bestått i R, G og B-verdier som parametere kan vi lett endre fargen på tavlen. 
 
 Tidligere i denne opplæringen, vi har satt standard anchorX og anchorY til 0,5. Vi setter dem til 0 her så rektangelet vil bli trukket fra øverst til venstre på skjermen. Vi setter tavlen inn på scenen syn, slik at det vil bli fjernet når scenen selv er fjernet 
 
 Deretter må vi påkalle denne metoden i scenen. Skape metode som vist i følgende kodebit <. br> funksjon scene: lage (hendelse) lokal gruppe = self.view drawChalkBoard (1,1,1) end 
 7. Tegning API 
 
 The Corona SDK gir en tegning API gjennom Skjerm klassen. Vi vil bare bruke den tegningen metoder newCircle og linjeskift i denne opplæringen. Vi brukte newRect tegningen metoden i det foregående trinn. Skjerm-klassen gir også en metode for å tegne polygoner. Sjekk ut dokumentasjonen for mer info 
 
 Trinn 1:. Legge til hangmanGroup 
 
 Spillet vil trekke bøddel og plassere den i en GroupObject, hangmanGroup. Dette vil gi oss mulighet til å operere på de trukne stykker som gruppe. Legg til følgende til åstedet: skape metode 
 funksjon scene. Opprette (hendelse) --SNIP-- hangmanGroup = display.newGroup () gruppe: sett (hangmanGroup) hangmanGroup.x = 180 hangmanGroup.y = 180end 
 Trinn 2:. Tegning Hangman 
 
 drawGallows 
 
 Legg til følgende kode i gamescreen.lua 
 funksjons drawGallows () lokale galgen = display.newLine (hangmanGroup, 20,380,360, 380) Gallows : føye (290,380,290,50,180,50,180,90) galgen: setStrokeColor (0, 0, 0) gallows.strokeWidth = 3end 
 Her bruker vi Newline metode for å trekke galgen. Parametrene til Newline er den gruppen hvor grensen går, den start x og y posisjoner av linjen, og de slutter x og y posisjoner av linjen. 
 
 Den føyer metoden lar oss legge ekstra x og y-parene i den opprinnelige linjen. Metoden setStrokeColor setter farge på linjen og strokeWidth egenskapen angir bredden på linjen 
 
 Påkall denne metoden i scene. Opprette 
 funksjon scene. Opprette (hendelse) --SNIP - hangmanGroup.x = 180 hangmanGroup.y = 180 drawGallows () end 
 Hvis du teste spillet på dette punktet, bør du se galgen trukket til skjermen 
 
 drawHead 
   Følgende kode trekker hodet 
 funksjon drawHead () lokal hode = display.newCircle (hangmanGroup, 150,90,30) hode. setStrokeColor (0,0,0) hode: setFillColor (0,0 , 0,0) head.strokeWidth = 3 head.anchorX = 0 head.anchorY = 0 slutten 
 newCircle metoden tar som parameter gruppen inn for å tegne sirkelen, x og y posisjoner, og radius av sirkel. Med setFillColor metoden passerer vi i en ekstra 0, som er alfa egenskapen. Vi ønsker ikke en fylt sirkel, så ved å sende inn 0 fyllingen vil være helt gjennomsiktig. De andre alternativene bør være kjent hvis du har fulgt med. 
 
 drawBody 
 
 drawBody funksjon trekker en loddrett linje som representerer bøddelen kropp. 
 Funksjon drawBody () lokal kroppen = display.newLine (hangmanGroup, 180150180300) kropp. setStrokeColor (0, 0, 0) body.strokeWidth = 3end 
 drawArm1 og drawArm2 
 
 De drawArm1 og drawArm2 funksjoner trekke bøddel armer 
 funksjon drawArm1 () lokal arm = display.newLine (hangmanGroup, 180200130190) arm: setStrokeColor (0, 0, 0) arm.strokeWidth = 3endfunction drawArm2 () lokal arm = display.newLine (hangmanGroup, 180200230190) arm: setStrokeColor (0, 0 , 0) arm.strokeWidth = 3end  drawLeg1 og drawLeg2 
 
 De drawLeg1 og drawLeg2 funksjoner trekke bøddel ben. 
 funksjon drawLeg1 () lokal etappe = display.newLine (hangmanGroup, 180300130330 ) etappe: setStrokeColor (0, 0, 0) leg.strokeWidth = 3endfunction drawLeg2 () lokal etappe = display.newLine (hangmanGroup, 180300230330) etappe: setStrokeColor (0, 0, 0) leg.strokeWidth = 3end 
 8. Testing Progress 
 
 Nå som vi har alle metodene i stedet å trekke bøddel, kan vi teste og sørge for at alt fungerer som det skal. Alt vi trenger å gjøre er å påberope hver av de tidligere metoder i scenen: skape metode 
 funksjon scene. Opprette (hendelse) --SNIP-- drawGallows () drawHead () drawBody () drawArm1 () drawArm2 () drawLeg1 () drawLeg2 () end 
 Du kan nå fjerne alle funksjonskall vi nettopp har lagt. Vi ønsker ikke bøddelen blir trukket så snart spillet starter. Pass på at du forlater drawGallows metoden selv. 
 
 
 Dette bringer Konklusjon 
 den første av denne todelte serien til en avslutning. I den andre delen, vil vi gjennomføre gameplay og få bøddelen dans til noen glad musikk. Takk for lesing og jeg håper å se deg i den andre delen. Anmeldelser
            
            
 
		  
Previous:Swift fra Scratch: Arv og Protocols 
Next Page:Windows Phone 8 Succinctly: Introduction 
			 
         
 Følgende kode trekker hodet 
 funksjon drawHead () lokal hode = display.newCircle (hangmanGroup, 150,90,30) hode. setStrokeColor (0,0,0) hode: setFillColor (0,0 , 0,0) head.strokeWidth = 3 head.anchorX = 0 head.anchorY = 0 slutten 
 newCircle metoden tar som parameter gruppen inn for å tegne sirkelen, x og y posisjoner, og radius av sirkel. Med setFillColor metoden passerer vi i en ekstra 0, som er alfa egenskapen. Vi ønsker ikke en fylt sirkel, så ved å sende inn 0 fyllingen vil være helt gjennomsiktig. De andre alternativene bør være kjent hvis du har fulgt med. 
 
 drawBody 
 
 drawBody funksjon trekker en loddrett linje som representerer bøddelen kropp. 
 Funksjon drawBody () lokal kroppen = display.newLine (hangmanGroup, 180150180300) kropp. setStrokeColor (0, 0, 0) body.strokeWidth = 3end 
 drawArm1 og drawArm2 
 
 De drawArm1 og drawArm2 funksjoner trekke bøddel armer 
 funksjon drawArm1 () lokal arm = display.newLine (hangmanGroup, 180200130190) arm: setStrokeColor (0, 0, 0) arm.strokeWidth = 3endfunction drawArm2 () lokal arm = display.newLine (hangmanGroup, 180200230190) arm: setStrokeColor (0, 0 , 0) arm.strokeWidth = 3end  drawLeg1 og drawLeg2 
 
 De drawLeg1 og drawLeg2 funksjoner trekke bøddel ben. 
 funksjon drawLeg1 () lokal etappe = display.newLine (hangmanGroup, 180300130330 ) etappe: setStrokeColor (0, 0, 0) leg.strokeWidth = 3endfunction drawLeg2 () lokal etappe = display.newLine (hangmanGroup, 180300230330) etappe: setStrokeColor (0, 0, 0) leg.strokeWidth = 3end 
 8. Testing Progress 
 
 Nå som vi har alle metodene i stedet å trekke bøddel, kan vi teste og sørge for at alt fungerer som det skal. Alt vi trenger å gjøre er å påberope hver av de tidligere metoder i scenen: skape metode 
 funksjon scene. Opprette (hendelse) --SNIP-- drawGallows () drawHead () drawBody () drawArm1 () drawArm2 () drawLeg1 () drawLeg2 () end 
 Du kan nå fjerne alle funksjonskall vi nettopp har lagt. Vi ønsker ikke bøddelen blir trukket så snart spillet starter. Pass på at du forlater drawGallows metoden selv. 
 
 
 Dette bringer Konklusjon 
 den første av denne todelte serien til en avslutning. I den andre delen, vil vi gjennomføre gameplay og få bøddelen dans til noen glad musikk. Takk for lesing og jeg håper å se deg i den andre delen. Anmeldelser

