Lag en Dancing Hangman spillet i Corona: Prosjekt Setup

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