Webbserverprogrammering 1

Show sourcecode

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

webbserverprogrammering/GYA/js/

box.js
branch_box_1.js
branch_gate.js
branch_main_1.js
branch_main_2.js
branch_player_1.js
door.js
gate.js
global.js
imagesNSound_handler-Kits-Dator.js
imagesNSound_handler.js
main.js
player.js
pressure_plate.js
rolling_stone.js
world.js

player.js

107 lines UTF-8 Windows (CRLF)
// Spelarens atribut
const player = {
  width : tile_size * 0.8,
  height : tile_size * 0.8,
  color : "rgb(218, 103, 9)",
  speed : 1.5,
  dx : 0,
  dy : 0,
  currentTexture : 2,
  walkAnimationDelay : 0,
  walkAnimationDelayMax : 15,
  blinkDelay : 0,
  blinkDelayMax : 12
};

// Spelarens startpunkt för varje bana
if (level == 5) {
  player.x = tile_size * 12.1;
  player.y = 4;
} else if (level == 6) {
  player.x = tile_size * 14;
  player.y = tile_size * 3.1;
} else if (level == 6) {
  player.x = tile_size * 14;
  player.y = tile_size * 3.1;
}else if (level == 7) {
  player.x = tile_size * 2.6;
  player.y = tile_size * 8.6;
} else {
  player.x = tile_size * 2.6;
  player.y = tile_size * 4.6;
}

// Bytter riktning hos spelaren
let keysDown = {};
function updateDirection() {
  // WASD och piltangenterna
  if (keysDown["w"] || keysDown["arrowup"]) {
    player.dx = 0; 
    player.dy = -1;
  } else if (keysDown["s"] || keysDown["arrowdown"]) {
    player.dx = 0; 
    player.dy = 1;
  } else if (keysDown["a"] || keysDown["arrowleft"]) {
    player.dx = -1; 
    player.dy = 0;
  } else if (keysDown["d"] || keysDown["arrowright"]) {
    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, player.y) || isBlocked(player.x, player.y + player.height) || isBlocked(player.x + player.width, player.y + player.height));
}

// Ritar spelaren på spelplanen
function drawPlayer(ctxTarget) {
  ctxTarget.fillStyle = player.color;
  // Ritar spelarens animation
  if (player.dx != 0) {
    player.walkAnimationDelay++;
    if (player.walkAnimationDelay >= player.walkAnimationDelayMax) {
      player.walkAnimationDelay = 0;
      if (player.currentTexture < 8) {
        player.currentTexture++;
      } else {
        player.currentTexture = 3;
      }
    }
  } else {
    // Får spelaren att blinka när hon står stilla
    player.blinkDelay++;
    if (Math.random() <= 0.05 && player.blinkDelay >= player.blinkDelayMax) {
      player.currentTexture = 1;
      player.blinkDelay = 0;
    } else if (player.blinkDelay >= player.blinkDelayMax) {
      player.currentTexture = 2;
      player.blinkDelay = 0;
    }
  }
  make_base(playerTextures[player.currentTexture], player.x, player.y, player.width, player.height, canvas);
}