66 lines
1.6 KiB
JavaScript
66 lines
1.6 KiB
JavaScript
const player = document.getElementById("player");
|
|
const block = document.getElementById("block");
|
|
const scoreText = document.getElementById("scoreText");
|
|
|
|
let score = 0;
|
|
let playerX = 180;
|
|
|
|
// KECEPATAN (DIUBAH)
|
|
let speed = 1;
|
|
let speedIncrease = 0.6;
|
|
let maxSpeed = 12;
|
|
|
|
document.addEventListener("keydown", (e) => {
|
|
if (e.key === "ArrowLeft" && playerX > 0) {
|
|
playerX -= 20;
|
|
}
|
|
if (e.key === "ArrowRight" && playerX < 360) {
|
|
playerX += 20;
|
|
}
|
|
player.style.left = playerX + "px";
|
|
});
|
|
|
|
function moveBlock() {
|
|
let blockY = -40;
|
|
let blockX = Math.floor(Math.random() * 360);
|
|
block.style.left = blockX + "px";
|
|
|
|
let fall = setInterval(() => {
|
|
blockY += speed;
|
|
block.style.top = blockY + "px";
|
|
|
|
// TABRAKAN
|
|
if (
|
|
blockY > 450 &&
|
|
blockX < playerX + 40 &&
|
|
blockX + 40 > playerX
|
|
) {
|
|
alert("Game Over! Score: " + score);
|
|
score = 0;
|
|
speed = 1; // reset ke pelan (DIUBAH)
|
|
scoreText.textContent = "Score: 0";
|
|
clearInterval(fall);
|
|
moveBlock();
|
|
}
|
|
|
|
// BLOCK LOLOS
|
|
if (blockY > 500) {
|
|
score++;
|
|
scoreText.textContent = "Score: " + score;
|
|
|
|
// NAIK BERTAHAP (TERASA)
|
|
if (speed < maxSpeed) {
|
|
speed += speedIncrease;
|
|
}
|
|
|
|
blockY = -40;
|
|
block.style.top = "-40px";
|
|
clearInterval(fall);
|
|
moveBlock();
|
|
}
|
|
|
|
}, 16); // DIUBAH: lebih smooth (60 FPS)
|
|
}
|
|
|
|
moveBlock();
|