Гра

[ Зображення для гри rar ]

[ Повна версія гри rar ]

[ Грати ]

// Створюємо поле 

var canvas = document.createElement("canvas");

var ctx = canvas.getContext("2d");

canvas.width = 512;

canvas.height = 480;

document.body.appendChild(canvas);

var monstersCaught = 0;

// Зображення

var bgImage = new Image();

bgImage.src = "img/tlo.png";    // 512x480

var heroImage = new Image();

heroImage.src = "img/heroy.png";    // 32x32

var monsterImage = new Image();

monsterImage.src = "img/monstr.png";    // 32x32

// Об'єкти гри

var hero = {

     speed: 256,  // швидкість в пікселях за секунду

     x: 0,  

     y: 0 

};

var monster = {

     x: 0, 

     y: 0   

};

var reset = function () {

     hero.x = canvas.width / 2;

     hero.y = canvas.height / 2;

     // Монстр з'являється у випадковому місті

     monster.x = 32 + (Math.random() * (canvas.width - 64));

     monster.y = 32 + (Math.random() * (canvas.height - 64));

};

// Взаємодія з клавіатурою

var keysDown = {};

addEventListener("keydown", function (e) {

     keysDown[e.keyCode] = true;

}, false);

addEventListener("keyup", function (e) {

     delete keysDown[e.keyCode];

}, false);

// Рух об'єктів по полю

var update = function (modifier) {

     if (38 in keysDown) {    // вгору

          hero.y -= hero.speed * modifier;

     }

     if (40 in keysDown) {    // вниз

          hero.y += hero.speed * modifier;

     }

     if (37 in keysDown) {    // вліво

          hero.x -= hero.speed * modifier;

     }

     if (39 in keysDown) {    // вправо

          hero.x += hero.speed * modifier;

     }

 

    // Якщо прямокутник героя наїхав на прямокутник монстра

     if (

          hero.x <= (monster.x + 32)

          && monster.x <= (hero.x + 32)

          && hero.y <= (monster.y + 32)

          && monster.y <= (hero.y + 32)

     ) {

          monstersCaught++;

          reset();

     }

};

// Виводимо

var render = function () {

     ctx.drawImage(bgImage, 0, 0);

     ctx.drawImage(heroImage, hero.x, hero.y);

     ctx.drawImage(monsterImage, monster.x, monster.y);

     ctx.fillStyle = "rgb(250, 250, 250)";

     ctx.font = "24px Helvetica";

     ctx.textAlign = "left";

     ctx.textBaseline = "top";

     ctx.fillText("Монстрів: " + monstersCaught, 32, 32);

}

// Головний цикл гри

var main = function () {

     var now = Date.now();

     var delta = now - then;

     update(delta / 1000);

     render();

     then = now;

};

// Запуск

reset();                           // перезапуск гри з початковими параметрами

var then = Date.now();    // задаємо часовий інтервал

setInterval(main, 1);       // 1 мс, виконуємо так швидко як це можливо