js Canvas zur Realisierung des Gobang-Spiels

js Canvas zur Realisierung des Gobang-Spiels

In diesem Artikel wird der spezifische Code der Leinwand zur Implementierung des Gobang-Spiels zu Ihrer Information bereitgestellt. Der spezifische Inhalt ist wie folgt

Wirkung

Ideen

  • canvans zeichnet ein Schachbrett und lässt beim Zeichnen Platz für Schachfiguren am Rand
  • Achten Sie auf Klickereignisse, zeichnen Sie die Bewegungen auf und notieren Sie sie im Wörterbuch
  • Gewinnurteil: Prüfen Sie, ob in vier Richtungen genügend aufeinanderfolgende Teile vorhanden sind

Code

<!DOCTYPE html>
<html lang="de">
<Kopf>
  <meta charset="UTF-8">
  <title>ym</title>
  <Stil>
    Leinwand {
      Anzeige: Block;
      Rand: 0 automatisch;
      Rand: 0
    }

    .Ergebnis {
      Textausrichtung: zentriert;
    }
    Taste{
      Anzeige: Block;
      Rand: 0 automatisch;
      Polsterung: 4px 20px;
      Rand: 0;
      Farbe: #fff;
      Gliederung: keine;
      Rahmenradius: 3px;
      Hintergrund: #43a6ff
    }
    Schaltfläche: schweben {
      Schriftstärke: fett;
      Cursor: Zeiger;
    }
  </Stil>
</Kopf>
<Text>
<canvas id="cv" width="200px" height="200px"></canvas>
<p class="Ergebnis"></p>
<button onclick="loadPanel(400, 400,30,13)">Aktualisieren</button>
<Skript>

  ladePanel(400, 400,30,13);

  /**
   * 1) Klicken Sie, um die Figur zu platzieren und den Spieler zu wechseln. * 2) Bestimmen Sie anhand der aktuellen Position der Figur mithilfe der Form „米“, ob sie fünf oder mehr aufeinanderfolgende Figuren bilden kann. * @param w Schachbrettbreite * @param h Schachbretthöhe * @param cs Rastergröße * @param ps Schachfigurenradius */
  Funktion loadPanel(b, h, c, ps) {
    sei i, j, k;
    let chks = [[1, 0], [0, 1], [1, 1], [1, -1]]; // horizontal, vertikal, diagonal nach unten, diagonal nach oben let successNum = 5; // Gewinnstandard let resultEl = document.querySelector('.result');

    //1) Zeichnen Sie das Schachbrett, die Kanten sollten durch den Radius der Schachfigur getrennt sein cs = cs || 16; //Standardmäßige Rasterbreite und -höhe ps = ps || 4; //Radius der Schachfigur h = h || w; //Höhe ist standardmäßig gleich Breite let el = document.getElementById('cv');
    el.setAttribute('Breite', w + 'px');
    el.setAttribute('Höhe', h + 'px');
    let Kontext = el.getContext("2d");
    // Schachbrettteilung berechnen und abrunden let splitX = ~~((w - 2 * ps) / cs), splitY = ~~((h - 2 * ps) / cs);

    // Initialisieren Sie die Position der Teile mithilfe der Wörterbuchspeicherung. Dies ist einfacher als Arrays und reduziert den Speicherbedarf. let pieces = {};
    //Linienzeichnung in Schleife context.translate(ps, ps);
    Kontext.beginPath();
    Kontext.StrokeStyle = "#000";
    //vertikale Linie für (i = 0; i < splitX + 1; i++) {
      Kontext.VerschiebeNach(cs * i, 0);
      Kontext.lineTo(cs * i, splitY * cs);
      Kontext.Strich();
    }
    //Horizontale Linie für (j = 0; j < splitY + 1; j++) {
      Kontext.VerschiebeNach(0, cs * j);
      Kontext.lineTo(splitX * cs, cs * j);
      Kontext.Strich();
    }
    Kontext.Pfad schließen();

    let Benutzer = 0, Farben = ['#000', '#fefefe'];
    el.addEventListener('klicken', Funktion (e) {
      sei x = e.offsetX,
        y = e.offsetY,
        //Berechnen Sie den Bewegungsbereich rx = ~~((x - ps) / cs) + (((x - ps) % cs <= cs / 2) ? 0 : 1),
        ry = ~~((y - ps) / cs) + (((y - ps) % cs <= cs / 2) ? 0 : 1);
      //Zeichne die Schachfigurcontext.beginPath();
      Kontext.arc(cs * rx, cs * ry, ps, 2 * Math.PI, false);
      Kontext.Füllstil = Farben[Benutzer];
      Kontext.StrokeStyle = "#000";
      Benutzer? Benutzer = 0 : Benutzer = 1; //Spieler wechseln context.fill();
      Kontext.Strich();
      Kontext.Pfad schließen();

      //Position der Schachfigur aufzeichnen let piece = pieces[rx + '-' + ry] = user;

      // M-förmige Berechnungsergebnisse. Berechnen Sie anhand der aktuellen Schachposition, ob sich in einer bestimmten Richtung fünf aufeinanderfolgende identische Schachfiguren befinden for (j = 0; j < chks.length; j++) {
        sei num = 1, chk = chks[j];
        für (i = 1; i <= 4; i++) {
          wenn (Stücke[(rx + chk[0] * i) + '-' + (ry + chk[1] * i)] == Stück) {
            Zahl++
          } anders {
            für (i = -1; i >= -4; i--) {
              wenn (Stücke[(rx + chk[0] * i) + '-' + (ry + chk[1] * i)] == Stück) {
                Zahl++
              }
            }
            brechen
          }
        }
        wenn (num == Erfolgszahl) {
          resultEl.innerHTML = ['weiß', 'schwarz'][Benutzer] + 'Fang gewinnt';
          brechen;
        }
      }
    })
  }
</Skript>
</body>
</html>

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:
  • Javascript und HTML5 verwenden Canvas, um ein Web-Gobang-Spiel zu erstellen und den Algorithmus zu implementieren
  • JS Canvas zeichnet das Gobang-Schachbrett
  • Natives JS+Canvas zur Implementierung des Gobang-Spielbeispiels
  • Gobang-Spiel implementiert mit JS+Canvas [Man vs. Machine-Version]
  • Natives JS+Canvas zur Implementierung des Gobang-Spiels
  • js+canvas zur Realisierung des Gobang-Spiels
  • Detaillierte Erläuterung der Schritte zur Implementierung des Mensch-Computer-Kampfes von JS + Canvas Gobang
  • JS+Canvas zur Realisierung des Gobang-Spiels
  • Verwenden von JS-Canvas zur Realisierung des Gobang-Spiels
  • JavaScript+Canvas zur Implementierung des Gobang-Spiels

<<:  So konfigurieren Sie die Basic Auth-Anmeldeauthentifizierung in Nginx

>>:  Detailliertes Tutorial zur Installation von MySQL unter Linux

Artikel empfehlen

JavaScript-Flusskontrolle (Schleife)

Inhaltsverzeichnis 1. for-Schleife 2. Doppelte fo...

Java importiert Daten aus Excel in MySQL

Manchmal müssen wir bei unserer tatsächlichen Arb...

Spezifische Verwendung des Autoindex-Moduls in der Nginx-HTTP-Modulreihe

Die Hauptfunktion des Browsermoduls besteht darin...

Teilen Sie 10 der neuesten Web-Frontend-Frameworks (Übersetzung)

In der Welt der Webentwicklung sind Frameworks wei...

React-Tipps zeigen Ihnen, wie Sie Probleme mit Hook-Abhängigkeiten beseitigen

Ein sehr häufiges Szenario in react -Projekten: c...

CocosCreator Typescript macht Tetris-Spiel

Inhaltsverzeichnis 1. Einleitung 2. Mehrere wicht...

Über die „Berufskrankheit“ der Designer

Ich habe immer das Gefühl, dass Designer die sens...

Lösen Sie das Spleißproblem beim Löschen von Bedingungen in myBatis

Ich habe heute gerade Mybatis gelernt und einige ...

Detaillierte Erklärung der Funktion und Verwendung der KeepAlive-Komponente in Vue

Vorwort Während des Vorstellungsgesprächs erwähne...

Grundlegende Hinweise zu HTML (empfohlen)

1. Grundstruktur der Webseite: XML/HTML-CodeInhal...

Zusammenfassung verschiedener Methoden zur MySQL-Datenwiederherstellung

Inhaltsverzeichnis 1. Einleitung 2. Direkte Wiede...

MySQL in Ubuntu 18.04 installieren (grafisches Tutorial)

Tipp: Die folgenden Vorgänge werden alle mit Root...