Oyun skoru
Kırmızı kareyi hareket ettirmek için düğmelere basın:
Skoru Say
Bir oyunda skoru tutmanın birçok yolu vardır, size tuvale nasıl skor yazılacağını göstereceğiz.
İlk önce bir puan bileşeni yapın:
Örnek
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();
}
Bir tuval öğesi üzerine metin yazma sözdizimi, bir dikdörtgen çizmekten farklıdır. Bu nedenle, kurucuya bu bileşenin "metin" türünde olduğunu söyleyen ek bir argüman kullanarak bileşen oluşturucuyu çağırmalıyız.
Bileşen yapıcısında, bileşenin "metin" türünde olup olmadığını test ederiz ve
fillText
yöntem yerine yöntemi kullanırız fillRect
:
Örnek
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);
}
}
...
}
Sonunda, skoru tuvale yazan updateGameArea işlevine bazı kodlar ekliyoruz. frameNo
Skoru saymak için özelliği kullanırız :
Örnek
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 = "SCORE: " + myGameArea.frameNo;
myScore.update();
myGamePiece.newPos();
myGamePiece.update();
}