Webbserverprogrammering 1

Show sourcecode

The following files exists in this folder. Click to view.

webbserverprogrammering/GYA/js/

box.js
branch_box_1.js
branch_main_1.js
branch_main_2.js
branch_player_1.js
door.js
global.js
main.js
player.js
world.js

player.js

64 lines UTF-8 Windows (CRLF)
// Spelarens atribut
let player = {
  x : tile_size,
  y : tile_size,
  width : tile_size,
  height : tile_size,
  color : "black",
  speed : 2.5,
  dx : 0,
  dy : 0
};

// Bytter riktning hos spelaren
let keysDown = {};
function updateDirection() {
  if (keysDown["w"]) {
    player.dx = 0; 
    player.dy = -1;
  } else if (keysDown["s"]) {
    player.dx = 0; 
    player.dy = 1;
  } else if (keysDown["a"]) {
    player.dx = -1; 
    player.dy = 0;
  } else if (keysDown["d"]) {
    player.dx = 1; 
    player.dy = 0;
  } else {
    player.dx = 0; 
    player.dy = 0;
  }
}

// Flyttar spelaren
function movePlayer() {
  player.x += player.dx * player.speed;
  player.y += player.dy * player.speed;
}

// Spelarens kollision med världskanten
function clampPlayer(canvas) {
  player.x = Math.max(0, Math.min(player.x, canvas.canvas.width - player.width));
  player.y = Math.max(0, Math.min(player.y, canvas.canvas.height - player.height));
}

// Spelarens kollision med blocken
function playerBlocked(world, tile_size, blockedTypes) {
  function isBlocked(x, y) {
    let gridX = Math.floor(x / tile_size);
    let gridY = Math.floor(y / tile_size);
    if (gridY >= 0 && gridY < world.length && gridX >= 0 && gridX < world[0].length) {
      return blockedTypes.includes(world[gridY][gridX]);
    }
    return false;
  }
  return (isBlocked(player.x, player.y) || isBlocked(player.x + player.width - 1, player.y) || isBlocked(player.x, player.y + player.height - 1) || isBlocked(player.x + player.width - 1, player.y + player.height - 1)
  );
}

// Ritar spelaren på spelplanen
function drawPlayer(canvas) {
  canvas.fillStyle = player.color;
  canvas.fillRect(player.x, player.y, player.width, player.height);
}