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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// 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);
}