دفع أزرار لتحريك مربع أحمر:
عد والنتيجة
هناك العديد من الطرق للحفاظ على النتيجة في اللعبة، ونحن سوف تظهر لك كيفية كتابة النتيجة على قماش.
تأكد أولا عنصر النتيجة:
مثال
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();
}
بناء الجملة من أجل كتابة النص على عنصر قماش يختلف عن رسم مستطيل. لذلك يجب علينا أن ندعو منشئ مكون باستخدام حجة إضافية، وقال منشئ أن هذا العنصر هو من نوع "text" .
في منشئ مكون نختبر إذا كان العنصر هو من نوع "text" ، واستخدام fillText
طريقة بدلا من fillRect
الأسلوب:
مثال
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);
}
}
...
}
أخيرا نضيف بعض التعليمات البرمجية في وظيفة updateGameArea أن يكتب النتيجة على قماش. نحن نستخدم frameNo
الملكية لحساب النتيجة:
مثال
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();
}
انها محاولة لنفسك »