Puntuación de juego
- Página anterior Obstáculo de juego
- Página siguiente Imagen de juego
Presiona el botón para mover el cuadrado rojo:
Puntuación
Hay muchos métodos para registrar puntuaciones en el juego, mostraremos cómo escribir la puntuación en el lienzo.
Primero, crea un componente de puntuación:
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(); }
La sintaxis para escribir texto en el elemento de lienzo es diferente de la de dibujar un rectángulo. Por lo tanto, debemos usar un parámetro adicional para llamar al constructor del componente, informando al constructor que el tipo de este componente es "text".
En el constructor del componente, comprobamos si el componente es "text"
Tipo, y usa fillText
Método en lugar de fillRect
Método:
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); } } ... }
Finalmente, en la función updateGameArea, agregamos código para escribir el puntaje en el lienzo. Usamos frameNo
usamos propiedades para calcular el puntaje:
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, "verde", x, 0)); myObstacles.push(new component(10, x - height - gap, "verde", x, height + gap)); } for (i = 0; i < myObstacles.length; i += 1) { myObstacles[i].speedX = -1; myObstacles[i].newPos(); myObstacles[i].update(); } myScore.text = "PUNTAJE: " + myGameArea.frameNo; myScore.update(); myGamePiece.newPos(); myGamePiece.update(); }
- Página anterior Obstáculo de juego
- Página siguiente Imagen de juego