Skip to content

Commit

Permalink
enemies
Browse files Browse the repository at this point in the history
  • Loading branch information
Vital-Vuillaume committed Jun 23, 2024
1 parent aa02a65 commit dfb8a21
Show file tree
Hide file tree
Showing 10 changed files with 118 additions and 100 deletions.
1 change: 0 additions & 1 deletion Site/Css/topaze.css
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
border-top-left-radius: 0px;
padding: 13px;
gap: 20px;
position: relative;
z-index: 2000;
position: absolute;

Expand Down
Binary file added Site/ImageGame/a.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Site/ImageGame/b.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Site/ImageGame/c.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Site/ImageGame/goat1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Site/ImageGame/goat2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Site/ImageGame/goat3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Site/ImageGame/goat4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
148 changes: 79 additions & 69 deletions Site/Js/JsGame/play.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,46 @@ function animate() {

let moving = true;

enemies1.forEach((enemy) => {
const direction = Math.floor(nbEnemiesPassed / enemy.range) % 2 === 0 ? 1 : -1;
const distance = (nbEnemiesPassed % enemy.range) * direction;
const speed = enemy.speed * (20 / enemy.range);

if (enemy.xy === "x") {
enemy.sprite.position.x += speed * distance;
if (direction > 0) {
enemy.sprite.image = enemy.sprite.sprites.up;
} else {
enemy.sprite.image = enemy.sprite.sprites.down;
}
} else if (enemy.xy === "y") {
enemy.sprite.position.y += speed * distance;
if (direction > 0) {
enemy.sprite.image = enemy.sprite.sprites.up;
} else {
enemy.sprite.image = enemy.sprite.sprites.down;
}
}

enemy.sprite.movingEnemy = true;

nbEnemiesPassed++;
});

enemiesMap.forEach(enemy => {
if (
rectangularCollision({
rectangle1: player,
rectangle2: {...enemy.sprite, position: {
x: enemy.sprite.position.x,
y: enemy.sprite.position.y
}}
})
) {
heartChange(-1)
}
});

if(heart <= 0) {
diedReprendre = false;

Expand Down Expand Up @@ -107,40 +147,6 @@ function animate() {
frontOfHome.draw()
});

enemies1.forEach(enemy => {
const direction = Math.floor(nbEnemiesPassed / enemy.range) % 2 === 0 ? 1 : -1;
const distance = (nbEnemiesPassed % enemy.range) * direction;
const speed = enemy.speed * (20 / enemy.range);

if(direction > 0) {
enemy.sprite.image = enemy.sprite.sprites.up;
} else {
enemy.sprite.image = enemy.sprite.sprites.down;
}

enemy.sprite.position.x += speed * distance;
enemy.sprite.movingEnemy = true;

nbEnemiesPassed++;
});

enemiesMap.forEach(enemy => {
if (
rectangularCollision({
rectangle1: player,
rectangle2: {...enemy.sprite, position: {
x: enemy.sprite.position.x,
y: enemy.sprite.position.y
}}
})
) {

moving = false;
player.moving = false;
heartChange(-1)
}
});

if(!menuKeys && !carteKeys) {
if (keys.w.pressed && lastKey === "w") {

Expand All @@ -149,22 +155,32 @@ function animate() {

// Collision

for (let i = 0; i < mapOfCollisions.length; i++) {
const boundary = mapOfCollisions[i];
if(
rectangularCollision({
rectangle1: player,
rectangle2: {...boundary, position: {
x: boundary.position.x,
y: boundary.position.y + 2
}}
})
){
moving = false;
player.moving = false;
break;
spritesCollisionsMap.forEach(spriteCollisionsMap => {
for (let i = 0; i < mapOfCollisions.length; i++) {
const boundary = mapOfCollisions[i];
if(
rectangularCollision({
rectangle1: player,
rectangle2: {...boundary, position: {
x: boundary.position.x,
y: boundary.position.y + 2
}}
}) ||
rectangularCollision({
rectangle1: player,
rectangle2: {...spriteCollisionsMap.sprite, position: {
x: spriteCollisionsMap.sprite.position.x,
y: spriteCollisionsMap.sprite.position.y + 2
}}
})
){
moving = false;
player.moving = false;
break;
}
}
}
})


// Villager

Expand All @@ -178,16 +194,10 @@ function animate() {
}}
})
) {

moving = false;
player.moving = false;

keydialogue(villager);
}
});



// Home

for (let i = 0; i < frontOfHomes.length; i++) {
Expand Down Expand Up @@ -223,7 +233,7 @@ function animate() {

// Collision

villagersMap.forEach(villager => {
spritesCollisionsMap.forEach(spriteCollisionsMap => {
for (let i = 0; i < mapOfCollisions.length; i++) {
const boundary = mapOfCollisions[i];
if(
Expand All @@ -236,9 +246,9 @@ function animate() {
}) ||
rectangularCollision({
rectangle1: player,
rectangle2: {...villager.sprite, position: {
x: villager.sprite.position.x,
y: villager.sprite.position.y - 2
rectangle2: {...spriteCollisionsMap.sprite, position: {
x: spriteCollisionsMap.sprite.position.x,
y: spriteCollisionsMap.sprite.position.y - 2
}}
})
){
Expand All @@ -263,7 +273,7 @@ function animate() {

//Collision

villagersMap.forEach(villager => {
spritesCollisionsMap.forEach(spriteCollisionsMap => {
for (let i = 0; i < mapOfCollisions.length; i++) {
const boundary = mapOfCollisions[i];
if(
Expand All @@ -273,12 +283,12 @@ function animate() {
x: boundary.position.x + 2,
y: boundary.position.y
}}
}) ||
}) ||
rectangularCollision({
rectangle1: player,
rectangle2: {...villager.sprite, position: {
x: villager.sprite.position.x + 2,
y: villager.sprite.position.y
rectangle2: {...spriteCollisionsMap.sprite, position: {
x: spriteCollisionsMap.sprite.position.x + 2,
y: spriteCollisionsMap.sprite.position.y
}}
})
){
Expand All @@ -303,7 +313,7 @@ function animate() {

// Collision

villagersMap.forEach(villager => {
spritesCollisionsMap.forEach(spriteCollisionsMap => {
for (let i = 0; i < mapOfCollisions.length; i++) {
const boundary = mapOfCollisions[i];
if(
Expand All @@ -313,12 +323,12 @@ function animate() {
x: boundary.position.x - 2,
y: boundary.position.y
}}
}) ||
}) ||
rectangularCollision({
rectangle1: player,
rectangle2: {...villager.sprite, position: {
x: villager.sprite.position.x - 2,
y: villager.sprite.position.y
rectangle2: {...spriteCollisionsMap.sprite, position: {
x: spriteCollisionsMap.sprite.position.x - 2,
y: spriteCollisionsMap.sprite.position.y
}}
})
){
Expand Down
69 changes: 39 additions & 30 deletions Site/Js/JsGame/sprite.js
Original file line number Diff line number Diff line change
Expand Up @@ -164,56 +164,65 @@ const villagersMovable = villagers.map(villager => villager.sprite);

// Enemies creation

const enemyImages1 = [];
const enemyImages2 = [];

const enemyPositions1 = [
{ x: 80, y: 80 },
{ x: 150, y: 150 }
const enemyImages = [
["./Site/ImageGame/goat3.png", "./Site/ImageGame/goat4.png"],
["./Site/ImageGame/goat1.png", "./Site/ImageGame/goat2.png"],
["./Site/ImageGame/goat3.png", "./Site/ImageGame/goat4.png"],
["./Site/ImageGame/goat3.png", "./Site/ImageGame/goat4.png"],
["./Site/ImageGame/goat1.png", "./Site/ImageGame/goat2.png"],
["./Site/ImageGame/goat1.png", "./Site/ImageGame/goat2.png"]
];

const enemySpeeds = [0.08, 0.1];
const enemyRanges = [200, 100];
const enemyPositions = [
{ x: 180, y: -230 },
{ x: 360, y: -430 },
{ x: -50, y: -430 },
{ x: -600, y: -800 },
{ x: 100, y: -730 },
{ x: -90, y: -930 },
];

for (let i = 0; i < enemyPositions1.length; i++) {
const enemyImage1 = new Image();
const enemyImage2 = new Image();
enemyImage1.src = './Site/ImageGame/player3.png';
enemyImage2.src = './Site/ImageGame/player4.png';
enemyImages1.push(enemyImage1);
enemyImages2.push(enemyImage2);
}
const enemySpeeds = [0.2, 0.07, 0.1, 0.4, 0.07, 0.06];
const enemyRanges = [600, 550, 690, 500, 900, 550];
const enemyXY = ["x", "y", "x", "x", "y", "y"];

const enemies1 = [];

for (let i = 0; i < enemyPositions1.length; i++) {
for (let i = 0; i < enemyPositions.length; i++) {
const [image1, image2] = enemyImages[i].map(src => {
const img = new Image();
img.src = src;
return img;
});

const enemy1 = {
sprite: new Sprite({
position: {
x: canvas.width / 2 + enemyPositions1[i].x,
y: canvas.height / 2 + enemyPositions1[i].y
x: canvas.width / 2 + enemyPositions[i].x,
y: canvas.height / 2 + enemyPositions[i].y
},
image: enemyImages1[i],
frames: {
max: 4
},
sprites: {
up: enemyImages1[i],
down: enemyImages2[i]
}
image: image1,
frames: { max: 4 },
sprites: { up: image1, down: image2 },
}),
speed: enemySpeeds[i],
range: enemyRanges[i]
range: enemyRanges[i],
xy: enemyXY[i]
};

enemies1.push(enemy1);
}

const enemiesMap = [...enemies1];

const enemies = [...enemiesMap];

const enemiesMovable = enemies.map(enemy => enemy.sprite);





const spritesCollisionsMap = [...enemiesMap, ...villagersMap];

// Map creation

const backgroundMap = new Sprite({
Expand Down

0 comments on commit dfb8a21

Please sign in to comment.