O‘yin hisobi


Qizil kvadratni harakatlantirish uchun tugmalarni bosing:








ULASHISH

Hisobni sanash

O‘yinda hisobni yuritishning ko‘plab usullari bor; biz sizga hisobni canvas’ga qanday yozishni ko‘rsatamiz.

Avval hisob komponentini yarating:

Misol

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(); }

canvas elementiga matn yozish sintaksisi to‘rtburchak chizishdan farq qiladi. Shuning uchun komponent konstruktorini qo‘shimcha argument bilan chaqirib, konstruktorga bu komponent "text" turida ekanini bildirishimiz kerak.

Komponent konstruktorida komponent "text" turida ekanini tekshiramiz va fillRect metodi o‘rniga fillText metodidan foydalanamiz:

Misol

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);     }   } ... }



Nihoyat, updateGameArea funksiyasiga hisobni canvas’ga yozadigan kod qo‘shamiz. Hisobni sanash uchun frameNo xususiyatidan foydalanamiz:

Misol

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(); }
O‘zingiz sinab ko‘ring »

W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!