Machen Sie ein Match-3-Spiel in Construct 2 The Basics

Willkommen zu einer neuen Serie von Tutorials, in denen ich Ihnen in Construct 2 zeigen werde, wie Sie ein Match-3-Puzzlespiel von Grund auf neu erstellen. In diesem ersten Teil werden wir die Grundlagen für das Spiel legen und das grundlegende Puzzle-Raster erhalten auf dem Bildschirm.


Einführung

Ein Match-3-Spiel ist ein Blockpuzzle, in dem Sie Blöcke im Spielbereich bewegen, um Gruppen von drei oder mehr zu erstellen, die ein gemeinsames Attribut (z. B. eine Farbe oder eine Form) gemeinsam haben. In den meisten 3-Gewinnt-Spielen erhält der Spieler auch Boni für das Übereinstimmen von mehr als drei Blöcken gleichzeitig.

Die meisten Match-3-Puzzlespiele sind von Natur aus wettbewerbsfähig, und das Ziel des Spielers besteht in der Regel darin, die höchste Punktzahl zu erreichen, bevor seine Zeit abläuft, oder eine andere Verlustbedingung ist erfüllt. Einige Beispiele für Match-3-Spiele sind Pokemon Puzzle League, Bejeweled und der jüngste Hit Candy Crush Saga.


Das Spiel, das wir machen werden

Ich habe mich entschieden, das Match-3-Spiel, das wir machen werden, auf Pokemon Puzzle League zu stützen:


Klicken Sie auf benachbarte Blöcke und ziehen Sie sie, um sie auszutauschen. Versuchen Sie, drei in einer Reihe oder Spalte übereinzustimmen. Lassen Sie die Blöcke nicht die Spitze erreichen!

Wenn Sie es noch nie gespielt haben, ist PPL ein recht einfaches Match-3-Spiel, bei dem Blöcke vom unteren Rand des Spielbildschirms aufsteigen und der Spieler ein Spiel erstellen muss, damit der Spielbildschirm nicht voll wird. Wenn die Blöcke die Spitze erreichen, verliert der Spieler und muss erneut von vorne beginnen.

Hier ist eine Demo des Spiels, auf das wir während der gesamten Serie hinarbeiten werden:



In diesem ersten Artikel werden wir uns auf die Grundlagen für unser Spiel konzentrieren. Dieser Artikel konzentriert sich speziell auf das Einrichten des Projekts und das Aufblättern eines Zufallsrasters für den Player.


Bevor wir anfangen

Bevor Sie mit diesem Lernprogramm beginnen, sollten Sie die neueste Version von Construct 2 (C2) installieren. Als ich die ursprüngliche Version des Spiels erstellt hatte, war Release 122 verwendet worden. Solange Sie eine neuere Version als diese haben, sollte es Ihnen gut gehen. Wenn Sie C2 noch nie zuvor verwendet haben, sollten Sie diese Anleitung lesen, in der die Grundlagen der Verwendung von C2 und die meisten Objekttypen beschrieben werden.

Sie sollten auch das Grafikpaket herunterladen, das ich für dieses Lernprogramm erstellt habe. Natürlich können Sie beliebige Grafiken verwenden, aber ich werde für viele Elemente in diesen Lernprogrammen eine spezifische Positionierung vornehmen. Diese Positionen basieren auf den von mir verwendeten Bildern. Wenn Sie andere Grafiken verwenden, müssen Sie die Größenunterschiede in diesen Grafiken berücksichtigen, wenn Sie diese Lernprogramme ausführen.

Wenn Sie alles eingerichtet haben und ein gutes Verständnis von C2 haben, lesen Sie weiter!


Einrichten des Projekts

Bevor wir das gesamte Gameplay tatsächlich erstellen, müssen wir das Projekt selbst einrichten. Laden Sie C2 und führen Sie die folgenden Schritte aus:

  1. Beginnen Sie ein neues Projekt.
  2. In dem Projekteigenschaften, Stellen Sie die Fenstergröße auf 600 x 600.
  3. Füllen Sie das aus Name und Autor Felder.
  4. Gehe zum Schichten Panel und fügen Sie zwei neue Ebenen hinzu.
  5. Benennen Sie die unterste Ebene in um Hintergrund, die mittlere Schicht bis Blöcke, und die oberste Schicht zu Spielfeld.
  6. Gehen in Layout 1 und füge ein Gekachelte Hintergründe Objekt.
    1. Für die Gekachelte Hintergründe Objekt verwenden BG Images / StandardBGTile.bmp aus dem Grafikpaket.
    2. Gehen Sie zu den Eigenschaften des Objekts und benennen Sie es um GameBG.
    3. Legen Sie das Objekt fest Schicht zu Hintergrund.
    4. Legen Sie das Objekt fest Größe sein 650, 650.
    5. Positionieren Sie das Objekt so, dass es den gesamten sichtbaren Bereich des Layouts ausfüllt und wie folgt aussieht:
  7. Erstellen Sie jetzt eine weitere Gekachelte Hintergründe Objekt.
    1. Verwenden Sie das Bild Spielfeldbilder / GameFieldBorder.bmp.
    2. Benennen Sie das Objekt GameFieldBorder.
    3. Stellen Sie das ein Position zu 9, -12.
    4. Stellen Sie das ein Größe zu 16, 732.
    5. Stellen Sie das ein Schicht zu Spielfeld.
  8. Erstellen Sie eine Kopie der  GameFieldBorder Objekt.
    1. Stellen Sie das ein Position der Kopie an  368, -12 .
  9. Als nächstes erstellen Sie eine Sprite Objekt.
    1. Verwenden Sie das Bild Game Field Images / GameFieldBottom.png.
    2. Nennen Sie es GameFieldBottom.
    3. Stellen Sie das ein Position zu 197, 625.
    4. Stellen Sie das ein Größe zu 344, 150.
    5. Stellen Sie das ein Schicht zu Spielfeld.
  10. Machen Sie eine Kopie der GameFieldBottom Objekt.
    1. Stellen Sie das ein Position zu 196, -30.
    2. Stellen Sie das ein Winkel zu 180.

Als letztes müssen wir einen Hintergrund für den tatsächlichen Bereich erstellen, in dem die Blöcke erscheinen.

  1. Erstelle eine neue Sprite Objekt.
    1. Gehe zum Farbwähler und setze das rot, Grün, und Blau zu 0, und das Alpha zu 200.
    2. Verwenden Sie die Farbeimer um das gesamte Bild mit dieser Farbe zu füllen.
    3. Schließen Sie den Animationseditor.
    4. Stellen Sie das ein Größe zu 359, 570.
    5. Stellen Sie das ein Position zu 195,294.
    6. Stellen Sie das ein Schicht zu Hintergrund

Das Spielfeld ist nun abgeschlossen, aber wir müssen noch ein Sprite erstellen, das für die Blöcke verwendet werden kann. 

  1. Machen Sie ein neues Sprite Objekt.
    1. Klicken Sie bei geöffnetem Animationseditor mit der rechten Maustaste in das Symbol Animationsbilder Fenster und wählen Sie "Frames importieren… ".
    2. Wählen Sie jedes Bild in der Blöcke Ordner aus dem Grafikpaket und importieren sie alle.
    3. Löschen Sie Bild 0, damit das graue Blockbild Bild 0 ist und kein leeres Bild vorhanden ist.
    4. Vergewissern Sie sich, dass sich Ihre Bilder in der gleichen Reihenfolge befinden wie meine Blöcke in der folgenden Abbildung:

Bevor wir weitergehen, möchte ich die Blockbilder erklären. Der graue Block repräsentiert einen "inaktiven" Block, der in einem nächsten Tutorial implementiert wird. Die verbleibenden Bilder werden für jeden Block in Dreiergruppen gruppiert: Der erste Frame ist für den Fall, dass der Block nicht verwendet wird, der zweite für den Fall, dass der Spieler den Block bearbeitet, und der dritte für den Block, wenn der Block zu einem Block passt Gruppe.

Nehmen Sie schließlich den Block, den wir erstellt haben, und platzieren Sie ihn irgendwo im Layout, damit der Spieler ihn während eines Spiels nicht sehen kann. Stellen Sie außerdem die Größe des Blocks auf 40, 40.

Wir haben jetzt alle Bilder, die wir für diesen Artikel benötigen, mitgebracht und können das Spiel wirklich funktionieren lassen.


Ein zufälliges Blockraster laichen

In der endgültigen Version des Spiels bewegen sich die Blöcke ständig nach oben, und neue Blöcke werden von unten auf den Bildschirm gedrückt. Für den Moment müssen wir jedoch die grundlegenden Mechaniken zum Laufen bringen, also werden wir nur ein 8x8-Raster von Blöcken erzeugen und dabei belassen.

Gehe zu Veranstaltungsblatt 1 Fügen Sie diese globalen Variablen hinzu, um die anfängliche Laichposition der Blöcke zu definieren:

 Globale Variable: SPAWNX-Wert = 49 Konstante = True Globale Variable: SPAWNY-Wert = 526 Konstante = True

Wir müssen noch etwas anderes tun, bevor wir das erste Ereignis durchführen: Wir müssen eine Instanzvariable für den Block erstellen, die dem Block die Farbe angibt.

Erstellen Sie eine neue Instanzvariable für das Blockobjekt, und nennen Sie sie Farbe und ändern Sie keine anderen Einstellungen.

Jetzt machen wir unsere erste Veranstaltung. Das Ziel dieses Ereignisses ist es, zu Testzwecken ein statisches Blockraster zu erstellen:

 Ereignis: Bedingung: System> Beim Start des Layouts Bedingung: System> Für Name: "Y" Startindex = 0 Ende Index = 7 Unterereignis: System> Für Name: "X" Startindex = 0 Ende Index = 7 Aktion: System> Objekt erstellen Objekt: Block X = (SPAWNX + (loopIndex ("X")) * (Block.Width + 2)) Y = (SPAWNY - (LoopIndex ("Y")) * (Block.Width + 2) )

Beide Formeln sagen grundsätzlich dasselbe aus. Zuerst addieren wir die Blockbreite um 2, sodass jeder Block einen 2px-Puffer zwischen sich und seinen Nachbarn hat, um falsche Kollisionen bei der Kollisionserkennung zu verhindern. Dann multiplizieren wir diese Zahl mit dem aktuellen Index in der for-Schleife und addieren sie zur Startposition von X oder Y. Außerdem subtrahieren wir den Y-Wert, da sich in C2 der 0-Punkt auf der Y-Achse oben auf dem Spielbildschirm befindet. Wenn Sie den Wert der Y-Position verringern, setzen wir ein Objekt näher an den oberen Rand des Bildschirms.

Was leistet das also? Dies bedeutet, dass, wenn die X- und Y-Schleifen iterieren und die Werte von X und Y zunehmen, sich die Position, in die jeder Block eingefügt wird, ändert, was schließlich zu einem quadratischen Gitter führt:

Wenn Sie das Spiel zu diesem Zeitpunkt ausführen, haben Sie ein Raster aus Blöcken - aber anstatt verschiedene Farben zu haben, werden alle Blöcke einfach nacheinander durchlaufen.

Um dies zu beheben, müssen wir zwei Dinge tun.

Zunächst müssen wir jedem Block einen Farbwert zuweisen, indem wir die zuvor erstellte Instanzvariable verwenden. Fügen Sie dazu eine weitere Aktion hinzu:

 Aktion: Blockieren> Wert setzen Farbe = Boden (zufällig (1,7))

Dadurch wird dem Block ein zufälliger Farbwert von 1 bis 6 zugewiesen. (Der Grund dafür ist nicht von 1 bis 7, wird in der Erklärung des erläutert Zufällig Funktion.)

Ihre Funktion sollte jetzt so aussehen:

Wir müssen auch ein System hinzufügen, das das Image eines Blocks basierend auf seinem Wert ändert. Fügen Sie dazu dem Block-Objekt eine neue Instanzvariable hinzu:

 Instanzvariable für Blockname: "IsMatched" Typ: Boolean-Initialwert = false

Fügen Sie nun ein neues Ereignis hinzu:

 Ereignis: System> Aktion für alle Häkchen: Blockieren> Rahmenwert festlegen = (Block.Farbe-1) * 3 + 1

Diese Formel subtrahiert zuerst 1 vom Farbwert des Blocks, um der Tatsache Rechnung zu tragen, dass die Werte bei 1 und nicht bei 0 beginnen. Dann multipliziert sie diese Zahl mit 3, um die Tatsache zu berücksichtigen, dass jeder Block 3 Animationsrahmen hat. Schließlich addiert er diesen Wert um 1, da das Standardbild eines Blocks das erste Bild in der Bildgruppe ist.

Sehen wir uns ein schnelles Beispiel mit einem Block mit dem Farbwert 4 an, um zu sehen, welchen Animationsrahmen es verwenden wird. Zuerst wird 1 von dem Farbwert subtrahiert, um 3 zu erhalten. Als Nächstes wird diese Zahl mit 3 multipliziert, um 9 zu erhalten. Schließlich wird 1 zu diesem Wert hinzugefügt, um 10 zu erhalten. Dies bedeutet, dass ein Block mit einem Farbwert von 4 den Rahmen 10 als verwendet Der Standard-Animationsrahmen ist ein violetter / quadratischer Block.

Wenn Sie Ihr Spiel jetzt ausführen, werden Sie feststellen, dass jeder Block eine andere Farbe hat. Wir haben jedoch noch keine Animationen implementiert, wenn sich der Mauszeiger über dem Block befindet oder wenn er abgeglichen wird. Dies wird im nächsten Tutorial behandelt und erläutert, wie zwei benachbarte Blöcke ausgetauscht werden.

Hier ist eine kleine Demo, wie das Spiel an dieser Stelle aussehen sollte (hier die Quelle):

Klicken Sie hier, um die Demo zu laden.

Wenn Sie selbstständig weiterarbeiten möchten, sollten Sie den Animationsrahmen des Blocks basierend auf dem Ereignis "Maus> Cursor ist über Objekt" ändern. Sie können sich auch mit dem "Drag & Drop" -Verhalten beschäftigen, um den Block zu manipulieren, und darüber nachdenken, was der Spieler mit dem Block zu tun versucht, wenn er mit dem Ziehen beginnt oder wenn er ihn ablegt.


Fazit

Vielen Dank, dass Sie diesen Teil des Tutorials gelesen haben, in dem wir die Grundlagen für unser Match-3-Spiel gelegt haben. Kommen Sie bald wieder für den nächsten Teil der Serie! Sie können sich per Facebook, Twitter, Google+, RSS oder E-Mail auf dem Laufenden halten.