HintergrundIch 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. GedankenanalyseDie 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. Seitenaufbau2.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-EbeneBevor Sie den Stil festlegen, sollten Sie zunächst die allgemeine Struktur verstehen, wie unten gezeigt: 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: 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-SchichtDie 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 abrufenvar 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-ElementenWie 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 KlickereignisfunktionFunktion 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 BlockbewegungsfunktionFunktion 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. 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: 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:
|
<<: Erfahren Sie, wie Sie Nginx schnell in CentOS7 installieren
>>: Div verschachteltes HTML ohne Iframe
Inhaltsverzeichnis Vorwort 1. unbekannt vs. belie...
Problem: vue-cil3 wird mit Warnungen ausgeführt, ...
1 / Kopieren Sie die Webprojektdateien direkt in ...
1. Installieren Sie vue-cli npm ich @vue/cli -g 2...
Während meines Praktikums im letzten Studienjahr ...
Lassen Sie uns zunächst darüber sprechen, warum w...
Seien Sie nicht überrascht, wenn Sie im Bild eine ...
Beim Webdesign ist es sehr wichtig, eine organisi...
1. mpstat-Befehl 1.1 Befehlsformat mpstat [ -A ] ...
Inhaltsverzeichnis 1. Regel 1: Objekt.Methode() 1...
Im späteren Stadium der Ausnutzung von SQL-Inject...
1. Vergleichen Sie den alten virtuellen DOM mit d...
Der Hyperlink-Tag stellt einen Linkpunkt dar und ...
Docker Swarm ist ein von Docker entwickelter Cont...
Die Zeit vergeht wie im Flug und in nur sechs Tag...