Spiel-Punkte
- Vorherige Seite Spiel-Hindernisse
- Nächste Seite Spiel-Bilder
Drücken Sie die Schaltfläche, um den roten Block zu bewegen:
Punktzahl
Es gibt viele Methoden, um Punkte in Spielen zu verfolgen. Wir zeigen Ihnen, wie Sie Punkte auf dem Canvas schreiben.
Erstellen Sie zunächst eine Punktzahlskomponente:
var myGamePiece; var myObstacles = []; var myScore; function startGame() { myGamePiece = new component(30, 30, "red", 10, 160); myScore = new component("30px", "Consolas", "black", 280, 40, "text"); myGameArea.start(); }
Der Syntax zum Schreiben von Text auf dem Canvas-Element ist anders als der zur Zeichnung von Rechtecken. Daher müssen wir einen zusätzlichen Parameter an den Konstruktor des Komponentenobjekts übergeben, um dem Konstruktor mitzuteilen, dass der Typ der Komponente "text" ist.
Im Konstruktor des Komponentenobjekts testen wir, ob das Komponentenobjekt "text"
Typ, und verwenden fillText
Methode anstatt fillRect
Methode:
function component(width, height, color, x, y, type) { this.type = type; this.width = width; this.height = height; this.speedX = 0; this.speedY = 0; this.x = x; this.y = y; this.update = function() { ctx = myGameArea.context; if (this.type == "text") { ctx.font = this.width + " " + this.height; ctx.fillStyle = color; ctx.fillText(this.text, this.x, this.y); } else {}} ctx.fillStyle = color; ctx.fillRect(this.x, this.y, this.width, this.height); } } ... }
Schließlich fügen wir im updateGameArea-Funktion einige Codezeilen hinzu, um die Punkte auf dem Canvas zu schreiben. Wir verwenden frameNo
Um die Punkte zu berechnen, verwenden wir die folgende Eigenschaft:
function updateGameArea() { var x, height, gap, minHeight, maxHeight, minGap, maxGap; for (i = 0; i < myObstacles.length; i += 1) { if (myGamePiece.crashWith(myObstacles[i])) { myGameArea.stop(); return; } } myGameArea.clear(); myGameArea.frameNo += 1; if (myGameArea.frameNo == 1 || everyinterval(150)) { x = myGameArea.canvas.width; minHeight = 20; maxHeight = 200; height = Math.floor(Math.random()*(maxHeight-minHeight+1)+minHeight); minGap = 50; maxGap = 200; gap = Math.floor(Math.random()*(maxGap-minGap+1)+minGap); myObstacles.push(new component(10, height, "green", x, 0)); myObstacles.push(new component(10, x - height - gap, "green", x, height + gap)); } for (i = 0; i < myObstacles.length; i += 1) { myObstacles[i].speedX = -1; myObstacles[i].newPos(); myObstacles[i].update(); } myScore.text = "SCORING: " + myGameArea.frameNo; myScore.update(); myGamePiece.newPos(); myGamePiece.update(); }
- Vorherige Seite Spiel-Hindernisse
- Nächste Seite Spiel-Bilder