Maak een Brick Breaker-game met de Corona SDK Application Setup

In deze tutorialserie bouwen we helemaal opnieuw een Brick Breaker-game met behulp van de Corona SDK. Het doel van dit spel is om een ​​pong-achtige peddel te besturen om een ​​bal tegen een stapel stenen te slaan totdat ze allemaal breken.


Stap 1: Applicatieoverzicht

Het doel van deze game is om een ​​peddel te gebruiken om een ​​bal in een stapel stenen te slaan totdat alle stenen zijn gebroken zonder dat de bal de peddel mist en van het scherm vliegt. Als dit lukt, gaat de gebruiker naar een nieuw niveau, anders eindigt het spel.


Stap 2: doelapparaat

Het eerste wat we moeten doen is het platform selecteren waar we onze app binnen willen laten, op deze manier kunnen we de grootte kiezen voor de afbeeldingen die we zullen gebruiken.

Het iOS-platform heeft deze kenmerken:

  • iPad: 1024x768px, 132 ppi
  • iPhone / iPod Touch: 320 x 480 px, 163 ppi
  • Iphone 4: 960x640 px, 326 ppi

Omdat Android een open platform is, zijn er veel verschillende apparaten en resoluties. Een paar van de meest voorkomende schermkenmerken zijn:

  • Google Nexus One: 480x800px, 254 ppi
  • Motorola Droid X: 854x480 px, 228 ppi
  • HTC Evo: 480x800px, 217 ppi

In deze zelfstudie concentreren we ons op het iOS-platform met het grafische ontwerp, dat specifiek wordt ontwikkeld voor distributie naar een iPhone / iPod touch, maar de hier gepresenteerde code moet ook van toepassing zijn op Android-ontwikkeling met de Corona SDK.


Stap 3: Interface

Er wordt een kleurrijke, mooi uitziende interface weergegeven, dit omvat meerdere vormen, knoppen, bitmaps en meer.

De interface grafische hulpmiddelen die nodig zijn voor deze tutorial zijn te vinden in de bijgevoegde download.


Stap 4: grafische afbeeldingen exporteren

Afhankelijk van het apparaat dat u hebt geselecteerd, moet u mogelijk de afbeeldingen in de aanbevolen ppi exporteren, u kunt dit doen in uw favoriete afbeeldingseditor.

Ik gebruikte de Pas grootte aan? functie in de Preview-app op Mac OS X.

Vergeet niet om de afbeeldingen een beschrijvende naam te geven en deze in uw projectmap op te slaan.


Stap 5: Main.lua

Tijd om onze applicatie te schrijven!

Open de Lua-editor van uw voorkeur (elke teksteditor werkt, maar niet alle editors bieden Lua-syntaxisaccentuering) en bereiden u voor om uw geweldige app te schrijven. Vergeet niet om het bestand op te slaan als main.lua in je projectmap.


Stap 6: codestructuur

We zullen onze code structureren alsof het een Klasse is. Als u ActionScript of Java kent, zou u de structuur vertrouwd moeten vinden.

 Necesary Classes Variabelen en constanten Declare Functions contructor (Hoofdfunctie) class methods (other functions) call Hoofdfunctie

Stap 7: Statusbalk verbergen

 display.setStatusBar (display.HiddenStatusBar)

Deze code verbergt de statusbalk. De statusbalk is de balk boven op het scherm van het apparaat die de tijd, het signaal en andere indicatoren toont.


Stap 8: laad Physics Engine

We maken gebruik van de krachtige Box2D-engine die is ingebouwd in Corona. Gebruik deze code om deze in uw app op te nemen:

 --Physics Engine local physics = vereisen 'fysica' physics.start () physics.setGravity (0, 0) - Stel zwaartekracht in op 0 omdat we het niet nodig hebben

Stap 9: Spelvariabelen en constanten

Dit zijn de basisvariabelen en constanten die we zullen gebruiken, lees de opmerkingen in de code om meer over hen te weten te komen.

 lokaal BRICK_W = 41 - brikbreedte lokaal BRICK_H = 21 - lokale hoogte OFFSET = 23 - een offset gebruikt om de stenen lokaal te centreren W_LEN = 8 - de lengte van de niveaus, slechts 8 horizontale stenen moeten op het podium worden gemaakt local SCORE_CONST = 100 - het bedrag dat aan de score moet worden toegevoegd als een baksteen wordt geraakt lokale score = 0 - slaat de huidige score op local bricks = display.newGroup () - houdt alle level bricks bij lokale xSpeed ​​= 5 local ySpeed ​​= -5 local xDir = 1 - x direction local yDir = 1 local gameEvent = "- slaat game-evenementen op (win, verlies, eindigt) local currentLevel = 1

Stap 10: Menuscherm

Dit is het hoofdscherm van de applicatie, het zal de eerste interactieve weergave zijn die in onze game verschijnt. Deze variabelen slaan de achtergrond en de onderdelen van het menuscherm op.

 lokale achtergrond = display.newImage ('bg.png') lokaal menu Scherm lokaal m Scherm lokaal starten B lokaal over B

Besteed speciale aandacht aan de regel met display.newImage ( 'bg.png'). Dit is verantwoordelijk voor het weergeven van de initiële achtergrondafbeelding op het scherm.


Stap 11: Over het scherm

Het scherm over toont de credits, het jaar en het copyright van het spel. Deze variabele wordt gebruikt om een ​​verwijzing naar de weergave op te slaan:

 lokaal over Scherm

Stap 12: Spelscherm

Dit is het spelscherm, het wordt gemaakt wanneer het Begin knop is aangetikt.

Variabelen om het spelscherm op te slaan:

 lokale lokale bal lokale bal

Stap 13: Score & niveau tekst

Lokale variabelen die de score / niveau tekstvelden en score / niveau numerieke waarden opslaan:

 lokale scoreTekst lokale scoreNum lokaal niveauTekst lokaal niveauNum

Stap 14: Waarschuwingsscherm

Dit scherm verschijnt als het spel is beslist. Het bericht vertelt de speler dat ze winnen of verliezen.

Het waarschuwingsscherm wordt opgeslagen door de volgende variabelen:

 local alertScreen local alertBg local box local titleTF local msgTF

Stap 15: Niveaus

Al onze niveaus worden opgeslagen in tabellen (de Lua-versie van een array).

Dit is in wezen een tabel met een tabel. Je zou dit in één regel kunnen declareren, maar met de juiste opmaak kun je door het uit elkaar plaatsen de vorm van de niveaus zien:

 lokale niveaus =  niveaus [1] = 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0, 0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,1,1,1,1,1,1,0 , 0,1,1,1,1,1,1,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0, 0,0, 0,0,0,0,0,0,0,0, niveaus [2] = 0,0,0,0,0,0,0,0, 0 , 0,0,1,1,0,0,0, 0,0,1,0,0,1,0,0, 0,0,0,0,0,1,0,0 , 0,0,0,0,1,0,0,0, 0,0,0,1,0,0,0,0, 0,0,1,0,0,0 , 0,0, 0,0,1,1,1,1,0,0, niveaus [3] = 0,0,0,0,0,0,0,0,  0,0,0,0,0,0,0,0, 0,0,0,1,1,0,0,0, 0,1,0,0,0,0,1, 0, 0,1,1,1,1,1,1,0, 0,1,0,1,1,0,1,0, 0,0,0,0,0, 0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,0,0,0,0,0, levels [4] =  0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 1,1,1,1,1,1,1 , 1, 1,0,0,0,0,0,0,1, 1,0,0,0,0,0,0,1, 1,0,0,0,0 , 0,0,1, 1,0,0,0,0,0,0,1, 1,0,0,0,0,0,0,1, 1,1,1 , 1,1,1,1,1

In de multidimensionale tabellen hierboven, de 1's vertegenwoordigen de ruimte in de fase waarin een steen zal worden geplaatst, en de 0's zijn gewoon lege ruimte. Later zullen de nummers worden gelezen door een functie die een steen op de gameweergave plaatst. We hebben er vier hierboven toegevoegd, maar u kunt er zoveel toevoegen als u wilt!


De volgende keer?

Je hebt nu de interface en de basisinstellingen van onze game gezien. Houd ons in de gaten voor deel twee van deze serie, waarin we interactiviteit aan de interface en botsingsdetectie tussen onze grafische afbeeldingen toevoegen.