HTML+CSS+JS zur Implementierung des Spiels „Nicht auf das Whiteboard treten“

HTML+CSS+JS zur Implementierung des Spiels „Nicht auf das Whiteboard treten“

Hintergrund

Ich glaube, jeder hat das Spiel „Don't Step on the Whiteboard“ schon einmal gespielt. Dies ist ein einfaches Spiel, das auf HTML5 basiert. Es kann sowohl auf PCs als auch auf mobilen Endgeräten ausgeführt werden und ist an mehrere Plattformen anpassbar. Heute verwenden wir natives JS mit JQuery, um dieses Spiel zu erstellen – „Don't Step on the Whiteboard“.

1. Gedankenanalyse

Die ganze Seite ist ein großes Rechteck mit einem Längen-Breiten-Verhältnis von etwa 3:2. Wenn das Spiel beginnt, fallen immer wieder weiße Bretter. Dann liegen 4 Bretter in einer Reihe, ein schwarzes Brett und die anderen drei weißen Bretter. Das Klickereignis des Bretts wird gebunden und dann wird die Farbe bestimmt. Wenn es weiß ist, endet das Spiel (Game Over), andernfalls erhöhen sich die Punkte des Spielers um 1.

2. Seitenaufbau

2.1 HTML-Ebene

<div Klasse="Wrapper">
        <div id="gehen">
            <a href="javaScript:void(0)" id="go">Spielstart</a>
        </div>
        <div id="Haupt">
</div></div>

2.2 CSS-Ebene

Bevor Sie den Stil festlegen, sollten Sie zunächst die allgemeine Struktur verstehen, wie unten gezeigt:

Ein „Tritt nicht auf das Whiteboard“-Spiel basierend auf HTML5_yyds Dry Goods Inventory_02

Globale Stileinstellungen

*{
    Rand: 0;
    Polsterung: 0;
}

Wrapper-Stileinstellungen

.Verpackung{
    Rand: 150px automatisch;
    Breite: 400px;
    Höhe: 600px;
    Rand: 1px durchgezogen #ccc;
    Position: relativ;
    Überlauf: versteckt;
}

Go-Einstellungen unter Wrapper

#gehen{
    Breite: 100 %;
    Position: absolut;
    oben: 0;
    Textausrichtung: zentriert;
    z-Index:99;
}

Stil der Schaltfläche „Spiel starten“

#geh ein{
    Anzeige:Block;
    Höhe: 100px;
    Breite: 400px;
    Farbe: Cyan;
    Hintergrundfarbe: #000000;
    Textdekoration: keine;
    Rahmen unten: 3px gestrichelt #eee;
    Schriftgröße: 60px;
    Schriftstärke: 600;
}

Haupt(Block)stil

#hauptsächlich{
    Breite: 400px;
    Höhe: 600px;
    Position: relativ;
    oben: -150px;
    /* Rahmen: 1px durchgehend schwarz; */
}

Legen Sie den Stil für jede erstellte Blockreihe fest

.Reihe{
    Breite: 400px;
    Höhe: 150px;
}

Der Stil von vier kleinen Quadraten in einer Reihe

.row div{
   Breite: 99px;
   Höhe: 149px;
   Rahmen links: 1px durchgezogen #222;
   Rahmen unten: 1px durchgezogen #222;
   schweben: links;
   Cursor: Zeiger;
}

Nach dem Festlegen des Stils sieht die Benutzeroberfläche ungefähr wie folgt aus:

Ein kleines HTML5-basiertes Spiel namens „Tritt nicht auf das Whiteboard“

Sie können sehen, dass der Schnittstellenstil relativ einfach ist. Unsere Idee ist, dass die Blöcke automatisch landen, nachdem Sie auf die Schaltfläche „Spiel starten“ geklickt haben, sodass der Bildschirm (vorübergehend) relativ leer ist.

2.3 JS-Schicht

Die JS-Ebene wird hauptsächlich zur Steuerung der Seite verwendet, um dynamische Effekte zu erzeugen, wie etwa das Generieren und Verschieben von Blöcken usw.

2.3.1 Elemente abrufen

var main = document.getElementById('main'); // DOM-Element abrufen var go = document.getElementById('go'); 
var speed = 5, num = 0, timer, flag = true; // Anfangsvariablen festlegen var colors = ['red', 'green', 'black', 'blue']; // Array zum Speichern von Farben festlegen

Das Array, das hier Farben speichert, muss nicht weiß sein. Jeder initialisierte Block legt die Hintergrundfarbe nicht fest und standardmäßig ist sie weiß.

2.3.2 Erstellen Sie jede Zeile mit Div-Elementen

Wie bereits erwähnt, besteht eine Zeile aus vier Blöcken und das Verhältnis ist dasselbe wie beim großen Block (3:2). Länge und Breite betragen: {width: 100px; height: 150px};

Funktion cDiv() {
    var oDiv = document.createElement('div'); // Holen Sie eine Zufallszahl, finden Sie für jede Zeile ein zufälliges Div und legen Sie dessen Farbe fest. var index = Math.floor(Math.random() * 4);
    
    oDiv.setAttribute('class', 'row'); // Setzt den Zeilenklassennamen für (var j = 0; j < 4; j++) { // for-Schleife erzeugt eine Zeile mit vier Divs
        var iDiv = document.createElement('div');
        oDiv.appendChild(iDiv); //Füge jedes kleine Div in jede Zeile ein}
    
    if (main.childNodes.length == 0) { // Füge die neu generierte Zeile ein, je nachdem, ob im übergeordneten Element untergeordnete Elemente vorhanden sind main.appendChild(oDiv); // Wenn das übergeordnete Element leer ist, direkt einfügen } else {
        main.insertBefore(oDiv, main.childNodes[0]); // Wenn das übergeordnete Element Elemente hat, füge die neu generierte Zeile vor der vorhandenen Zeilenanzahl ein} 
    var clickDiv = main.childNodes[0].childNodes[index]; // Setze das farbige Div in einer Zeile entsprechend der Zufallszahl
    clickDiv.setAttribute('class', 'i'); // Setze den Klassennamen dieses Elements als anzuklickende Markierung clickDiv.style.backgroundColor = colors[index]; // Setze gleichzeitig die Hintergrundfarbe}

2.3.3 Kapselung der Klickereignisfunktion

Funktion bindEvent() {
    main.addEventListener('click', function (event) { // Füge ein Klickereignis zu main hinzuif (flag) { // Bestimmen, ob es basierend auf dem Flagwert anklickbar istvar tar = event.target; // Rufe das Quellereignis des Klicks abif (tar.className == 'i') { // Bestimmen, ob der angeklickte Block farbig isttar.style.backgroundColor = '#bbb'; // Ändere die Hintergrundfarbetar.classList.remove('i'); // Entferne den Klassennamennum++; // Count++
            } anders {                
                alert('Spiel vorbei, Punktestand: ' + num); // Wenn Sie auf den weißen Block klicken, ist das Spiel vorbei clearInterval(timer);
                Flagge = falsch;
            }            
            if (num % 10 == 0) { // Wenn der aktuelle Punktestand ein Vielfaches von 10 ist, speed++
                Geschwindigkeit++;
            }
        }
    })
}

2.3.4 Kapselung der Blockbewegungsfunktion

Funktion verschieben() {
    Intervall löschen(Timer); 
    Timer = setInterval(function () { // Timer einstellen var step = parseInt(main.offsetTop) + speed; // Oberen Wert verwenden, um Hauptbereich zu verschieben main.style.top = step + 'px';
        if (parseInt(main.offsetTop) >= 0) { // Wenn der Hauptbereich in den sichtbaren Bereich verschoben wird, erstelle eine neue Zeile mit Elementen cDiv();
            main.style.top = '-150px'; // Verschiebe den Hauptbereich auch über den sichtbaren Bereich}
        var len = main.childNodes.length; // Anzahl der Zeilen im Hauptbereich abrufen if (len == 6) { // Wenn die Anzahl der Zeilen im Hauptbereich 6 beträgt, wird über und unter den vier Zeilen im Anzeigebereich eine neue Zeile generiert for (var i = 0; i < 4; i++) { // Jedes div in der letzten Zeile durchlaufen
                
                if (main.childNodes[len - 1].children[i].classList.contains('i')) { // Wenn es eines gibt, das das Game Over enthält, das nicht angeklickt wurde, alert('Game over, score: ' + num);
                    Intervall löschen(Timer);
                    flag = false; // Du kannst nach Spielende nicht erneut klicken}
            }
            
            main.removeChild(main.childNodes[len - 1]); // Jede Zeile nach der Anzeige entfernen}
    }, 20)
    bindEvent(); // Klickereignis}

Der erste Satz in der Funktion lautet „clearInterval(timer)“, um das Öffnen mehrerer Timer zu verhindern.

Ein „Tritt nicht auf das Whiteboard“-Spiel basierend auf HTML5_yyds Dry Goods Inventory_04

2.3.5 Spielstart

// Klicken Sie auf die Schaltfläche „Start“, um mit der Bewegung und Erstellung der einzelnen Elementzeilen zu beginnen. Funktion clickStart() {
    go.addEventListener('klicken', Funktion () {
        go.style.display = "keine";
        bewegen();
    });
}
klickStart();

Die allgemeine Wirkung ist in der Abbildung dargestellt:

Ein „Tritt nicht auf das Whiteboard“-Spiel basierend auf HTML5_native js_05

Dies ist die Schnittstelle, die den in HbuilderX integrierten Browser verwendet. Der Effekt, der das Spielende bewirkt, ist in der Abbildung oben dargestellt.

Abschluss

In diesem Artikel verwenden wir natives JS, um ein einfaches Touchscreen-Spiel zu erstellen – treten Sie nicht auf das Whiteboard und nehmen Sie einige einfache Änderungen am Spiel vor. Im Allgemeinen müssen wir zuerst die allgemeine Struktur und den Stil der Spieloberfläche einrichten und dann natives JS verwenden, um die Bewegung und Klicks der Blöcke zu steuern und schließlich einen geeigneten und vollständigen Oberflächeneffekt bereitzustellen. Interessierte können es ausprobieren.

Dies ist das Ende dieses Artikels über die Verwendung von HTML+CSS+JS zur Implementierung des Spiels „Don't Step on the Whiteboard“. Weitere verwandte HTML+CSS+JS-Inhalte zum Spiel „Don't Step on the Whiteboard“ finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • js html5 css Tetris-Spiel erneut auftauchen
  • JavaScript HTML5-Canvas zur Realisierung eines Brick-Breaking-Spiels

<<:  Erfahren Sie, wie Sie Nginx schnell in CentOS7 installieren

>>:  Div verschachteltes HTML ohne Iframe

Artikel empfehlen

MySQL-Installationsinformationen unter Linux-Server anzeigen

Sehen Sie sich die Installationsinformationen von...

Methodenbeispiel zum sicheren Abrufen tiefer Objekte von Object in Js

Inhaltsverzeichnis Vorwort Text Parameter Beispie...

Zusammenfassung der Lösung für den Webpack -v-Fehler von Vue

Xiaobai lernte Vue kennen, dann lernte er Webpack...

IIS7 IIS8 Reverse-Proxy-Regeln schreiben, installieren und konfigurieren

Zweck: Station A als sekundäres Verzeichnis von S...

Beispielcode zum Konvertieren von HTML-Tabellendaten in das JSON-Format

Die Javascript-Funktion zum Konvertieren von <t...

So aktivieren Sie die MySQL-Remoteverbindung auf einem Linux-Server

Vorwort Lernen Sie MySQL, um frühere Nicht-MK-Dat...

Three.js-Beispielcode zur Implementierung des Tautropfen-Animationseffekts

Vorwort Hallo zusammen, hier ist der CSS-Assisten...

Detailliertes Tutorial zur Installation von Docker auf CentOS 8

1. Frühere Versionen yum entfernen Docker Docker-...

Detaillierte Erklärung zum Schreiben mehrerer Bedingungen von CSS: nicht

Der Pseudoklassenselektor :not kann Elemente filt...

js implementiert das Umschalten von Bildern per Maus (ohne Timer)

In diesem Artikelbeispiel wird der spezifische Co...

Programme zum Abfragen und Löschen der Portnutzung im Windows-Betriebssystem

Im Windows-Betriebssystem das Programm zum Abfrag...