Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Games

Erstellen Sie mit AS3 ein vollständiges Tippspiel in Flash

by
Read Time:26 minsLanguages:

German (Deutsch) translation by Nikol Angelowa (you can also view the original English article)

In Anlehnung an mein früheres Tutorial zum Erkennen von Tastaturkombinationen werden wir sehen, wie Sie ein vollständiges Spiel erstellen, das Ihre Schreibfähigkeiten testet.


Vorschau des Endergebnisses

Werfen wir einen Blick auf das Endergebnis, auf das wir hinarbeiten werden:

Verwenden Sie die Buchstaben auf dem Bildschirm, um englische Wörter einzugeben! Ungültige Wörter verlieren Punkte, also pass auf.


Schritt 1: Einführung

In diesem Tutorial werden wir mit dieser sehr nützlichen Combo Detection-Klasse an einem großartigen Tippspiel arbeiten. Es wird dringend empfohlen, dass Sie dieses Tutorial lesen, bevor Sie hier fortfahren, damit Sie verstehen, was diese Klasse während unseres Spiels tun wird.

In unserem Spiel werden viele Blöcke mit Buchstaben auf dem Bildschirm angezeigt, und der Spieler muss ein Wort eingeben, das aus den Buchstabenblöcken besteht. Wenn dieses Wort gültig ist, werden die Blöcke entfernt und der Spieler erhält Punkte und mehr Zeit zum Spielen. Das Spiel endet, wenn die Zeit Null erreicht.

Wenn Sie dieses Tutorial vollständig befolgen möchten, sollten Sie die Quelldateien abrufen.


Schritt 2: Hinzufügen der Bilder in Flash Professional

Wie im zuvor erwähnten Tutorial werden wir alle Bilder für unser Spiel in eine Flash Professional .fla-Datei einfügen und dann eine .swc-Datei generieren, die zur Verwendung in unser FlashDevelop-Projekt eingefügt wird.

Für dieses Tutorial benötigen wir ein Hintergrundbild (danke an Petr Kovar für den fantastischen Holzhintergrund!), Ein generisches Blockbild mit einem ausgewählten Rahmen und dem aktuell eingegebenen Tastenfeld. Alles, was eingerichtet wurde, finden Sie in unseren Quelldateien.

Background imageBackground imageBackground image
Generic block image
Selected generic block image
Word boxWord boxWord box

Andere Bilder wie der Preloader und das Spiel über dem Bildschirm werden ebenfalls hinzugefügt, diese werden jedoch während des Tutorials erstellt, da dies sinnvoller ist.


Schritt 3: Der LetterBlock

Bevor wir mit der Arbeit an unserem Code beginnen können, richten wir unser FlashDevelop-Projekt ein. Dies wird ein AS3-Projekt mit Preloader sein, wählen Sie also diese Option in FlashDevelop! Angenommen, Sie haben das Combos-Tutorial gelesen, wissen Sie wahrscheinlich, wie Sie der FlashDevelop-Bibliothek eine SWC-Datei hinzufügen. Wenn Sie dies nicht tun, klicken Sie einfach mit der rechten Maustaste darauf und wählen Sie "Zur Bibliothek hinzufügen". Holen Sie sich die SWC-Datei aus der Quelle und fügen Sie sie hinzu. Das ist es. Zeit zum Handeln!

Unser Buchstabenblock ist ein einfaches Objekt mit einem TextField und dem in Schritt 2 gezeigten Blockbild. Die Codierung ist einfach. Erstellen Sie die LetterBlock-Klasse:

In den Zeilen 21 bis 28 wird das Textfeld für unseren Buchstabentext erstellt, auf dem Bildschirm positioniert und mit Schriftart, Schriftfarbe und -größe versehen. Die Funktion setLetter wird nur zum Festlegen des Buchstabens der Box verwendet.


Schritt 4: Laden der Wörter

Jedes Tippspiel braucht Wörter, mit denen man arbeiten kann. In diesem Schritt laden wir eine externe Datei über das Tag [Embed] und arbeiten mit den Daten der Datei. Offensichtlich enthält diese Datei Wörter, die in unserem Spiel verwendet werden sollen. Es ist in den Quelldateien verfügbar. In diesem Schritt beginnen wir auch mit der ComboHandler-Klasse zu arbeiten. Fügen Sie sie also auch in Ihr FlashDevelop-Projekt ein!

Schauen wir uns einen Code an:

In Main.as:

Zeile 5 oben initialisiert den ComboHandler nach Bedarf, und Zeile 7 ruft die loadWords()-Methode aus der DictionaryWords-Klasse auf. Diese Klasse wird von uns erstellt und ihr Code befindet sich unten:

Zeile 5 ist die Zeile, in der die externe Datei geladen und zur Kompilierungszeit ins Spiel gestellt wird. Dies ist alles aufgrund des [Embed] -Tags möglich. Wenn Sie weitere Informationen dazu wünschen, empfehle ich diesen großartigen Artikel über Adobe Livedocs.

Hier ist ein Abschnitt von Words.txt, damit Sie sehen können, womit wir arbeiten:

Zeile 12 (von DictionaryWords.as) ist eine sehr wichtige Zeile. Grundsätzlich werden alle Wörter aus Words.txt, die in einem String gespeichert wurden, in Elemente in einem Array umgewandelt. Da jedes Wort durch ein Zeilenumbruchzeichen getrennt ist, mussten wir nur die split()-Methode der String-Klasse aufrufen.

Die Funktion turnIntoLetters verwandelt ein Wort in ein Array mit den Schlüsselcodes jedes Buchstabens. Auf diese Weise kann unsere ComboHandler-Klasse damit arbeiten.


Schritt 5: Hinzufügen von Buchstabenblöcken zum Bildschirm

Jetzt, da wir unsere Worte im Spiel haben, ist es Zeit, daran zu arbeiten, die Buchstaben auf den Bildschirm zu bringen. Das ist sehr einfach. Zunächst brauchen wir einen Spielbildschirm. Die GameScreen-Klasse enthält die gesamte Logik unseres Spiels.

Der _blocksOnScreen-Vektor ist das Hauptelement in diesem Code: Er enthält alle Blöcke auf dem Bildschirm, sodass wir jederzeit mit ihnen arbeiten können. Beachten Sie, dass wir in Zeile 14 das BackgroundImage auf dem Bildschirm hinzufügen, das eine Grafik aus der SWC-Datei ist.

Innerhalb der Funktion populateBlocks() fügen wir lediglich an einer bestimmten Position einen neuen LetterBlock hinzu, geben ihm einen zufälligen Buchstaben (der von der Funktion randomLetter() generiert wird) und fügen ihn dem Bildschirm hinzu.

Jetzt müssen wir den Spielbildschirm in Mains Kind hinzufügen. Innerhalb von Main.as:

Kompilieren Sie das Projekt und Sie können die Blöcke auf dem Bildschirm sehen!


Schritt 6: Auswählen eines Blocks nach einem Tastendruck

In unserem Spiel möchten wir, dass der Block zu seinem "Ausgewählten" Bild wechselt, wenn die entsprechende Taste gedrückt wurde. Dies ist sehr einfach zu tun. Gehen Sie zur Datei LetterBlock.as und fügen Sie diesen Code hinzu:

Die Variable _selected wird in der Logik des Spiels verwendet, um zu überprüfen, ob ein Block ausgewählt ist oder nicht. Das gleiche passiert mit letter.

Sie müssen nur noch den Block zwischen "ausgewählt" und "nicht ausgewählt" umschalten. In GameScreen.as:

Da wir unsere KeyboardEvent-Listener zur Bühne hinzufügen sollten, fügen wir im GameScreen-Konstruktor einen Listener für Event.ADDED_TO_STAGE hinzu, der uns zur Funktion onStage() führt. Diese Funktion fügt den Hörer der Bühne hinzu. Die Funktion onKeyDown() ist dafür verantwortlich, alle unsere Blöcke auf dem Bildschirm zu überprüfen und zu überprüfen, ob ein Block mit gedrücktem Buchstaben vorhanden ist. Wenn ja, dann sollten wir es auswählen, was in Zeile 36 erfolgt.

Nach dem Kompilieren des Projekts erhalten wir Folgendes:

(Drücken Sie die Tasten auf Ihrer Tastatur!)


Schritt 7: Änderungen an der ComboHandler-Klasse

Damit unser Spiel so funktioniert, wie wir es möchten, müssen wir einige Änderungen an der ComboHandler-Klasse aus dem vorherigen Tutorial vornehmen. Die erste Änderung besteht darin, dass nur dann nach einer Kombination gesucht werden kann, wenn der Benutzer die Eingabe beendet hat. Dies wird mit der Konstante MAX_INTERVAL und durch eine update()-Funktion erkannt. Da der Benutzer die genauen Wortbuchstaben eingeben muss, um sie zu "vervollständigen", ändern wir auch, wie wir prüfen, ob eine Kombination mit den Tasten im pressedKeys-Array übereinstimmt. Die letzte Änderung besteht darin, ein Ereignis zu senden, auch wenn das eingegebene Wort falsch ist. Dadurch kann unser Spiel den Fehler des Spielers erkennen und ihn dafür bestrafen.

Der gesamte folgende Code macht das, was erklärt wurde:

Innerhalb von ComboHandler.as:

Wir haben die Konstruktordeklaration unseres ComboHandler geändert, damit wir erst dann nach Combos suchen können, wenn der Benutzer die Eingabe beendet hat. Dies wird in der Funktion update() mithilfe der Konstante MAX_INTERVAL überprüft. Außerdem wurde die Funktion checkForCombo() geändert, um eine geeignetere Kombinationsprüfung zu verwenden.

Jetzt müssen wir auch die GameScreen-Klasse ändern, um die ComboHandler-Klasse zu aktualisieren:

Das Update wird über einen Event.ENTER_FRAME-Ereignis-Listener durchgeführt, da dies ein einfacher und guter Ansatz ist.

Die letzte Änderung besteht darin, zu ändern, wie die ComboHandler-Klasse innerhalb der Main-Klasse initialisiert wird:

Durch das Kompilieren des Spiels erhalten wir Folgendes:


Schritt 8: Hinzufügen der Word-Box

Es ist Zeit, dem Spieler etwas anderes zu geben, auf das er sich verlassen kann. Im Moment kann der Spieler die bereits eingegebene Buchstabenfolge nicht sehen. Fügen wir also ein Wortfeld in das Spiel ein. Dieses Feld enthält die aktuell eingegebenen Buchstaben, die nach Reihenfolge geordnet sind, und wird bereinigt, wenn ein Kombinationsereignis empfangen wurde. Erstellen Sie die WordBox-Klasse und fügen Sie diesen Code hinzu:

Diese Klasse ist fast identisch mit der LetterBlock-Klasse, daher ist keine ausführliche Erklärung erforderlich. Das einzige, was Aufmerksamkeit verdient, ist Zeile 35, die einen Aufruf der appendText()-Methode aus der String-Klasse enthält. Diese Funktion fügt am Ende des aktuellen Textes Text hinzu, sodass wir die eingegebenen Buchstaben immer am Ende des aktuellen Textes aus dem Wortfeld anzeigen können.

Jetzt ist es Zeit, das Wortfeld in das Spiel einzufügen. Gehen Sie zu GameScreen.as und fügen Sie diesen Code hinzu:

In den Zeilen 1, 15-17 und 19 wird das Wortfeld erstellt und auf dem Bildschirm angezeigt. Zeile 36 ruft die Funktion addLetter() auf, um einen Buchstaben in das Feld einzufügen.

Das Ergebnis dieses Schritts ist unten. Wir werden den Code hinzufügen, um das Wortfeld im nächsten Schritt zu löschen.


Schritt 9: Integration unseres ComboHandlers in unseren GameScreen

Derzeit wurden die einzigen Änderungen, die im ComboHandler vorgenommen wurden, nur geändert, wann und wie nach Combos gesucht wird. Dies ist der Teil, an dem es Spaß macht: Wir werden unseren ComboHandler in das Spiel integrieren. Dies bedeutet, dass unser ComboHandler für die Ausführung von GameScreen abhängig ist. Lassen Sie uns zum Code springen und Erklärungen danach sehen!

In GameScreen.as:

Im Konstruktor von GameScreen haben wir dem Dispatcher-Objekt von ComboHandler einen Ereignis-Listener hinzugefügt und die Funktion setGameInstance() dieser Klasse aufgerufen (die unten hinzugefügt wird). Dadurch wird der ComboHandler-Klasse die aktuelle Instanz des Spielbildschirms angezeigt und das Wortfeld gelöscht.

Es wurde auch eine isKeyAvailable-Funktion erstellt. Dies wird im Combo-Handler aufgerufen, um zu überprüfen, ob der Liste der gedrückten Tasten eine Taste hinzugefügt werden kann.

Zeile 63 ist nur eine Korrektur für die Änderung, die in _blocksInScreen im Konstruktor vorgenommen wurde.

Schauen Sie sich den Code an, der in ComboHandler.as hinzugefügt werden soll:

In der hervorgehobenen Zeile fügen wir einen Aufruf von isKeyAvailable() hinzu, der sich in der in der ComboHandler-Klasse gespeicherten Spielbildschirminstanz befindet. Dies ist das Ende der Integration zwischen dem Spiel und dem Combo-Handler.

Nach dem Kompilieren werden Sie feststellen, dass das Spiel nach Ablauf des Intervalls das Wortfeld löscht:


Schritt 10: Handeln, wenn ein Wort eingegeben wurde

In diesem Schritt wird das Spiel eine Aktion ausführen, wenn ein Wort erkannt wurde. Zunächst müssen wir wissen, wann ein Wort erkannt wurde. Lassen Sie uns herausfinden, wie:

In GameScreen.as:

In Zeile 23 befindet sich ein Ereignis-Listener für ComboEvent.COMBO_FINISHED. Dieses Ereignis wird jedes Mal ausgelöst, wenn ein Wort gebildet wurde oder wenn der Spieler es verpasst hat. Wenn Sie zu ComboHandler.as zurückkehren, werden Sie feststellen, dass der Name der Combo innerhalb des ausgelösten Ereignisses null oder "" ist, wenn der Spieler verfehlt. Aus diesem Grund führen wir die Prüfung in den Zeilen 28-34 durch. Die Funktion removeSelectedLetters() entfernt alle ausgewählten Buchstaben, da der Player beim Aufruf ein Wort gebildet hat. Wir haben auch die Funktion populateBlocks() geändert, um einen neuen Block nur an Stellen zu platzieren, an denen kein Block vorhanden ist. Dies passt zu dem, was wir in der Funktion zum Entfernen von Blöcken tun.

Kompiliere das Spiel und das ist das Ergebnis:


Schritt 11: Tun Sie etwas, wenn der Spieler ein falsches Wort eingibt

Haben Sie eine Vorstellung davon, was zu tun ist, wenn ein Spieler ein Wort verfehlt? Ich dachte daran, dem Spieler Zeit und Punktzahl zu nehmen (dies wird in späteren Schritten geschehen) und eine 30% ige Chance zu geben, einen ausgewählten Buchstaben aus dem falsch eingegebenen Wort zu ändern. Der folgende Code macht genau das letztere. Wechseln Sie zu GameScreen.as:

Bevor wir uns die Zeilen 5 und 9 ansehen, springen wir zu Zeile 25: In dieser Zeile ist wasFromFailure die Variable, die definiert, ob das Spiel eine 30% ige Chance "berechnen" soll (über Math.random()) oder nur den Block ersetzen soll. Und wie wird dieser Wert übergeben? Schauen Sie sich die Zeilen 5 und 9 an: Wenn der Name des Wortes nichts oder "" ist, bedeutet dies, dass der Spieler das Wort verpasst hat, was bedeutet, dass wir true an removeSelectedLetters() übergeben sollten.

Kompilieren Sie das Projekt und versuchen Sie, ein falsches Wort einzugeben!


Schritt 12: Fügen Sie eine Punktzahl hinzu

Es ist jetzt Zeit, eine Punktzahl im Spiel hinzuzufügen! Zuerst erstellen wir das Bild und platzieren es auf dem Bildschirm. Im nächsten Schritt geben wir dem Spieler eine Punktzahl. Für die Partitur müssen wir eine Score-Klasse erstellen, und dies ist der Code dafür:

Ich glaube, es gibt nicht viel zu sagen - wir haben diesen Text bereits zweimal geschrieben. Jetzt sollten wir diese Punktzahl auf dem Bildschirm hinzufügen. In GameScreen.as:

Los geht's. Kompilieren Sie das Projekt und Sie können jetzt die Partitur sehen!


Schritt 13: Geben und Nehmen Sie Punktzahl

Nachdem die Punktzahl bereits auf dem Bildschirm hinzugefügt wurde, müssen wir dem Spieler nur noch die Punktzahl geben, wenn er ein Wort vervollständigt, und die Punktzahl wegnehmen, wenn er sie verfehlt. Der Code in GameScreen.as:

Wie Sie sehen können, ist es sehr einfach: Wir geben dem Spieler die 30-fache Anzahl der Buchstaben eines Wortes und nehmen die 10-fache Anzahl der Buchstaben des falsch eingegebenen Wortes weg. Das kompilierte Spiel ist unten zum Testen!


Schritt 14: Fügen Sie einen Timer hinzu

Das Hinzufügen eines Timers entspricht fast der Punktzahl. Es wird nur einen Unterschied geben: Wir müssen den Timer ständig aktualisieren, und der Timer hat einen anderen Text. Schauen Sie sich den Code für Timer.as unten an:

Wie Sie vielleicht in den Zeilen 33, 35 und 37 bemerkt haben, erstellen wir einen anderen Text für den Timer. Es wird aus Minuten und Sekunden bestehen. Damit dies funktioniert, ist _value die verbleibende Zeit im Spiel in Sekunden. Nun der Code zum Hinzufügen des Timers in GameScreen.as:

Der Code benötigt keine Erklärungen. Klicken Sie also auf die Schaltfläche zum Kompilieren und sehen Sie sich Ihren Timer an!

Aber es zählt nicht herunter, oder? Lass uns das tun!


Schritt 15: Verringern und Erhöhen der verbleibenden Zeit

Wie im vorherigen Schritt erläutert, muss der Timer ständig aktualisiert werden. Dies liegt daran, dass es von Sekunde zu Sekunde ständig abnimmt. Außerdem sollten wir dem Spieler mehr Sekunden einräumen, wenn ein Wort erfolgreich abgeschlossen wurde, und einige Zeit wegnehmen, wenn ein Wort falsch geschrieben wurde. In GameScreen.as:

In den Zeilen 1, 27, 29 und 33 wird der Timer erstellt, auf dem Bildschirm angezeigt und ein Ereignis-Listener für Event.ENTER_FRAME hinzugefügt. Dieser Listener fügt _updateTimer in jedem Frame eine 1/30 Sekunde hinzu (wir gehen hier davon aus, dass das Spiel mit 30 fps läuft. Wenn es beispielsweise mit 24 fps läuft, sollte es 1/24 Sekunde hinzufügen. Wenn _updateTimer eine oder mehr als eine Sekunde erreicht, wird 1 gegenüber dem Wert des Timers verringert. In den Zeilen 84 und 89 verringern und erhöhen wir die Zeit, je nachdem, ob der Spieler ein "akzeptables" Wort gebildet hat oder nicht.

Wenn der Benutzer ein Wort falsch eingibt, wird eine Anzahl von Sekunden, die der Anzahl der Buchstaben entspricht, vom Spieltimer verringert. Wenn ein Wort korrekt ist, vergibt das Spiel die doppelte Anzahl von Buchstaben als Sekunden für den Spieler.

Dies ist Ihr Ergebnis:


Schritt 16: Verbessern Sie unseren Prozess zur Erstellung zufälliger Buchstaben

Im aktuellen Spiel erscheinen manchmal zu wenige Vokale auf dem Bildschirm. Das macht es extrem schwierig, Wörter zu erstellen. In diesem Schritt werden wir das ändern. Die Lösung ist sehr einfach: Wir werden ein Array verwenden, das auf dem Gewicht basiert.

Dieses Array enthält alle Buchstaben des Alphabets und wir erhalten einen Buchstaben, indem wir auf einen zufälligen Index innerhalb der Grenzen des Arrays zugreifen. Das "Gewicht" jedes Buchstabens ist jedoch unterschiedlich. Das "Gewicht" ist einfach die Anzahl der Buchstaben im Array. Wenn also der Buchstabe "R" beispielsweise das Gewicht 2 hat, gibt es zwei "R" im Array. Aus probabilistischer Sicht ist die Wahrscheinlichkeit, auf einen Brief zuzugreifen, umso höher, je mehr Nummern Sie haben.

Der Code wird sicherlich helfen, es zu erklären. Dieser Code sollte in GameScreen.as platziert werden:

In Zeile 1 sehen Sie die Buchstabenreihe. Jeder Vokal hat Gewicht 3, was bedeutet, dass es immer 3 davon gibt, und der Buchstabe "R" hat Gewicht 2. Dies ist ein extrem vereinfachtes Array, aber mit seiner Idee könnte noch viel mehr getan werden.

Hier ist eine andere Art, es auszudrücken, die die relativen Gewichte klarer macht:

Obwohl nicht wirklich "sichtbar", können Sie das kompilierte Projekt unten überprüfen:


Schritt 17: Preloader Erstellen Sie die Grafiken

Im Moment ist die Basis unseres Spiels komplett. In den nächsten Schritten werden wir nun einen Preloader und ein Spiel über dem Bildschirm hinzufügen. Zunächst müssen wir die Preloader-Grafiken erstellen. Dies ist nur eine abgerundete quadratische Leiste mit der Aufschrift "Laden". Sie können die Quelldateien abrufen, um sie abzurufen.

Loading barLoading barLoading bar

Schritt 18: Preloader Schreiben Sie den Code

Wenn Sie mit FlashDevelop vertraut sind, wird dies nicht schwierig sein. Wir werden die Preloader-Klasse ändern, um unsere Grafiken dort zu platzieren. Zum Code springen:

Im Preloader-Konstruktor haben wir eine Instanz des Ladebilds in der SWC-Datei sowie ein Sprite erstellt, das als Maske verwendet wird. Diese Maske erstellt die visuelle Darstellung des "Ladevorgangs".

Die Funktion progress() ist hier die Schlüsselfunktion: Darin aktualisieren wir die Maske, indem wir ein Rechteck mit der Breite e.bytesLoaded / e.bytesTotal multipliziert mit der Breite des Ladebalkenbilds erstellen. Die Eigenschaften bytesLoaded und bytesTotal der ProgressEvent-Klasse zeigen uns, wie viele Bytes aus dem Spiel geladen wurden und wie viele Bytes insgesamt sind. Auf diese Weise erhalten wir durch Tauchen den Prozentsatz des geladenen Spiels.

In der Funktion loadingFinished() müssen wir jeden Verweis auf das Ladebild und seine Maske löschen. Auf diese Weise können sie durch Müll gesammelt werden und verwenden nicht mehr den für das Spiel reservierten Speicher.

Schauen Sie sich den funktionierenden Preloader an!


Schritt 19: Game Over Screen Erstellen Sie die Grafiken

Jetzt müssen wir über dem Bildschirm am Spiel arbeiten. Ich wollte, dass es sehr einfach ist, nur um zu zeigen, wie man einen Bildschirm hinzufügt, wenn das Spiel beendet ist. Die Grafiken sind sehr einfach: der gleiche Spielhintergrund mit einem "Game Over" -Text und einer verblassenden Animation. Sie können die Mitte der Animation unten sehen:

Game over screenGame over screenGame over screen

Besorgen Sie sich die Quelldateien, um sie zu verwenden!


Schritt 20: Game Over Screen Schreiben Sie den Code

Es ist jetzt Zeit, das Spiel über den Bildschirm im Spiel hinzuzufügen. Bevor wir das tun, müssen wir wissen, wann der Timer 0 erreicht (was bedeutet, dass das Spiel vorbei ist). Dazu muss in Timer.as eine Getter-Funktion erstellt werden:

Damit können wir jetzt die GameOverScreen-Klasse erstellen:

Der Code in update() wurde erstellt, damit die Animation nur einmal abgespielt werden kann. Auf diese Weise wird der Einblendeffekt nicht wiederholt.

Fügen Sie unter Main.as diesen Code hinzu:

Dieser Code wird von GameScreen aufgerufen, wenn festgestellt wird, dass das Spiel verloren gegangen ist. Jetzt in GameScreen.as:

Die hervorgehobenen Linien sind die einzige Änderung an dieser Funktion. Sie erkennen, wenn der Timer weniger als 0 erreicht hat und ob er noch ein übergeordnetes Element hat (was bedeutet, dass er noch nicht von Main entfernt wurde). Zu diesem Zeitpunkt wird die gameOver()-Funktion von Main aufgerufen.

Kompilieren Sie das Projekt, lassen Sie den Timer 0 erreichen und sehen Sie, was Sie erhalten:


Abschluss

Großartige Arbeit - Sie haben ein einfaches und dennoch vollständiges Tippspiel erstellt! Was kommt als nächstes? Ich schlage vor, Sie versuchen, einen besseren Timer zu erstellen, Blockbuchstabenübergänge hinzuzufügen und mehr Effekte hinzuzufügen.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.