Heim Web-Frontend View.js Wie verwende ich Vue, um das Snake-Spiel zu implementieren?

Wie verwende ich Vue, um das Snake-Spiel zu implementieren?

Jun 25, 2023 am 09:12 AM
vue 游戏 组件化。

Snake ist ein klassisches Spiel, das einfach und leicht zu spielen ist, aber jede Menge Spaß macht. In diesem Artikel wird erläutert, wie Sie mit dem Vue-Framework ein einfaches Schlangenspiel implementieren.

1. Projektvorbereitung

Bevor wir beginnen, müssen wir Vue CLI installieren. Wenn Sie es noch nicht installiert haben, können Sie die folgenden Schritte ausführen, um es zu installieren.

  1. Führen Sie den folgenden Befehl im Terminal aus:
npm install -g @vue/cli
Nach dem Login kopieren
  1. Erstellen Sie ein neues Vue-Projekt.
vue create snake-game
Nach dem Login kopieren
  1. Geben Sie das gerade erstellte Projekt ein.
cd snake-game
Nach dem Login kopieren

2. Projektstruktur und Technologieauswahl

In Bezug auf die Projektstruktur müssen wir zwei Komponenten erstellen: eine ist die Spielschnittstellenkomponente und die andere ist die Schlangenkomponente.

In Bezug auf die Technologieauswahl haben wir uns dafür entschieden, HTML5 Canvas zum Zeichnen der Spieloberfläche zu verwenden und Vue-Komponentenideen zu verwenden, um die Logiksteuerung zu implementieren.

3. Implementieren

  1. Erstellen Sie eine Spielschnittstellenkomponente

Erstellen Sie eine neue Game.vue-Datei im Verzeichnis src/components/ und fügen Sie dann den folgenden Code hinzu:

<template>
  <div>
    <canvas ref="canvas" width="600" height="400"></canvas>
  </div>
</template>

<script>
export default {
  mounted() {
    this.canvas = this.$refs.canvas;
    this.context = this.canvas.getContext("2d");
    this.canvas.width = 600;
    this.canvas.height = 400;
    this.startGame();
  },
  methods: {
    startGame() {
      // 游戏启动
    },
  },
};
</script>

<style>
canvas {
  border: 1px solid #000;
}
</style>
Nach dem Login kopieren

Dies ist eine sehr einfache Komponente, die wir nur verwenden Sie müssen ein HTML5-Canvas-Element schreiben, dann eine Referenz darauf binden, die Referenz abrufen und das Spiel starten, wenn die Komponente gemountet ist.

  1. Schlangenkomponente hinzufügen

Erstellen Sie eine neue Snake.vue-Datei im Verzeichnis src/components/ und fügen Sie dann den folgenden Code hinzu:

<template>
  <div>
    <div v-for="(bodyPart, index) in snake" :key="index" :style="getSnakeStyles(bodyPart)"></div>
  </div>
</template>

<script>
export default {
  props: {
    snake: {
      type: Array,
      default: () => [{ x: 0, y: 0 }],
    },
  },
  methods: {
    getSnakeStyles(bodyPart) {
      return {
        position: "absolute",
        width: "20px",
        height: "20px",
        background: "green",
        left: `${bodyPart.x}px`,
        top: `${bodyPart.y}px`,
      };
    },
  },
};
</script>

<style></style>
Nach dem Login kopieren

Diese Komponente durchläuft den Inhalt jeder Schlange basierend auf dem übergebenen Schlangenattribut die übergeordnete Komponente. Wir müssen lediglich eine getSnakeStyles-Funktion schreiben, ein Objekt mit Stilinformationen zurückgeben und basierend auf den Daten dynamisch Schlangen generieren.

  1. Fügen Sie der Game-Komponente eine Schlange hinzu

Im Skriptblock der Game-Komponente müssen wir die Snake-Komponente einführen und den folgenden Code zur startGame-Methode hinzufügen:

import Snake from "./Snake.vue";

export default {
  // ...
  components: {
    Snake,
  },
  data() {
    return {
      snake: [],
    };
  },
  methods: {
    startGame() {
      this.snake.push({ x: 0, y: 0 });
    },
  },
};
Nach dem Login kopieren

Hier haben wir eine Schlange namens Snake hinzugefügt zu den Game-Komponentendaten hinzufügen und dann eine Codezeile zur startGame-Methode hinzufügen, um den Snake-Daten den ersten Körperteil hinzuzufügen. Schließlich haben wir die Snake-Komponente eingeführt und das Snake-Attribut zur Vorlage hinzugefügt.

  1. Schlangenbewegung steuern

Damit sich die Schlange bewegen kann, müssen wir der Spielkomponente einen Timer hinzufügen und von Zeit zu Zeit die Methode moveSnake aufrufen, um die Bewegung der Schlange zu steuern.

data() {
  return {
    snake: [],
    direction: "right",
    moveInterval: null
  };
},
methods: {
  startGame() {
    this.snake.push({ x: 0, y: 0 });
    this.moveInterval = setInterval(this.moveSnake, 200);
  },
  moveSnake() {
    const snakeHead = { ...this.snake[0] };

    switch (this.direction) {
      case "right":
        snakeHead.x += 20;
        break;
      case "left":
        snakeHead.x -= 20;
        break;
      case "up":
        snakeHead.y -= 20;
        break;
      case "down":
        snakeHead.y += 20;
        break;
    }

    this.snake.pop();
    this.snake.unshift(snakeHead);
  },
  handleKeyDown(event) {
    switch (event.keyCode) {
      case 37:
        if (this.direction !== "right") this.direction = "left";
        break;
      case 38:
        if (this.direction !== "down") this.direction = "up";
        break;
      case 39:
        if (this.direction !== "left") this.direction = "right";
        break;
      case 40:
        if (this.direction !== "up") this.direction = "down";
        break;
    }
  },
},
Nach dem Login kopieren

Unter anderem haben wir der Spielkomponente Daten namens Richtung hinzugefügt, die die aktuelle Richtung der Schlange darstellen. moveInterval stellt die ID dar, die zum Löschen des Timers verwendet wird. Bei der moveSnake-Methode berechnen wir die neue Position des Schlangenkopfes basierend auf der aktuellen Richtung der Schlange, löschen das ursprüngliche Ende und fügen den neuen Schlangenkopf am Kopf ein.

Schließlich haben wir die handleKeyDown-Methode implementiert, die zum Abhören von Tastaturereignissen verwendet wird, um die Bewegungsrichtung der Schlange zu ändern.

  1. Das Spiel endet, wenn es die Grenze oder sich selbst berührt

Um die Funktion „Spielende“ zu implementieren, müssen wir innerhalb der moveSnake-Methode feststellen, ob die Schlange die Grenze oder sich selbst berührt hat.

moveSnake() {
  const snakeHead = { ...this.snake[0] };

  switch (this.direction) {
    case "right":
      snakeHead.x += 20;
      break;
    case "left":
      snakeHead.x -= 20;
      break;
    case "up":
      snakeHead.y -= 20;
      break;
    case "down":
      snakeHead.y += 20;
      break;
  }

  // 判断是否越界
  if (snakeHead.x < 0 || snakeHead.x > 580 || snakeHead.y < 0 || snakeHead.y > 380) {
    clearInterval(this.moveInterval);
    alert("Game over!");
    location.reload();
    return;
  }

  // 判断是否碰到了自身
  for (let i = 1; i < this.snake.length; i++) {
    if (snakeHead.x === this.snake[i].x && snakeHead.y === this.snake[i].y) {
      clearInterval(this.moveInterval);
      alert("Game over!");
      location.reload();
      return;
    }
  }

  this.snake.pop();
  this.snake.unshift(snakeHead);
}
Nach dem Login kopieren

Hier stellen wir zunächst fest, ob der Schlangenkopf die Grenze der Spieloberfläche überschritten hat, löschen Sie den Timer und fordern Sie das Spiel auf, es zu beenden.

Dann wird in der Schleife nacheinander beurteilt, ob sich der Schlangenkopf selbst berührt hat. Wenn ja, wird auch der Timer gelöscht und das Spiel ist vorbei.

  1. Essen in der Spieloberfläche zeichnen

Abschließend implementieren wir die Funktion zum Zeichnen von Lebensmitteln in der Spieloberfläche. Um diese Funktion zu erreichen, verwenden wir randomFoodPosition, um eine zufällige Lebensmittelposition zu berechnen, und verwenden dann die drawCircle-Methode, um kreisförmige Lebensmittel in der Spieloberfläche zu zeichnen.

startGame() {
  // ...
  // 画出第一个食物
  this.food = this.getRandomFoodPosition();
  this.drawCircle(this.context, this.food.x, this.food.y, 10, "red");
},
methods: {
  // ...
  getRandomFoodPosition() {
    return {
      x: Math.floor(Math.random() * 30) * 20,
      y: Math.floor(Math.random() * 20) * 20,
    };
  },
  drawCircle(ctx, x, y, r, color) {
    ctx.fillStyle = color;
    ctx.beginPath();
    ctx.arc(x, y, r, 0, Math.PI * 2, true);
    ctx.fill();
  },
},
Nach dem Login kopieren

Hier haben wir der Spielkomponente Daten mit dem Namen „food“ hinzugefügt, die den aktuellen Standort des Essens angeben. In der startGame-Methode rufen wir die getRandomFoodPosition-Methode auf, um eine zufällige Lebensmittelposition zu berechnen, und verwenden dann die drawCircle-Methode, um Lebensmittel in der Schnittstelle zu zeichnen.

Schließlich müssen wir nur noch feststellen, ob die Schlange mit dem Futter in der moveSnake-Methode übereinstimmt. Wenn sie übereinstimmen, erhöhen Sie die Länge des Schlangenkörpers und berechnen Sie eine neue Futterposition.

moveSnake() {
  // ...

  // 判断是否吃到了食物
  if (snakeHead.x === this.food.x && snakeHead.y === this.food.y) {
    this.snake.push(this.snake[this.snake.length - 1]);
    this.food = this.getRandomFoodPosition();
  }

  // ...
},
Nach dem Login kopieren

Bisher haben wir den gesamten Inhalt der Implementierung des Snake-Spiels in Vue abgeschlossen.

4. Zusammenfassung

In diesem Artikel wird erläutert, wie Sie mit dem Vue-Framework ein einfaches Schlangenspiel implementieren. In diesem Prozess haben wir gelernt, wie man HTML5-Canvas-Elemente zum Zeichnen von Schnittstellen verwendet und wie man Vue-Komponentenideen nutzt, um die Logiksteuerung zu implementieren, und haben schließlich ein Snake-Spiel mit grundlegendem Gameplay fertiggestellt. Ich hoffe, dass dieser Artikel allen beim Erlernen des Vue-Frameworks und der Spieleentwicklung hilfreich sein kann.

Das obige ist der detaillierte Inhalt vonWie verwende ich Vue, um das Snake-Spiel zu implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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)

So verwenden Sie Bootstrap in Vue So verwenden Sie Bootstrap in Vue Apr 07, 2025 pm 11:33 PM

Die Verwendung von Bootstrap in Vue.js ist in fünf Schritte unterteilt: Startstrap installieren. Bootstrap in main.js. Verwenden Sie die Bootstrap -Komponente direkt in der Vorlage. Optional: benutzerdefinierter Stil. Optional: Verwenden Sie Plug-Ins.

So fügen Sie Funktionen zu Schaltflächen für Vue hinzu So fügen Sie Funktionen zu Schaltflächen für Vue hinzu Apr 08, 2025 am 08:51 AM

Sie können der VUE -Taste eine Funktion hinzufügen, indem Sie die Taste in der HTML -Vorlage an eine Methode binden. Definieren Sie die Methode und schreiben Sie die Funktionslogik in der VUE -Instanz.

So verweisen Sie auf die JS -Datei mit Vue.js So verweisen Sie auf die JS -Datei mit Vue.js Apr 07, 2025 pm 11:27 PM

Es gibt drei Möglichkeiten, sich auf JS -Dateien in Vue.js zu beziehen: Geben Sie den Pfad direkt mit dem & lt; Skript & gt an. Etikett;; Dynamischer Import mit dem montierten () Lebenszyklushaken; und importieren über die Vuex State Management Library.

So verwenden Sie Watch in Vue So verwenden Sie Watch in Vue Apr 07, 2025 pm 11:36 PM

Mit der Watch -Option in Vue.js können Entwickler auf Änderungen in bestimmten Daten anhören. Wenn sich die Daten ändert, löst sich eine Rückruffunktion aus, um Aktualisierungsansichten oder andere Aufgaben auszuführen. Zu den Konfigurationsoptionen gehören unmittelbar, die festlegen, ob ein Rückruf sofort ausgeführt werden soll, und Deep, das feststellt, ob Änderungen an Objekten oder Arrays rekursiv anhören sollen.

Was bedeutet VUE Multi-Page-Entwicklung? Was bedeutet VUE Multi-Page-Entwicklung? Apr 07, 2025 pm 11:57 PM

VUE Multi-Page-Entwicklung ist eine Möglichkeit, Anwendungen mithilfe des Vue.js-Frameworks zu erstellen, in dem die Anwendung in separate Seiten unterteilt ist: Code-Wartung: Die Aufteilung der Anwendung in mehrere Seiten kann das Verwalten und Wartungsbereich erleichtern. Modularität: Jede Seite kann als separates Modul für eine einfache Wiederverwendung und den Austausch verwendet werden. Einfaches Routing: Die Navigation zwischen Seiten kann durch einfache Routing -Konfiguration verwaltet werden. SEO -Optimierung: Jede Seite hat eine eigene URL, die SEO hilft.

So kehren Sie von Vue zur vorherigen Seite zurück So kehren Sie von Vue zur vorherigen Seite zurück Apr 07, 2025 pm 11:30 PM

VUE.JS hat vier Methoden, um zur vorherigen Seite zurückzukehren: $ router.go (-1) $ router.back () verwendet & lt; Router-Link to = & quot;/& quot; Komponentenfenster.history.back () und die Methodenauswahl hängt von der Szene ab.

So verwenden Sie Vue Traversal So verwenden Sie Vue Traversal Apr 07, 2025 pm 11:48 PM

Es gibt drei gängige Methoden für Vue.js, um Arrays und Objekte zu durchqueren: Die V-für-Anweisung wird verwendet, um jedes Element zu durchqueren und Vorlagen zu rendern; Die V-Bind-Anweisung kann mit V-für dynamisch Attributwerte für jedes Element verwendet werden. und die .MAP -Methode kann Array -Elemente in Neuarrays umwandeln.

So fragen Sie die Version von Vue So fragen Sie die Version von Vue Apr 07, 2025 pm 11:24 PM

Sie können die Vue -Version mit Vue Devtools abfragen, um die Registerkarte VUE in der Konsole des Browsers anzuzeigen. Verwenden Sie NPM, um den Befehl "npm list -g vue" auszuführen. Suchen Sie das Vue -Element im Objekt "Abhängigkeiten" der Datei package.json. Führen Sie für Vue -CLI -Projekte den Befehl "Vue --version" aus. Überprüfen Sie die Versionsinformationen im & lt; Skript & gt; Tag in der HTML -Datei, die sich auf die VUE -Datei bezieht.

See all articles