Backrooms unblocked

Horror maze game!
 avatar
unknown
javascript
15 days ago
2.3 kB
6
Indexable
// Set up canvas and context
const canvas = document.getElementById('gameCanvas');
const ctx = canvas.getContext('2d');

// Set canvas to full screen
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;

// Player object
const player = {
  x: canvas.width / 2,
  y: canvas.height / 2,
  size: 30,
  speed: 5,
  color: 'yellow'
};

// Monster object
const monster = {
  x: 100,
  y: 100,
  size: 40,
  speed: 2,
  color: 'red'
};

// Key state tracking
let keyState = {};

// Draw player and monster
function drawPlayer() {
  ctx.beginPath();
  ctx.arc(player.x, player.y, player.size, 0, Math.PI * 2);
  ctx.fillStyle = player.color;
  ctx.fill();
  ctx.closePath();
}

function drawMonster() {
  ctx.beginPath();
  ctx.arc(monster.x, monster.y, monster.size, 0, Math.PI * 2);
  ctx.fillStyle = monster.color;
  ctx.fill();
  ctx.closePath();
}

// Move player based on arrow keys
function movePlayer() {
  if (keyState['ArrowUp']) player.y -= player.speed;
  if (keyState['ArrowDown']) player.y += player.speed;
  if (keyState['ArrowLeft']) player.x -= player.speed;
  if (keyState['ArrowRight']) player.x += player.speed;
}

// Move monster towards the player
function moveMonster() {
  let dx = player.x - monster.x;
  let dy = player.y - monster.y;
  let distance = Math.sqrt(dx * dx + dy * dy);
  monster.x += (dx / distance) * monster.speed;
  monster.y += (dy / distance) * monster.speed;
}

// Detect collision between player and monster
function checkCollision() {
  let dx = player.x - monster.x;
  let dy = player.y - monster.y;
  let distance = Math.sqrt(dx * dx + dy * dy);
  return distance < player.size + monster.size;
}

// Update the game state
function update() {
  if (checkCollision()) {
    alert('Game Over! The monster caught you.');
    window.location.reload();  // Reload the game on collision
  }
  
  ctx.clearRect(0, 0, canvas.width, canvas.height); // Clear the canvas
  drawPlayer();
  drawMonster();
  movePlayer();
  moveMonster();
  
  requestAnimationFrame(update); // Keep the game loop going
}

// Keydown and keyup events
window.addEventListener('keydown', (e) => {
  keyState[e.key] = true;
});

window.addEventListener('keyup', (e) => {
  keyState[e.key] = false;
});

// Start the game
update();
Leave a Comment