


JavaScript-Panzerkampf-Spielcode, neu geschrieben mit TypeScript_Basic-Kenntnissen
Quellcode-Download
Ich habe den Quellcode auf CSDN hochgeladen. Die Download-Adresse lautet: http://download.csdn.net/detail/zgynhqf/8565873.
Der Quellcode wurde mit VS 2013 TypeScript 1.4 entwickelt. Nach dem Öffnen wird folgendes Bild angezeigt:
JsTankGame 1.0: Ein altes Panzerspiel, geschrieben in JS.
JsTankGame 2.0: Ein neues Spiel, das direkt mit TS übersetzt wurde.
JsTankGame: Basierend auf 2.0, ein neues Spiel mit einem rekonstruierten Typ.
Rekonstruktionsschritte
Weil alte JS-Spiele mit der MS Ajax Client Library erstellt und mit der OOD-Methode entworfen wurden und TypeScript mit allen JS-Codes kompatibel ist. Daher ist die Portierung mit TypeScript relativ einfach und ersetzt hauptsächlich den Code des Typdesigns: Klassen, Vererbung, Schnittstellen usw.
Nach Abschluss der oben genannten Arbeiten haben Sie Version 2.0 in TS geschrieben. Dabei habe ich viele Vorteile stark typisierter Sprachen erlebt. Natürlich gibt es auch einige Unvollkommenheiten in TS (auf die später noch eingegangen wird).
Nachdem wir die stark typisierte Version 2.0 erhalten haben, ist es noch nicht vorbei. Um die Vorteile der starken Typisierung für das Refactoring zu nutzen, habe ich beschlossen, die Codestruktur basierend auf dieser Version umzugestalten.
Mit stark typisiertem Code kann ich jeden Typ, jede Methode und ihren Einsatzort leicht analysieren. Auf diese Weise kann ich die Abhängigkeiten zwischen Typen schnell erkennen. Sie werden es nicht wissen, wenn Sie es nicht ansehen, aber Sie werden schockiert sein, wenn Sie es betrachten. Den Code, den ich zuvor Stück für Stück geschrieben habe, dachte ich, die Typen seien gut gestaltet und die Kopplung zwischen ihnen sollte nicht sehr hoch sein. Aber nachdem ich die Zeichnung fertiggestellt hatte, stellte ich fest, dass sie weit von dem entfernt war, was ich mir vorgestellt hatte. Dies ist das Ergebnis des direkten Schreibens von Code ohne Zeichnung. Siehe die beiden Bilder unten:
Es ist ersichtlich, dass die Beziehung zwischen verschiedenen Elfentypen ziemlich chaotisch ist und überall wechselseitige Abhängigkeiten zu erkennen sind. (Da der SpriteManager tatsächlich in einem anderen Bild gezeichnet ist, wird die kompliziertere und chaotischere Beziehung im Bild nicht angezeigt.)
Dementsprechend habe ich ein neues Beziehungsdiagramm gezeichnet und dann den gesamten Code entsprechend dieser Beziehung umgestaltet. Damit erhalten Sie die neueste Version 3.0.
Das Typbeziehungsdiagramm der neuen Version lautet wie folgt:
Schichtung:
Elf:
Manager:
Auf der Codeebene werden hauptsächlich die Kopplungscodes zwischen Elfen an den Manager der oberen Ebene übertragen. Gleichzeitig werden Ereignisse für die Elfen definiert, um die Elfen direkt vom Manager zu entkoppeln.
Vor- und Nachteile der ersten Erfahrung von TS
Vorteile: Lambda löst das Problem dieses Zeigers sehr gut. Chrome und IE können TypeScript direkt debuggen! Dabei wurden auch Fehler entdeckt, die von schwachen Typen nicht gefunden werden können. Durch die Umbenennung wurde der Originalcode nicht verändert. (SpriteManager.js Zeile 98)
Nachteile: Entwicklungsumgebung – es gibt keine integrierte Code-Kommentarfunktion und Sie können ihn nur manuell kopieren. Entwicklungsumgebung – Codeausschnitte werden derzeit nicht unterstützt. Entwicklungsumgebung – Die Generierung von Schlüsselwortcode wird nicht unterstützt: if, while, switch, Klammerübereinstimmung usw. Entwicklungsumgebung – unterstützt nicht die Definition von Coderegionen (Region). Syntax – Definition von Ereignissen wird nicht unterstützt. Syntax – Das Definieren überladener Methoden für Klassen wird noch nicht unterstützt. Siehe die SpriteBase.IsCollided-Methode.
Andere:
Der kompilierte JS-Code weist eine gewisse Redundanz auf. Besonders auffällig ist der Befehlsraum. Überschreiben Sie Basisklassenmethoden ohne Eingabeaufforderung. Getter/Setter für Basisklasseneigenschaften können nicht überschrieben werden. Es gibt keine Möglichkeit festzustellen, welche Methoden virtuell sind. Schreibgeschützte Eigenschaften können in Schnittstellen nicht definiert werden. Es gibt immer noch Fehler. (SpriteManager.ts Zeile 93). Wenn Sie einfach ein numerisches Feld definieren, ist der Standardwert nicht 0, sondern NaN.
Zusammenfassung
Im Allgemeinen bin ich nach dem Test der Meinung, dass TS in der aktuellen Version 1.4 für die formelle, groß angelegte JS-Projektentwicklung verwendet werden kann. Aber es gibt noch viele Bereiche mit Verbesserungspotenzial!
Im Anhang finden Sie TS-Screenshots zum Debuggen von Chrome und IE:
Ce qui précède représente l'intégralité du contenu de cet article. J'espère que cela aidera tout le monde à maîtriser la dactylographie.

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

JavaScript bietet keine Speicherverwaltungsoperationen. Stattdessen wird der Speicher von der JavaScript-VM durch einen Speicherrückgewinnungsprozess namens Garbage Collection verwaltet.

Frage: Wie verwende ich require, um statische Ressourcen wie Bilder dynamisch in ein Vue3+TypeScript+Vite-Projekt einzuführen? Beschreibung: Bei der heutigen Entwicklung eines Projekts (das Projektframework ist Vue3 + TypeScript + Vite) müssen statische Ressourcen dynamisch eingeführt werden, dh der src-Attributwert des img-Tags wird gemäß der bisherigen Praxis dynamisch abgerufen direkt durch require eingeführt werden: Nach dem Hochladen des Codes wird ein Wellenlinienfehler gemeldet und die Fehlermeldung lautet: Der Name „require“ kann nicht gefunden werden. Müssen Sie Typdefinitionen für den Knoten installieren? Versuchen Sie es mit npmi --save-dev@types/node. ts(2580) nach dem Ausführen von npmi--save-d

Wie deklariere ich einen Typ mit Feldnamen-Enumeration? Das Typfeld sollte konstruktionsbedingt ein Aufzählungswert sein und nicht willkürlich vom Aufrufer festgelegt werden. Das Folgende ist die Aufzählungsdeklaration des Typs mit insgesamt 6 Feldern. enumType{primary="primary",success="success",warning="warning",warn="warn",//warningaliasdanger="danger",info="info",}TypeSc

Überblick über die Verwendung von Redis und TypeScript zur Entwicklung leistungsstarker Computerfunktionen: Redis ist ein Open-Source-In-Memory-Datenstrukturspeichersystem mit hoher Leistung und Skalierbarkeit. TypeScript ist eine Obermenge von JavaScript, die ein Typsystem und eine bessere Unterstützung für Entwicklungstools bietet. Durch die Kombination von Redis und TypeScript können wir effiziente Rechenfunktionen entwickeln, um große Datenmengen zu verarbeiten und die Speicher- und Rechenfunktionen von Redis voll auszunutzen. Dieser Artikel zeigt Ihnen, wie es geht

Titel: Skalierbare Front-End-Anwendungen mit Redis und TypeScript entwickeln Einführung: Im heutigen Internetzeitalter ist Skalierbarkeit eines der Schlüsselelemente jeder Anwendung. Frontend-Anwendungen sind keine Ausnahme. Um den wachsenden Anforderungen der Benutzer gerecht zu werden, müssen wir effiziente und zuverlässige Technologie verwenden, um skalierbare Front-End-Anwendungen zu erstellen. In diesem Artikel stellen wir die Verwendung von Redis und TypeScript zur Entwicklung skalierbarer Front-End-Anwendungen vor und demonstrieren deren Anwendung anhand von Codebeispielen. Einführung in Redis

So implementieren Sie die Datentypkonvertierungsfunktion in TypeScript mithilfe von MySQL. Einführung: Die Datentypkonvertierung ist eine sehr häufige Anforderung bei der Entwicklung von Webanwendungen. Bei der Verarbeitung von in einer Datenbank gespeicherten Daten, insbesondere wenn MySQL als Back-End-Datenbank verwendet wird, müssen wir häufig die Daten in den Abfrageergebnissen in den von uns benötigten Typ konvertieren. In diesem Artikel wird erläutert, wie Sie mit MySQL die Datentypkonvertierung in TypeScript implementieren, und es werden Codebeispiele bereitgestellt. 1. Vorbereitung: Beginn

Änderungen in Vue3 im Vergleich zu Vue2: Bessere TypeScript-Typinferenz Vue ist ein beliebtes JavaScript-Framework zum Erstellen von Benutzeroberflächen. Vue3 ist die neueste Version des Vue-Frameworks mit vielen Verbesserungen und Optimierungen basierend auf Vue2. Eine davon sind Verbesserungen bei der TypeScript-Typinferenz. In diesem Artikel werden die Verbesserungen der Typinferenz in Vue3 vorgestellt und anhand von Codebeispielen veranschaulicht. In Vue2 müssen wir die Vue-Komponente manuell konfigurieren

Mit der kontinuierlichen Weiterentwicklung von JavaScript werden Front-End-Ingenieure nach und nach auf einige Probleme in JavaScript selbst aufmerksam, wie z. B. die fehlende Typprüfung und Modularität, die bei großen Projekten häufig zu Verwirrung und Fehlern führen. Um diese Probleme zu lösen, wurde TypeScript ins Leben gerufen und entwickelte sich zu einer immer beliebter werdenden Sprache in der Frontend-Entwicklung. Im Bereich der Backend-Entwicklung war PHP schon immer eine äußerst beliebte Skriptsprache. Kombinieren Sie daher TypeScript, um PHP-Anwendungen zu entwickeln
