Гра
[ Зображення для гри 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 мс, виконуємо так швидко як це можливо