Heim >
Web-Frontend >
js-Tutorial >
Javascript-simuliertes Panzerkampfspiel (HTML5-Version) mit Quellcode-Download_Javascript-Kenntnissen
Javascript-simuliertes Panzerkampfspiel (HTML5-Version) mit Quellcode-Download_Javascript-Kenntnissen
WBOY
Freigeben: 2016-05-16 16:52:56
Original
1521 Leute haben es durchsucht
1. Fassen Sie die wichtigsten Punkte und aufgetretenen Probleme zusammen
1 Für die Vererbung in JavaScript ist es am besten, wenn die übergeordnete Klasse nur die gemeinsame Nutzung von Methoden bereitstellt und die Attribute in die jeweiligen Unterklassen geschrieben werden, um eine Vermischung der Konstruktoren zu vermeiden die Elternklasse und die Unterklasse.
2. Der Code für die Prototyp-Simulationsvererbung sollte vor allen Methodendefinitionen geschrieben werden, andernfalls wird das Prototypobjekt geändert und die Methode wird undefiniert, wie zum Beispiel:
Hero.prototype = new Tank (0, 0, 0); Hero.prototype.constructor = Hero ; Hero.prototype.addLife = function(){ this.lifetimes ;document.querySelector("#life").innerHTML = hero.lifetimes; 🎜> 3. Beim Zeichnen von Grafiken auf Leinwand müssen zusätzlich zum Zeichnen von Rechtecken ctx.beginPath(); und ctx.closePath(); hinzugefügt werden, sonst treten unerwartete Fehler auf.
4. Die concat-Funktion kann Arrays zusammenführen oder Elemente in ein neues Array zurückgeben
5 Nachdem das src-Attribut von Image zugewiesen wurde, wird das Bild geladen, wenn dies nicht der Fall ist Wenn das Bild geladen wird, wird es fehlschlagen. Verwenden Sie daher die Onload-Ereignisverarbeitung
6. Erweitern Sie die Array-Funktion und löschen Sie das angegebene Element
Code kopieren
Der Code lautet wie folgt: //Erweitert, um das angegebene Element zu löschen Array.prototype.deleteElement = function (obj) {
if (obj) {
for (var i = 0; i < this.length; i ) { if (this[i] === obj) { this.splice (i, 1); } } }
7. Timer-Einstellung, der erste Parameter der setInterval("fun",1000)-Methode kann a sein B. „hero.say()“, ähnlich wie eval, um diese Codezeichenfolge auszuführen, sodass Parameter für die Funktion bereitgestellt und auch der laufende Kontext dieser Funktion angegeben werden können. Wenn die Funktion jedoch als Handle übergeben wird, kann sie keine Parameter annehmen und der Kontext kann nicht angegeben werden. Zusätzlich zur ersten Möglichkeit habe ich Abschlüsse verwendet, um dieses Problem zu lösen
Code kopieren
Der Code lautet wie folgt://Timer, bewegt sich von selbstthis.timer = setInterval ((function (context) { return function () {
Bullet.prototype.move.call (context)
} }) (this),
Ich habe das gespeichert aktuelle AusführungsumgebungUnd rufen Sie die Aufrufmethode auf, um sie manuell auszuführen.
8. Zusätzlich zur Funktion sollte das funktionale Design der Methode die Bedingungserkennung für die Ausführung dieser Funktion umfassen. Beispielsweise sollte das Verschieben die Umstände umfassen, unter denen es verschoben werden kann und unter denen es nicht verschoben werden kann . Dieser Test sollte nicht extern durchgeführt werden.
9. Beim Schreiben von Code sollten Sie nicht zuerst über Design- oder Optimierungsprobleme nachdenken und dann über die Optimierung sprechen, oder Sie sollten sie zuerst entwerfen und dann implementieren. Die Gedanken sollten klar und nicht verwirrend sein und sich auf einen Punkt konzentrieren.
10. Es gibt keine Schlaffunktion in JavaScript. Sie können eine Variable als Puffer erstellen, um den Zweck der Intervallausführung zu erreichen
1 Das Programm ist unterteilt in Bomb.js,Bullet.js,Draw.js,Tank.js,index.html,img,music,
function draw(){ //Überprüfen Sie das Leben und den Tod von Kugeln und Panzern checkDead( / /Löschen Sie die Leinwand ctx.clearRect(0,0,500,400);//Zeichne den Spieler if(!hero.isdead){ drawTank(hero); hero.cutLife( ); } //Zeichne feindlichen Panzer for (var i = 0; i < Enemys.length; i ) { drawTank(enemys[i]) ; } //Feindliche Kugeln ziehen for(var j=0;jvar temp = Feinde[j].bulletsList; var i = 0; i < temp.length; i ) { drawBullet(temp[i]} } /Zeichne Spieleraufzählungszeichen var temp = hero. BulletsList; for (var i = 0; i < temp.length; i ) { drawBullet(temp[i]);
function checkDead(){ //Erkennen Sie das Leben und den Tod feindlicher Kugeln for(var j=0; jvar temp = Feinde[j].bulletsList;for (var i = 0; i < temp.length; i ) { var o = temp[ i]; if(o.isdead ){ temp.deleteElement(o); } } //Erkennen Sie das Leben und den Tod von Spielerkugeln var temp = hero.bulletsList; for (var i = 0; i < temp.length; i ) { var o = temp[i]; if(o.isdead){ temp.deleteElement(o); } }
//Erkennen Sie das Leben und den Tod feindlicher Panzer für (var i = 0; i < Feinde.Länge; i ) { var o = Feinde[i]; if( o.isdead){ enemys.deleteElement(o); }
Bomb.js
Code kopieren
Der Code lautet wie folgt:
/ ** * Erstellt von Alane am 14.3.18. */ function Bomb(x,y){ this .life = 12; this.x = x; } Bomb.prototype.lifeDown = function(){ this.life--; 🎜>Code kopieren
Der Code lautet wie folgt:
/** * Erstellt von Alane am 14.3.7. */ /** * direkt 0 nach oben * 1 nach rechts * 2 nach unten * 3 nach links * @param x * @param y * @param direkt * @constructor */ //************************************************** ***************************************/ //坦克父类 Funktion Tank (x, y, direkt) { this.speed = 2;
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