In deze tutorialserie zullen we een Whack-a-Groundhog-spel maken. Het doel van het spel is tik op de groundhogs voordat ze verdwijnen. Lees verder!
Via het introscherm kan de gebruiker een aantal opties instellen of het spel beginnen spelen.
In het optiescherm kan de gebruiker de muziek aan- en uitzetten en kiezen met welke snelheid de groundhogs verschijnen.
Het spelscherm is waar alle actie plaatsvindt. De groundhogs springen willekeurig uit hun gaten,
en de speler probeert ze te "meppen" voordat ze weer naar binnen gaan. De speler kan ook vanaf hier naar het optiescherm gaan.
Open de Corona Simulator en kies "Nieuw project".
Kies op het volgende scherm de volgende instellingen:
Druk de "volgende"knop, kies dan open in de editor. Dit wordt geopend "Main.lua"in je standaard teksteditor.
Open "Config.lua"en verwijder alles. Update het bestand met het volgende:
toepassing = content = width = 320, height = 480, scale = "letterBox", fps = 30,
Hiermee worden de standaardbreedte, hoogte, schaal en FPS van het project ingesteld. De "brievenbus"Schaalinstelling betekent dat de app zo gelijkmatig mogelijk in beide richtingen opschaalt. Indien nodig toont het spel" Letter Boxed ", zoals je ziet in sommige dvd-films of met oude apps op een iPhone 5.
We willen niet dat de statusbalk wordt weergegeven in onze app, dus voer het volgende in "Main.lua":
display.setStatusBar (display.HiddenStatusBar);
Dit zijn alle variabelen die we in deze game zullen gebruiken. Lees de opmerkingen om te begrijpen waar elk voor is.
local allGroundHogs = - Tabel om alle groundhogs local groundHogXPositions = 240,410,280,145,429,80,208,366 local groundHogYPositions = 259,259,209,184,166,118,91,99 local gameScreenGroup - groep die het spelscherm bevat local introScreenGroup - groep die de intro vasthoudt scherm lokale optiesScreenGroup - groep die het optiescherm lokaal houdt isPlay = false - of de speler het spel heeft gestart of niet lokale groundHogTimer - timer die wordt gebruikt om groundhogs te genereren local groundHogSpeed = 1500
De setUpIntroScreen ()
functie wordt gebruikt om het eerste scherm in te stellen dat de gebruiker zal krijgen.
functie setUpIntroScreen () einde
De setUpOptionsScreen ()
functie zorgt voor het instellen van het optiescherm.
functie setUpOptionsScreen () einde
De setUpGameScreen ()
functie stelt het spelscherm in.
functie setUpGameScreen () einde
De getRandomGroundHog ()
functie selecteert een willekeurige groundhog om in een van de gaten te verschijnen.
functie getRandomGroundHog () einde
Deze functie wordt gebruikt om te vertellen wanneer de animatie van het groundhog is beëindigd.
functie groundHogSpriteListener (event) einde
De groundHogHit (e)
functie wordt gebruikt om te vertellen wanneer de speler op een groundhog heeft getikt.
functie groundHogHit (e) einde
Wanneer de muziek stopt met spelen, gebruiken we deze functie om hem opnieuw te starten.
function soundComplete () einde
In deze stap zullen we beginnen met het instellen van het spelscherm. Voer de volgende code in de setUpGameScreen ()
functie die u in de bovenstaande stap hebt ingevoerd.
gameScreenGroup = display.newGroup () local gameBackground = display.newImage ("background.png", true); gameScreenGroup: insert (gameBackground)
Voer helemaal onderaan 'main.lua' het volgende in:
setUpGameScreen ()
Als je nu test, zou je de achtergrond van het spel moeten zien.
De groundhogs worden geanimeerd met behulp van een spriteblad. Voer het volgende in onder de regel gameScreenGroup: insert (gameBackground)
die u in de bovenstaande stap hebt ingevoerd.
lokale opties = width = 142, height = 91, numFrames = 7 local imageSheet = graphics.newImageSheet ("groundhogsheet.png", opties)
De opties
variabele is een tabel met de opties voor het afbeeldingsblad. De breedte
en hoogte
zijn de breedte en hoogte van de afbeeldingen in de "groundhogsheet.png", en de numFrames
is gelijk aan het aantal afbeeldingen in de .png
Nu dat we onze hebben imageSheet
setup kunnen we de animaties instellen. De animatie (reeks) gegevens worden bewaard in een variabele sequenceData
. Voer het volgende in onder de code van boven.
local sequenceData = name = "show", start = 2, count = 3, time = 1000, loopCount = 0, loopDirection = "bounce"
Hier noemen we de volgorde "show", de begin
is het "frame" van het afbeeldingsvel waarop de reeks begint op en tellen
is het aantal frames in de reeks.
De loopCount
is hoe vaak u de reeks wilt afspelen. Nul betekent voor altijd, en de loopDirection
is hoe je de reeks wilt laten spelen. De bounce-optie betekent vooruit spelen en dan achteruit.
Met de imageSheet
en sequenceData
setup, kunnen we onze groundhogs plaatsen en animeren. Voer de volgende code onder de sequenceData
je hebt de bovenstaande stap ingevoerd.
lokale tempGroundHog voor i = 1, #groundHogXPositions do tempGroundHog = display.newSprite (imageSheet, sequenceData) tempGroundHog.x = groundHogXPositions [i] tempGroundHog.y = groundHogYPositions [i] tempGroundHog: setSequence ("show") gameScreenGroup: insert (tempGroundHog) table.insert (allGroundHogs, tempGroundHog) tempGroundHog: play () end
Elke keer door de lus maken we een nieuwe tempGroundHog
Sprite, stel het in X
een Y
posities, stel de volgorde in op "show", plaats deze in de gameScreenGroup
, en plaats het dan in de allGroundHogs
tafel.
Als je nu test, zou je alle groundhog-animaties moeten zien spelen. Het ziet er echter een beetje verkeerd uit en dat zullen we in het volgende deel van deze serie oplossen!
Hiermee komt het eerste deel van deze serie tot een einde. In het volgende deel zullen we de groundhog-animatie voltooien en de spellogica voltooien. Bedankt voor het lezen en blijf op de hoogte!