-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
71 lines (60 loc) · 2.53 KB
/
script.js
File metadata and controls
71 lines (60 loc) · 2.53 KB
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
65
66
67
68
69
70
71
document.addEventListener("DOMContentLoaded", function () {
const player = document.getElementById("player");
const love = document.getElementById("love");
const obstacles = document.querySelectorAll(".obstacle");
const message = document.getElementById("message");
let playerX = 10;
let playerY = 10;
const step = 40; // Rastergröße für präzise Bewegung
// Steuerung mit Tastatur
document.addEventListener("keydown", function (event) {
handleMove(event.key);
});
// Steuerung mit Touch-Buttons
document.getElementById("up").addEventListener("click", () => handleMove("ArrowUp"));
document.getElementById("down").addEventListener("click", () => handleMove("ArrowDown"));
document.getElementById("left").addEventListener("click", () => handleMove("ArrowLeft"));
document.getElementById("right").addEventListener("click", () => handleMove("ArrowRight"));
function handleMove(direction) {
let newX = playerX;
let newY = playerY;
switch (direction) {
case "ArrowUp": newY -= step; break;
case "ArrowDown": newY += step; break;
case "ArrowLeft": newX -= step; break;
case "ArrowRight": newX += step; break;
}
if (isValidMove(newX, newY)) {
playerX = newX;
playerY = newY;
player.style.left = playerX + "px";
player.style.top = playerY + "px";
}
if (checkCollision(player, love)) {
message.textContent = "Die Tauben haben sich gefunden! 💕";
player.textContent = "💑"; // Wechselt das Emoji zu verliebten Tauben
}
}
function isValidMove(x, y) {
const gameContainer = document.getElementById("game-container");
// Spielfeldbegrenzung prüfen
if (x < 0 || y < 0 || x >= gameContainer.clientWidth || y >= gameContainer.clientHeight) {
return false;
}
// Hindernis-Kollision prüfen
for (let obstacle of obstacles) {
if (checkCollision({ offsetLeft: x, offsetTop: y, offsetWidth: step, offsetHeight: step }, obstacle)) {
return false;
}
}
return true;
}
function checkCollision(obj1, obj2) {
return (
obj1.offsetLeft < obj2.offsetLeft + obj2.offsetWidth &&
obj1.offsetLeft + obj1.offsetWidth > obj2.offsetLeft &&
obj1.offsetTop < obj2.offsetTop + obj2.offsetHeight &&
obj1.offsetTop + obj1.offsetHeight > obj2.offsetTop
);
}
});