Heim Web-Frontend js-Tutorial Erstellen einer vollständigen Aufzeichnung von Panzerschlachten mit Javascript (2)_Javascript-Kenntnissen

Erstellen einer vollständigen Aufzeichnung von Panzerschlachten mit Javascript (2)_Javascript-Kenntnissen

May 16, 2016 pm 04:30 PM
javascript 面向对象

2. Verbessern Sie die Karte

Auf unserer Karte gibt es Hindernisse wie Freiflächen, Mauern, Stahl, Gras, Wasser und Hauptquartiere. All dies können wir als Objekte gestalten.

2.1 Hindernisobjektgruppe erstellen

Die Objektgruppe speichert Objekte auf verschiedenen Karten. Wir verwenden die Eigenschaften der Objekte, um zu bestimmen, ob die Objekte durchquert oder angegriffen werden können.

Barrier.js:

Code kopieren Der Code lautet wie folgt:

// Hindernis-Basisklassenobjekt, geerbt von TankObject
Barriere = Funktion () {
This.DefenVal = 1; // Verteidigungsstärke
This.CanBeAttacked = true; // Ob es angegriffen werden kann
}
Barrier.prototype = new TankObject();
// Wand
WallB = Funktion () { }
WallB.prototype = new Barrier();
// Freiraum
EmptyB = Funktion () {
This.CanAcross = true; // Kann durchgereicht werden
}
EmptyB.prototype = new Barrier();
// Fluss
RiverB = Funktion () {
This.DefenVal = 0;
This.CanBeAttacked = false; // Die Mitglieder des Objekts werden zuerst übernommen und die von der übergeordneten Klasse geerbten werden überschrieben.
}
RiverB.prototype = new Barrier();
// Stahl
SteelB = Funktion () {
This.DefenVal = 3;
}
SteelB.prototype = new Barrier();
// Grasobjekt
TodB = Funktion () {
This.CanBeAttacked = false;
This.DefenVal = 0;
This.CanAcross = true;
}
TodB.prototype = new Barrier();
//Hauptquartier
PodiumB = Funktion () {
This.DefenVal = 5;
}
PodiumB.prototype = new Barrier();

2.2 Auf die Karte geschriebene Daten.

Fügen Sie den folgenden Code in Common.js hinzu:

Code kopieren Der Code lautet wie folgt:

//Aufzählung des Kartenelementtyps
/*
0: Freiraum
1: Wand
2: Stahl
3: Büsche
4:Fluss
5: Hauptquartier
*/
var EnumMapCellType = {
Leer: „0“
, Wand: „1“
, Stahl: „2“
, Tod: „3“
, Fluss: „4“
, Podium: „5“
};
//Der Stilname, der jedem Gelände entspricht
var ArrayCss = ['empty', 'wall', 'steel', 'tod', 'river', 'podium'];
// Levelkarte
/*Stufe*/
var str = '0000000000000';
str = ',0011100111010';
str = ',1000010000200';
str = ',1200333310101';
str = ',0000444400001';
str = ',3313300001011';
str = ',3011331022011';
str = ',3311031011011';
str = ',0101011102010';
str = ',0101011010010';
str = ',0100000000110';
str = ',0100012101101';
str = ',0010015100000';
//Speicherebenenkarte 0,1,2,3... sind jeweils 1-n...Ebene
var Top_MapLevel = [str];

2.3 Zeichnen Sie eine Karte

Nachdem die Vorbereitungen nun abgeschlossen sind, beginnen wir mit dem Servieren der Gerichte und dem Zeichnen der Karte. Wie bereits erwähnt, ist unsere Karte eine 13 * 13-Tabelle. Daher fügen wir dem Spielladeobjekt Zeilen- und Spaltenattribute sowie eine Initialisierungskartenmethode hinzu.

Frame.js:

Code kopieren Der Code lautet wie folgt:

// Spielladeobjekt Das Kernobjekt des gesamten Spiels
GameLoader = function () {
This._mapContainer = document.getElementById("divMap"); // Das div
, das die Spielkarte speichert This._selfTank = null; // Spielertank
This._gameListener = null; // Spiel-Hauptschleifen-Timer-ID
/*Neue Attribute in v2.0 hinzugefügt*/
This._level = 1;
This._rowCount = 13;
This._colCount = 13;
This._battleField = []; // Zweidimensionales Array von Kartenobjekten speichern
}
//Kartenmethode laden
Laden: Funktion () {
// Initialisiere die Karte entsprechend der Ebene
        var map = Top_MapLevel[this._level - 1].split(",");
        var mapBorder = UtilityClass.CreateE("div", "", "mapBorder", this._mapContainer);
// Jede Zelle in der Kartentabelle durchlaufen
for (var i = 0; i < this._rowCount; i ) {
                                   // Erstellen Sie ein Div, und die Karte jeder Zeile wird in diesem Div gespeichert
            var divRow = UtilityClass.CreateE("div", "", "", mapBorder);
//Erstelle ein weiteres Array im eindimensionalen Array
This._battleField[i] = [];
for (var j = 0; j < this._colCount; j ) {
// Kartendaten lesen, Standardwert: 0
              var v = (map[i] && map[i].charAt(j)) || 0;
// Span-Element einfügen, ein Span-Element ist eine Karteneinheit
              var spanCol = UtilityClass.CreateE("span", "", "", divRow);
                     spanCol.className = ArrayCss[v];
                         // Platzieren Sie das Kartenobjekt in einem zweidimensionalen Array, um die spätere Kollisionserkennung zu erleichtern.
              var to = null;
Schalter (v) {
case EnumMapCellType.Empty:
                                 to = new EmptyB();
Pause;
case EnumMapCellType.Wall:
                                 to = new WallB();
Pause;
case EnumMapCellType.Steel:
                                  to = new SteelB();
Pause;
case EnumMapCellType.Tod:
                                 to = new TodB();
Pause;
case EnumMapCellType.River:
                             to = new RiverB();
Pause;
case EnumMapCellType.Podium:
                              to = new PodiumB();
Pause;
                                                                                                                                                                                                                  Standard:
throw new Error("Kartennummer außerhalb der Grenzen!");
Pause;
                 }
                     to.UI = spanCol;
                         // j ist hier X, da die innere Schleife horizontal ist, ist x die Abszisse
                          to.XPosition = j;
                        to.YPosition = i;
                                           // Das aktuelle Kartenobjekt in einem zweidimensionalen Array speichern, obj ist das Hindernisobjekt und occupier ist das besetzende Objekt
This._battleField[i][j] = { obj: to, occupier: null, lock: false };
                                          //Ende für
                                     // Ende für
                                                                                                                     // In die Fenster-Globalvariable
einfügen             window.BattleField = this._battleField;
}

ok, unsere Karte ist hier fertig. Die Kommentare hier sind sehr detailliert. Wenn Sie etwas immer noch nicht verstehen, laden Sie den Quellcode herunter und debuggen Sie ihn.

Hier laden wir hauptsächlich Kartendaten und fügen jede Karte als Span-Element in das HTML-Dokument ein. Und speichern Sie das Kartenobjekt in einem zweidimensionalen Array. Wenn wir in Zukunft eine Kollisionserkennung durchführen, können wir das entsprechende Array-Objekt direkt über die Koordinaten des Objekts abrufen, was sehr praktisch ist.

Anbei ist der Quellcode: http://xiazai.jb51.net/201411/yuanma/jstankedazhan(jb51.net).rar

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Jan 05, 2024 pm 06:08 PM

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

Entdecken Sie die objektorientierte Programmierung in Go Entdecken Sie die objektorientierte Programmierung in Go Apr 04, 2024 am 10:39 AM

Die Go-Sprache unterstützt die objektorientierte Programmierung durch Typdefinition und Methodenzuordnung. Es unterstützt keine traditionelle Vererbung, sondern wird durch Komposition implementiert. Schnittstellen sorgen für Konsistenz zwischen Typen und ermöglichen die Definition abstrakter Methoden. Praxisbeispiele zeigen, wie OOP zum Verwalten von Kundeninformationen verwendet wird, einschließlich Vorgängen zum Erstellen, Abrufen, Aktualisieren und Löschen von Kunden.

Erweiterte PHP-Funktionen: Best Practices in der objektorientierten Programmierung Erweiterte PHP-Funktionen: Best Practices in der objektorientierten Programmierung Jun 05, 2024 pm 09:39 PM

Zu den OOP-Best Practices in PHP gehören Namenskonventionen, Schnittstellen und abstrakte Klassen, Vererbung und Polymorphismus sowie Abhängigkeitsinjektion. Zu den praktischen Fällen gehören: Verwenden des Lagermodus zum Verwalten von Daten und Verwenden des Strategiemodus zum Implementieren der Sortierung.

Analyse der objektorientierten Funktionen der Go-Sprache Analyse der objektorientierten Funktionen der Go-Sprache Apr 04, 2024 am 11:18 AM

Die Go-Sprache unterstützt objektorientierte Programmierung, definiert Objekte über Strukturen, definiert Methoden mithilfe von Zeigerempfängern und implementiert Polymorphismus über Schnittstellen. Objektorientierte Funktionen ermöglichen die Wiederverwendung, Wartbarkeit und Kapselung von Code in der Go-Sprache, es gibt jedoch auch Einschränkungen wie das Fehlen traditioneller Konzepte von Klassen und Vererbung sowie Methodensignaturumwandlungen.

Gibt es in Golang klassenähnliche objektorientierte Funktionen? Gibt es in Golang klassenähnliche objektorientierte Funktionen? Mar 19, 2024 pm 02:51 PM

In Golang (Go-Sprache) gibt es kein Konzept einer Klasse im herkömmlichen Sinne, es stellt jedoch einen Datentyp namens Struktur bereit, durch den objektorientierte Funktionen ähnlich wie Klassen erreicht werden können. In diesem Artikel erklären wir, wie Strukturen zur Implementierung objektorientierter Funktionen verwendet werden, und stellen konkrete Codebeispiele bereit. Definition und Verwendung von Strukturen Werfen wir zunächst einen Blick auf die Definition und Verwendung von Strukturen. In Golang können Strukturen über das Schlüsselwort type definiert und dann bei Bedarf verwendet werden. Strukturen können Attribute enthalten

So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript Jan 05, 2024 pm 01:37 PM

Einführung in die Methode zum Abrufen des HTTP-Statuscodes in JavaScript: Bei der Front-End-Entwicklung müssen wir uns häufig mit der Interaktion mit der Back-End-Schnittstelle befassen, und der HTTP-Statuscode ist ein sehr wichtiger Teil davon. Das Verstehen und Abrufen von HTTP-Statuscodes hilft uns, die von der Schnittstelle zurückgegebenen Daten besser zu verarbeiten. In diesem Artikel wird erläutert, wie Sie mithilfe von JavaScript HTTP-Statuscodes erhalten, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist ein HTTP-Statuscode? HTTP-Statuscode bedeutet, dass der Dienst den Dienst anfordert, wenn er eine Anfrage an den Server initiiert

Vertieftes Verständnis der objektorientierten PHP-Programmierung: Debugging-Techniken für die objektorientierte Programmierung Vertieftes Verständnis der objektorientierten PHP-Programmierung: Debugging-Techniken für die objektorientierte Programmierung Jun 05, 2024 pm 08:50 PM

Indem Sie das Verfolgen des Objektstatus, das Setzen von Haltepunkten, das Verfolgen von Ausnahmen und die Verwendung der xdebug-Erweiterung beherrschen, können Sie objektorientierten PHP-Programmiercode effektiv debuggen. 1. Objektstatus verfolgen: Verwenden Sie var_dump() und print_r(), um Objektattribute und Methodenwerte anzuzeigen. 2. Legen Sie einen Haltepunkt fest: Legen Sie einen Haltepunkt in der Entwicklungsumgebung fest. Wenn die Ausführung den Haltepunkt erreicht, wird der Debugger angehalten, sodass der Objektstatus einfacher überprüft werden kann. 3. Ausnahmen verfolgen: Verwenden Sie Try-Catch-Blöcke und getTraceAsString(), um den Stack-Trace und die Meldung abzurufen, wenn die Ausnahme auftritt. 4. Verwenden Sie den Debugger: Die Funktion xdebug_var_dump() kann den Inhalt von Variablen während der Codeausführung überprüfen.

JavaScript und WebSocket: Aufbau einer effizienten Echtzeitsuchmaschine JavaScript und WebSocket: Aufbau einer effizienten Echtzeitsuchmaschine Dec 17, 2023 pm 10:13 PM

JavaScript und WebSocket: Aufbau einer effizienten Echtzeit-Suchmaschine Einführung: Mit der Entwicklung des Internets stellen Benutzer immer höhere Anforderungen an Echtzeit-Suchmaschinen. Bei der Suche mit herkömmlichen Suchmaschinen müssen Benutzer auf die Suchschaltfläche klicken, um Ergebnisse zu erhalten. Diese Methode kann den Anforderungen der Benutzer an Echtzeit-Suchergebnissen nicht gerecht werden. Daher ist die Verwendung von JavaScript und WebSocket-Technologie zur Implementierung von Echtzeitsuchmaschinen zu einem heißen Thema geworden. In diesem Artikel wird die Verwendung von JavaScript ausführlich vorgestellt

See all articles