js um das Schlangenspiel mit Kommentaren zu implementieren

js um das Schlangenspiel mit Kommentaren zu implementieren

In diesem Artikelbeispiel wird der spezifische Code von js zur Implementierung des Schlangenspiels als Referenz bereitgestellt. Der spezifische Inhalt ist wie folgt

Es hat zwei Stunden gedauert, bis es fertig war, es ist ein bisschen grob.

Sehen Sie die Wirkung direkt. Öffnen Sie das Debug-Panel und erstellen Sie einen neuen Snippet im Ressourcen-Panel.

Fügen Sie den folgenden Code ein, klicken Sie mit der rechten Maustaste auf den Ausschnitt und führen Sie ihn aus.

Intervall löschen(Timer);
Dokument.Body.innerHTML = "";

//Wie viele Felder bewegt es sich pro Sekunde? let speed = 10;
sei speedUpMul = 3;

//Kann es durch die Wand gehen? let isThroughTheWall = true;

//Anzahl der Zeilen let row = 40;
sei headColor = "rot";
lassen Sie bodyColor = "grün";
lassen Sie foodColor = "gelb";
lassen Sie borderColor = "grau";


//Globale Spielvariablen let hasFood = false;
//Spielstatus let gamestaus = 'start';
sei hasAccelerate = false;

let mainContainer = document.createElement("div");
mainContainer.style.width = 20 * Zeile + 1 + "px";
mainContainer.style.height = 20 * Zeile + 1 + "px";
mainContainer.style.margin = "0 auto";
mainContainer.style.position = "relativ";
mainContainer.style.border = "1px durchgezogen " + Rahmenfarbe;

Dokument.Body.AnhängenUntergeordnetesElement(HauptContainer);

für (lass i = 0; i < Zeile; i ++) {
 sei marginTop = 20 * i + "px";
 für(lass j = 0; j < Zeile; j++) {
 sei marginLeft = j * 20 + "px";
 let tempDiv = document.createElement('div');
 tempDiv.style.width = "19px";
 tempDiv.style.height = "19px";
 tempDiv.style.marginTop = RandTop;
 tempDiv.style.marginLeft = RandLeft;
 tempDiv.style.border = "0,5px durchgezogen " + Rahmenfarbe;
 tempDiv.style.position = "absolut";
 tempDiv.id = j + "div" + i;
 mainContainer.appendChild(tempDiv);
 }
}

Klasse Zelle{
 Konstruktor(x, y, Farbe){
 if (istDurchDieWand) {
  wenn(x < 0) x = Zeile-1;
  wenn(x > Zeile - 1) x = 0;
  wenn (y < 0) y = Zeile - 1;
  wenn (y > Zeile - 1) y = 0;
 }anders{
  wenn(x < 0 || y < 0 || x > Zeile - 1 || y > Zeile - 1){
  Intervall löschen(Timer);
  Alarm ('Spiel vorbei');
  zurückkehren;
  }
 }
 dies.x = x;
 dies.y = y;
 diese.farbe = Farbe;
 let tempDiv = document.getElementById(x + 'div' + y);
 wenn(tempDiv) tempDiv.style.backgroundColor = Farbe;
 }
}

Schlange = {
 Kopf : {},
 Körper : [],
 schrecklich: 1
}

sei headx = Math.floor(Math.random() * 14) + 3;
sei heady = Math.floor(Math.random() * 14) + 3;
snake.head = neue Zelle(headx, heady, headColor);

//oben, rechts, unten, links let direction = [1, 2, 3, 4]

Schlange.dire = Richtung[Math.floor(Math.random() * 4)];

wenn(snake.direct == 1){
 snake.body.push(neue Zelle(snake.head.x, snake.head.y+1, bodyColor));
 snake.body.push(neue Zelle(snake.head.x, snake.head.y+2, bodyColor));
 snake.body.push(neue Zelle(snake.head.x, snake.head.y+3, bodyColor));
}

wenn(snake.direct == 2){
 snake.body.push(neue Zelle(snake.head.x-1, snake.head.y, bodyColor));
 snake.body.push(neue Zelle(snake.head.x-2, snake.head.y, bodyColor));
 snake.body.push(neue Zelle(snake.head.x-3, snake.head.y, bodyColor));
}

wenn(snake.direct == 3){
 snake.body.push(neue Zelle(snake.head.x, snake.head.y-1, bodyColor));
 snake.body.push(neue Zelle(snake.head.x, snake.head.y-2, bodyColor));
 snake.body.push(neue Zelle(snake.head.x, snake.head.y-3, bodyColor));
}

wenn(snake.direct == 4){
 snake.body.push(neue Zelle(snake.head.x+1, snake.head.y, bodyColor));
 snake.body.push(neue Zelle(snake.head.x+2, snake.head.y, bodyColor));
 snake.body.push(neue Zelle(snake.head.x+3, snake.head.y, bodyColor));
}

Funktion Spiel(){
 wenn(Spielstatus == 'Pause'){
 zurückkehren;
 }
 wenn(Spielstatus == 'Spiel vorbei'){
 Intervall löschen(Timer);
 Alarm ('Spiel vorbei');
 zurückkehren;
 }
 initFood();
 sei snakeHeadX = snake.head.x;
 sei snakeHeadY = snake.head.y;
 lass Farbe = '';
 wenn(snake.direct == 1){
 tempDiv = document.getElementById(snakeHeadX + 'div' + (snakeHeadY-1));
 wenn(tempDiv) Farbe = tempDiv.style.backgroundColor;
 snake.head = neue Zelle(snakeHeadX, snakeHeadY - 1, Kopffarbe);
 }
 wenn(snake.direct == 2){
 let tempDiv = document.getElementById((snakeHeadX + 1) + 'div' + snakeHeadY);
 wenn(tempDiv) Farbe = tempDiv.style.backgroundColor;
 snake.head = neue Zelle(snakeHeadX + 1, snakeHeadY, headColor);
 }
 wenn(snake.direct == 3){
 tempDiv = document.getElementById(snakeHeadX + 'div' + (snakeHeadY+1));
 wenn(tempDiv) Farbe = tempDiv.style.backgroundColor;
 snake.head = neue Zelle(snakeHeadX, snakeHeadY + 1, headColor);
 }
 wenn(snake.direct == 4){
 let tempDiv = document.getElementById((snakeHeadX - 1) + 'div' + snakeHeadY);
 wenn(tempDiv) Farbe = tempDiv.style.backgroundColor;
 snake.head = neue Zelle(snakeHeadX - 1, snakeHeadY, Kopffarbe);
 }
 snake.body.unshift(neue Zelle(snakeHeadX, snakeHeadY, bodyColor));
 wenn(Farbe && Farbe == Lebensmittelfarbe){
 hatEssen = falsch;
 initFood();
 }sonst wenn(Farbe && Farbe == Körperfarbe){
 gamestaus = "Spiel vorbei"; 
 }anders{
 letzer Körper = Schlange.Körper.Pop();
 neue Zelle (letzter Körper.x, letzter Körper.y, '');
 }
}
var Timer = setInterval(Spiel, 10 / Geschwindigkeit * 100)


/**
 * Nahrung initialisieren */
Funktion initFood(){
 während(!hasFood){
 sei x = Math.floor(Math.random() * Zeile);
 sei y = Math.floor(Math.random() * Zeile);
 sei snakeBody = snake.body;
 lass enable = true;
 wenn(Schlange.Kopf.x == x && Schlange.Kopf.y == y){
  aktivieren = falsch;
 }
 für(sBody von snakeBody){
  wenn(sBody.x == x && sBody.y == y){
  aktivieren = falsch;
  brechen;
  }
 }
 wenn(aktivieren){
  neue Zelle (x, y, Lebensmittelfarbe);
  hatEssen = wahr;
 }
 }
}

Dokument.onkeydown = Funktion(e){
 wenn(e.keyCode == 38){
 //wenn(snake.dire != 3 und snake.dire != 1){
  Schlange.dire = 1;
 }sonst wenn(snake.direct == 1){
  wenn(!hasAccelerate){
  Intervall löschen(Timer);
  hatAccelerate = wahr;
  Geschwindigkeit = Geschwindigkeit * speedUpMul;
  Timer = setzeIntervall(Spiel, 10 / Geschwindigkeit * 100)
  }
 }

 }

 wenn(e.keyCode == 39){
 //Rechtswenn(snake.dire != 4 && snake.dire != 2){
  Schlange.dire = 2;
 }sonst wenn(snake.dire == 2){
  wenn(!hasAccelerate){
  Intervall löschen(Timer);
  hatAccelerate = wahr;
  Geschwindigkeit = Geschwindigkeit * speedUpMul;
  Timer = setzeIntervall(Spiel, 10 / Geschwindigkeit * 100)
  }
 }
 }

 wenn(e.keyCode == 40){
 //Weiterwenn(snake.dire != 1 && snake.dire != 3){
  Schlange.dire = 3;
 }sonst wenn(snake.dire == 3){
  wenn(!hasAccelerate){
  Intervall löschen(Timer);
  hatAccelerate = wahr;
  Geschwindigkeit = Geschwindigkeit * speedUpMul;
  Timer = setzeIntervall(Spiel, 10 / Geschwindigkeit * 100)
  }
 }
 }

 wenn(e.keyCode == 37){
 //Links wenn (snake.dire != 2 und snake.dire != 4) {
  Schlange.dire = 4;
 }sonst wenn(snake.dire == 4){
  wenn(!hasAccelerate){
  Intervall löschen(Timer);
  hatAccelerate = wahr;
  Geschwindigkeit = Geschwindigkeit * speedUpMul;
  Timer = setzeIntervall(Spiel, 10 / Geschwindigkeit * 100)
  }
 }
 }
 //Leertaste Pause if(e.keyCode == 32){
 wenn(Spielstatus == 'Start'){
  gamestaus = "Pause";
 }sonst wenn(Spielstatus == 'Pause'){
  Spielestaus = "Start";
 }
 }
}

Dokument.onkeyup = Funktion(e){
 wenn(e.keyCode == 38){
 // wenn (snake.dire == 1 und hasAccelerate) {
  Intervall löschen(Timer);
  hatAccelerate = falsch;
  Geschwindigkeit = Geschwindigkeit / speedUpMul;
  Timer = setzeIntervall(Spiel, 10 / Geschwindigkeit * 100)
 }

 }

 wenn(e.keyCode == 39){
 //Rechtswenn(snake.dire == 2 && hasAccelerate){
  Intervall löschen(Timer);
  hatAccelerate = falsch;
  Geschwindigkeit = Geschwindigkeit / speedUpMul;
  Timer = setzeIntervall(Spiel, 10 / Geschwindigkeit * 100)
 }
 }

 wenn(e.keyCode == 40){
 //Weiterwenn(snake.dire == 3 && hasAccelerate){
  Intervall löschen(Timer);
  hatAccelerate = falsch;
  Geschwindigkeit = Geschwindigkeit / speedUpMul;
  Timer = setzeIntervall(Spiel, 10 / Geschwindigkeit * 100)
 }
 }

 wenn(e.keyCode == 37){
 //Links wenn (snake.dire == 4 && hasAccelerate) {
  Intervall löschen(Timer);
  hatAccelerate = falsch;
  Geschwindigkeit = Geschwindigkeit / speedUpMul;
  Timer = setzeIntervall(Spiel, 10 / Geschwindigkeit * 100)
 }
 }
}

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • JS implementiert das Schlangenspiel
  • JavaScript, um die Idee des Schlangenspiels umzusetzen
  • JavaScript-Implementierung des klassischen Schlangenspiels
  • Verwenden Sie js, um ein einfaches Schlangenspiel zu schreiben
  • JavaScript Snake-Implementierungscode
  • JavaScript zur Implementierung der Webversion des Schlangenspiels
  • Implementierung des Snake-Spiels in JavaScript
  • Natives JS zur Realisierung eines einfachen Schlangenspiels
  • Snake-Spiel mit nativem JS schreiben
  • Exquisiter Snake-Implementierungsprozess in JavaScript

<<:  Einführung in Who-Befehlsbeispiele in Linux

>>:  Konfigurieren Sie ein Implementierungsbeispiel für den Mysql-Master-Slave-Dienst

Artikel empfehlen

Detailliertes Tutorial zur automatischen Installation von CentOS7.6 mit PXE

1. Nachfrage Die Basis verfügt über 300 neue Serv...

So installieren Sie Jenkins mit Docker

Inhaltsverzeichnis 1. Ziehen Sie das Bild 2. Erst...

So verwenden Sie GeoIP, um Regionen in Nginx einzuschränken

Dieser Blog ist eine Arbeitsnotiz Umfeld: Nginx-V...

Erläuterung des Beispiels einer MySQL-Datenanalyse-Speicher-Engine

Inhaltsverzeichnis 1. Fälle vorstellen 2. Zeigen ...

Web-Frontend-Entwicklung CSS-bezogene Teamzusammenarbeit

Die Frontend-Entwicklungsabteilung wächst, die Mi...

IE6 BUG und Fix ist eine vorbeugende Strategie

Originalartikel: Ultimatives IE6-Cheatsheet: So b...

Detaillierte Erläuterung der JavaScript-Closure-Probleme

Closures sind eines der traditionellen Features r...

CentOS8-Installationstutorial für JDK8/Java8 (empfohlen)

Vorwort Zuerst wollte ich es mit wget auf CentOS8...

Erläuterung des HTML-Tabellenlayouts als Beispiel

Die Elemente in einem HTML-Dokument werden hinter...

So unterstreichen Sie das A-Tag und ändern die Farbe vor und nach dem Klicken

Code kopieren Der Code lautet wie folgt: ein:link...

Zwei Möglichkeiten, damit IE6 Bilder im PNG-24-Format normal anzeigt

Methode 1: Bitte fügen Sie den folgenden Code nach...

Vue implementiert Tab-Tab-Umschaltung

In diesem Artikelbeispiel wird der spezifische Co...