JS praktisches objektorientiertes Schlangenspielbeispiel

JS praktisches objektorientiertes Schlangenspielbeispiel

denken

Der erste Schritt besteht darin, darüber nachzudenken, in wie viele Teile eine Schlange zerlegt ist und wie Kopf und Körper der Schlange geformt sind.

Der zweite Schritt besteht darin, darüber nachzudenken, wie sich die Schlange bewegt und wie man die Richtung der Schlange über die Tastatur steuern kann.

Der dritte Schritt besteht darin, darüber nachzudenken, unter welchen Umständen das Spiel enden wird.

Im vierten Schritt muss darüber nachgedacht werden, wie das Futter produziert wird und welche Punkte zwischen dem Produktionsort und dem Standort der Schlange beachtet werden müssen.

Der fünfte Schritt besteht darin, darüber nachzudenken, wie die Schlange das Futter frisst; nach dem Fressen wird der Körper der Schlange länger und es wird neues Futter produziert.

Spielen Sie es nach Abschluss von Schritt 6 noch ein paar Mal, um die Früchte Ihrer Arbeit zu genießen. ! ! !

1. Bild mit dem gierigen Schlangeneffekt

2. Analyse der Schlange

2.1 Spiel starten-Funktion

Wenn der Benutzer die Hauptoberfläche des Spiels aufruft, findet er die Schaltfläche „Start“ an prominenter Stelle unten in der Mitte der Oberfläche. Nach dem Klicken darauf kann der Benutzer ein neues Spiel starten. Holen Sie sich die Schaltflächenvariable und fügen Sie ihr ein Klickereignis addEventListener('click', function() {}) hinzu.

btnstart.addEventListener('klicken', function() {
     btnstart.style.display = "keine";
     //Rufen Sie die Zwischenklasse game = new Game(); auf.
     var Tabelle = Dokument.QuerySelector('Tabelle');
     Tabelle.addEventListener('klicken', Funktion() {
        //Timer löschen clearInterval(game.timer);
        btnstop.style.display = "Block";
     })
});

2.2 Motorische Funktion

2.2.1 Schlangenbewegung in verschiedene Richtungen

Wenn der Benutzer auf die Schaltfläche „Spiel starten“ klickt, bewegt sich die Schlange standardmäßig von links nach rechts.

//Die aktuelle Richtung akzeptiert willDirection! ! !
diese.Richtung = diese.wirdRichtung;
 
//Schlangenbewegung in verschiedene Richtungen switch (this.direction) {
     Fall "R":
            //Nach rechts bewegen this.body.unshift({ "row": this.body[0].row, "col": this.body[0].col + 1 });
            brechen;
     Fall "D":
            //Nach unten verschieben this.body.unshift({ "row": this.body[0].row + 1, "col": this.body[0].col });
            brechen;
     Fall "L":
            //Nach links bewegen this.body.unshift({ "row": this.body[0].row, "col": this.body[0].col - 1 });
            brechen;
     Fall "T":
            //Nach oben verschieben this.body.unshift({ "row": this.body[0].row - 1, "col": this.body[0].col });
            brechen;
}

2.2.2 Tastatursteuerungsrichtungsbewegungsfunktion

Der Benutzer kann die Bewegungsrichtung der Schlange mithilfe der Auf-, Ab-, Links- und Rechtstasten auf der Tastatur steuern und die Schlange bewegt sich in einer geraden Linie in die gesteuerte Richtung.

Spiel.prototype.bindEvent = Funktion() {
    var selbst = dies;
    //Tastaturereignis document.onkeydown = function(e) {
        Schalter (e.keyCode) {
            //Drücken Sie die linke Taste Fall 37:
                //Zuerst beurteilen (wenn die aktuelle Richtung nach rechts geht, können wir zu diesem Zeitpunkt nicht die linke Taste drücken)
                wenn (self.snake.direction == 'R') zurückgeben;
                // selbst.snake.direction = "L";
                selbst.snake.changeDirection('L');
                selbst.d = "L";
                brechen;
                //Drücken Sie die Aufwärtstaste Fall 38:
                wenn (self.snake.direction == 'D') zurückgeben;
                self.snake.changeDirection('T');
                self.d = "T";
                brechen;
                //Rechte Taste drücken Fall 39:
                wenn (self.snake.direction == 'L') zurückgeben;
                selbst.snake.changeDirection('R');
                selbst.d = "R";
                brechen;
                //Taste Fall 40 drücken:
                wenn (self.snake.direction == 'T') zurückgeben;
                selbst.snake.changeDirection('D');
                selbst.d = "D";
 
                brechen;
        }
 
    }
 
};

2.3 Essensfunktion

2.3.1 Lebensmittelproduktion

Futterstandort: Durchqueren Sie die Reihe und Spalte der Schlange und bestimmen Sie dann, ob sie sich mit der zufällig generierten Reihe und Spalte überschneiden.

var self = this; //bezieht sich auf Fenster
    //Die folgende do-while-Schleifenanweisung wird verwendet, um zuerst eine Zeile und eine Spalte zu erstellen und dann zu bestimmen, ob sie sich in der Schlange befindet.
        //Lebensmittelstandort this.row = parseInt(Math.random() * gameSnake.row);
        this.col = parseInt(Math.random() * gameSnake.col);
    } während ((Funktion() {
        //Durchlaufe die Zeilen und Spalten der Schlange und beurteile dann, ob sie sich mit den zufällig generierten Zeilen und Spalten überschneiden for (var i = 0; i < gameSnake.snake.body.length; i++) {
        wenn (gameSnake.snake.body[i].row == self.row und gameSnake.snake.body[i].col == self.col) {
             gibt true zurück;
          }
       }
       gibt false zurück;
})());

2.3.2 Der Prozess des Essens

Wenn irgendwo auf der Benutzeroberfläche Futter erscheint, steuert der Benutzer die Schlange mit den Richtungstasten, damit sie sich um das Futter herum bewegt. Wenn der Kopf der Schlange das Futter berührt, bedeutet dies, dass die gierige Schlange das Futter gefressen hat. Das nächste Futter erscheint an einer beliebigen Stelle auf der Benutzeroberfläche, und der Benutzer steuert die Schlange, damit sie dieses Futter erneut frisst.

// Wenn der Kopf der aktuellen Schlange das Futter nicht überlappt, bedeutet dies, dass das Futter nicht gefressen wurde und der Schwanz zu diesem Zeitpunkt gelöscht wird.
wenn (dieser.body[0].row == spiel.food.row und dieser.body[0].col == spiel.food.col) {
      //Wenn sie sich überlappen, bedeutet das, dass sie gefressen wurden. Der Schwanz wird nicht gelöscht, nur der Kopf wird hinzugefügt. //Neues Futter erstellen game.food = new Food(game);
      //Setze die Frame-Nummer auf 0 zurück, da die Schlange sonst springt, //das Futter frisst und Punkte hinzufügt game.score++;
      spiel.f = 0;
} anders {
      dies.body.pop();
}

2.4 Todesbestimmungsfunktion

Wenn der Schlangenkopf in Vorwärtsrichtung gegen eine Wand stößt oder der Schlangenkopf den Schlangenkörper frisst, wird ein Todesurteil gefällt und ein Popup-Fenster mit dem Spielstand des Benutzers angezeigt.

2.4.1 Edge Death Judgment (Gegen die Wand schlagen)

wenn (dieser.body[0].col > spiel.col - 1 || dieser.body[0].row > spiel.row - 1 || dieser.body[0].col < 0 || dieser.body[0].row < 0) {
        //unten rechts oben links alert('Das Spiel ist vorbei, Ihr aktueller Gesamtscore beträgt:' + game.score + 'points');
        dies.body.unshift();
        clearInterval(spiel.timer);
}

2.4.2 Sich selbst schlagen

für (var i = 1; i < this.body.length; i++) {
    wenn (dieser.body[0].col == dieser.body[i].col && dieser.body[0].row == dieser.body[i].row) {
        alert('Das Spiel ist vorbei, Ihr aktueller Gesamtscore beträgt:' + game.score + 'points');
        clearInterval(spiel.timer);
    }
}

2.5 Spiel pausieren/fortsetzen

btnstop.addEventListener('klicken', function() {
    btnstop.style.display = "keine";
    spiel.timer = setzeIntervall(funktion() {
    // Der Kern des Timers ist die Essenz der Spiel-Rendering: Bildschirm löschen – aktualisieren – Spiel rendern.f++;
    // Bildschirm löschen game.clear();
    //Schlangenbewegung/-aktualisierung //Aktualisierungsgeschwindigkeit der Schlange Wenn die Schlangenseite länger ist, erhöht sich die Geschwindigkeit var während = game.snake.body.length < 30 ? 30 - game.snake.body.length : 1;
    // Snake-Update game.f % während == 0 und game.snake.update();
    // Rendere die Schlange game.snake.render();
    // Essen rendern game.food.render();
    }, 20);
})

Zusammenfassen

Für das Snake-Spielprojekt müssen Sie Ihre Ideen ordnen.

Dies ist das Ende dieses Artikels über das praktische objektorientierte Schlangenspielbeispiel in JS. Weitere relevante Inhalte zum JS-Schlangenspiel finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die verwandten Artikel weiter unten. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Exquisiter Snake-Implementierungsprozess in JavaScript
  • JS implementiert das Schlangenspiel
  • JavaScript, um die Idee des Schlangenspiels umzusetzen
  • JavaScript-Implementierung des klassischen Schlangenspiels

<<:  HTML ungeordnete Liste Aufzählungspunkte mit Bildern CSS schreiben

>>:  Reines CSS zum Implementieren der Funktion zum Öffnen und Schließen von Auswahlfeldern im iOS-Stil

Artikel empfehlen

Vue.js implementiert Musikplayer

In diesem Artikel wird der spezifische Code von V...

So implementieren Sie Zeilenumbrüche im Texteingabebereich von Textarea

Wenn Sie den Text im Textarea-Eingabebereich umbre...

Verwendung des offiziellen MySQL-Exporttools mysqlpump

Inhaltsverzeichnis Einführung Anweisungen Tatsäch...

Detaillierte Erklärung zur Verwendung des MySQL-Sicherungsskripts mysqldump

In diesem Artikel wird das MySQL-Sicherungsskript...

js zur Realisierung einer einfachen Scheibenuhr

In diesem Artikel wird der spezifische Code von j...

Implementierung des Nginx Intranet Standalone Reverse Proxy

Inhaltsverzeichnis 1 Nginx Installation 2 Nginx k...

jQuery implementiert alle Auswahl- und umgekehrten Auswahloperationsfälle

In diesem Artikel wird der spezifische Code von j...

Detaillierte Erklärung dynamisch generierter Tabellen mit Javascript

*Seite erstellen: zwei Eingabefelder und ein Butt...

Mehrere wichtige MySQL-Variablen

Es gibt viele MySQL-Variablen, von denen einige u...

Wie füge ich ein Website-Symbol hinzu?

Der erste Schritt besteht darin, eine Software zur...

W3C Tutorial (1): W3C verstehen

Das W3C, eine 1994 gegründete Organisation, zielt...

Eine kurze Analyse des Zeitproblems von MySQL

Der Standardzeittyp (Datum/Uhrzeit und Zeitstempe...

Trash-Cli: Befehlszeilen-Papierkorb-Tool unter Linux

Ich glaube, jeder kennt den Papierkorb, da er bei...