💄 All end games case working, possibilty to play other games even if opponent quit and one more boat for proper test

docker-deployment
Vincent ASTOLFI 10 months ago
parent d89a641bea
commit c51e135a86

@ -8,9 +8,14 @@ class Player {
this.username = username this.username = username
this.grid = new Grid(); this.grid = new Grid();
this.pieces = []; this.pieces = [];
this.createPiece()
}
createPiece() {
this.pieces.push(new Piece(1, { x: 0, y: 0 }, { x: 0, y: 0 })); this.pieces.push(new Piece(1, { x: 0, y: 0 }, { x: 0, y: 0 }));
this.pieces.push(new Piece(2, { x: 2, y: 2 }, { x: 2, y: 3 })); this.pieces.push(new Piece(2, { x: 2, y: 2 }, { x: 2, y: 3 }));
this.pieces.push(new Piece(3, { x: 4, y: 3 }, { x: 4, y: 5 }))
this.pieces.forEach((piece) => { this.pieces.forEach((piece) => {
for (let i = piece.startPos.x; i <= piece.endPos.x; i++) { for (let i = piece.startPos.x; i <= piece.endPos.x; i++) {
for (let j = piece.startPos.y; j <= piece.endPos.y; j++) { for (let j = piece.startPos.y; j <= piece.endPos.y; j++) {
@ -21,19 +26,11 @@ class Player {
}); });
} }
resetPiece() {
this.pieces = []
this.createPiece()
}
createPiece() {
this.pieces.push(new Piece(1, { x: 0, y: 0 }, { x: 0, y: 0 }));
this.pieces.push(new Piece(2, { x: 2, y: 2 }, { x: 2, y: 3 }));
}
resetGrid() { resetGrid() {
this.grid = new Grid() this.grid = new Grid()
this.resetPiece() this.pieces = []
this.createPiece()
} }
} }

@ -47,7 +47,7 @@
<canvas id="own_board" width="301" height="301"></canvas> <canvas id="own_board" width="301" height="301"></canvas>
<canvas <canvas
id="ennemy_board" id="ennemy_board"
class="hidden-element" style="display: none;"
width="301" width="301"
height="301" height="301"
></canvas> ></canvas>
@ -62,9 +62,9 @@
<p id="playerInfo"></p> <p id="playerInfo"></p>
<div id="inGameNotification"> <div id="inGameNotification">
<h2 class="hidden-element" id="play_notification">You have to play</h2> <h2 style="display: none;" id="play_notification">You have to play</h2>
<h2 class="hidden-element" id="hit_notification">Hit !</h2> <h2 style="display: none;" id="hit_notification">Hit !</h2>
<h2 class="hidden-element" id="win_notification">WIN !</h2> <h2 style="display: none;" id="win_notification">WIN !</h2>
</div> </div>
<script src="https://cdn.socket.io/4.7.5/socket.io.min.js"></script> <script src="https://cdn.socket.io/4.7.5/socket.io.min.js"></script>

@ -20,7 +20,7 @@ function startConnection() {
socket.on("start game", (username) => { socket.on("start game", (username) => {
const ennemyBoard = document.querySelector("#ennemy_board"); const ennemyBoard = document.querySelector("#ennemy_board");
ennemyBoard.classList.remove("hidden-element"); ennemyBoard.style.display = 'block'
drawGrid(); drawGrid();
drawEnnemyGrid(); drawEnnemyGrid();
@ -31,13 +31,13 @@ socket.on("end game", () => {
const ennemyBoard = document.querySelector("#ennemy_board"); const ennemyBoard = document.querySelector("#ennemy_board");
const loader = document.querySelector("#loader"); const loader = document.querySelector("#loader");
loader.classList.remove("hidden-element"); loader.style.display = 'block'
ennemyBoard.classList.add("hidden-element"); ennemyBoard.style.display = 'none'
}); });
socket.on("play", () => { socket.on("play", () => {
const notification = document.querySelector("#play_notification"); const notification = document.querySelector("#play_notification");
notification.classList.remove("hidden-element"); notification.style.display = 'block'
play(); play();
}); });
@ -45,13 +45,13 @@ socket.on("played move", (isHit, isWin) => {
const hitNotification = document.querySelector("#hit_notification"); const hitNotification = document.querySelector("#hit_notification");
const winNotification = document.querySelector("#win_notification"); const winNotification = document.querySelector("#win_notification");
if (isHit) hitNotification.classList.remove("hidden-element"); if (isHit) hitNotification.style.display = 'block'
else hitNotification.classList.add("hidden-element"); else hitNotification.style.display = 'none'
if (isWin) gameEnd() if (isWin) gameEnd()
if (isWin) winNotification.classList.remove("hidden-element"); if (isWin) winNotification.style.display = 'block'
else winNotification.classList.add("hidden-element"); else winNotification.style.display = 'none'
drawGrid(); drawGrid();
drawEnnemyGrid(); drawEnnemyGrid();
@ -63,22 +63,32 @@ socket.on('opponent left', () => {
}) })
socket.on("go to menu", () => { socket.on("go to menu", () => {
goToMenu()
})
function goToMenu() {
const modal = document.getElementById("gameEndedModal") const modal = document.getElementById("gameEndedModal")
const ennemyGrid = document.getElementById("ennemy_board") const ennemyGrid = document.getElementById("ennemy_board")
const loader = document.getElementById("loader")
const roomkeyHolder = document.getElementById("roomkeyHolder") const roomkeyHolder = document.getElementById("roomkeyHolder")
const notifications = document.getElementById("inGameNotification") const loader = document.querySelector("#loader");
const playNotification = document.querySelector("#play_notification");
const hitNotification = document.querySelector("#hit_notification");
const winNotification = document.querySelector("#win_notification");
roomId = "" roomId = ""
notifications.style.display = 'none' playNotification.style.display = 'none'
hitNotification.style.display = 'none'
winNotification.style.display = 'none'
modal.style.display = 'none' modal.style.display = 'none'
ennemyGrid.style.display = 'none' ennemyGrid.style.display = 'none'
loader.classList.remove = "hidden-element" loader.style.display = 'block'
roomkeyHolder.style.display = 'none'
roomkeyHolder.innerHTML = ""
roomkeyHolder.style.display = 'block'
drawGrid() drawGrid()
}) }
function gameEnd() { function gameEnd() {
const modal = document.getElementById('gameEndedModal'); const modal = document.getElementById('gameEndedModal');
@ -88,7 +98,7 @@ function gameEnd() {
export function sendMove(move) { export function sendMove(move) {
const notification = document.querySelector("#play_notification"); const notification = document.querySelector("#play_notification");
socket.emit("play", roomId, socket.id, move); socket.emit("play", roomId, socket.id, move);
notification.classList.add("hidden-element"); notification.style.display = 'none'
} }
function onCreateRoom() { function onCreateRoom() {
@ -96,7 +106,7 @@ function onCreateRoom() {
event.preventDefault(); event.preventDefault();
const loader = document.querySelector("#loader"); const loader = document.querySelector("#loader");
const roomkeyHolder = document.querySelector("#roomkeyHolder"); const roomkeyHolder = document.querySelector("#roomkeyHolder");
loader.classList.add("hidden-element"); loader.style.display = 'none';
socket.emit("room creation", socket.id, (response) => { socket.emit("room creation", socket.id, (response) => {
roomId = response.roomId; roomId = response.roomId;
@ -124,7 +134,7 @@ function onJoinRoom() {
errorHolder.append("Error : Room Id don't exist") errorHolder.append("Error : Room Id don't exist")
} }
} else { } else {
loader.classList.add("hidden-element"); loader.style.display = "none";
roomkeyHolder.innerHTML += `Your room key is : <strong>` + roomId + `</strong>`; roomkeyHolder.innerHTML += `Your room key is : <strong>` + roomId + `</strong>`;
} }
}); });
@ -135,13 +145,11 @@ function onJoinRoom() {
document.getElementById('closeModalButton').addEventListener('click', () => { document.getElementById('closeModalButton').addEventListener('click', () => {
const modal = document.getElementById('opponentLeftModal'); const modal = document.getElementById('opponentLeftModal');
const ennemyBoard = document.querySelector("#ennemy_board");
ennemyBoard.classList.add("hidden-element");
modal.style.display = 'none'; modal.style.display = 'none';
socket.emit("reset grid", roomId) socket.emit("reset grid", roomId)
drawGrid()
goToMenu()
}); });
document.getElementById('goToMenuButton').addEventListener('click', () => { document.getElementById('goToMenuButton').addEventListener('click', () => {

Loading…
Cancel
Save