denkenDer 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 Schlangeneffekt2. Analyse der Schlange2.1 Spiel starten-FunktionWenn 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 Funktion2.2.1 Schlangenbewegung in verschiedene RichtungenWenn 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 TastatursteuerungsrichtungsbewegungsfunktionDer 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 Essensfunktion2.3.1 LebensmittelproduktionFutterstandort: 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 EssensWenn 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 TodesbestimmungsfunktionWenn 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 schlagenfü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/fortsetzenbtnstop.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); }) ZusammenfassenFü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:
|
<<: HTML ungeordnete Liste Aufzählungspunkte mit Bildern CSS schreiben
Breite: automatisch Das untergeordnete Element (e...
In diesem Artikel wird der spezifische Code von V...
Wenn Sie den Text im Textarea-Eingabebereich umbre...
Inhaltsverzeichnis Einführung Anweisungen Tatsäch...
Als ich mich mit Inline-Blöcken beschäftigte, stel...
In diesem Artikel wird das MySQL-Sicherungsskript...
In diesem Artikel wird der spezifische Code von j...
Inhaltsverzeichnis 1 Nginx Installation 2 Nginx k...
In diesem Artikel wird der spezifische Code von j...
*Seite erstellen: zwei Eingabefelder und ein Butt...
Es gibt viele MySQL-Variablen, von denen einige u...
Der erste Schritt besteht darin, eine Software zur...
Das W3C, eine 1994 gegründete Organisation, zielt...
Der Standardzeittyp (Datum/Uhrzeit und Zeitstempe...
Ich glaube, jeder kennt den Papierkorb, da er bei...