score feature finished in back still need front

main
Vincent ASTOLFI 8 months ago
parent ed1452bfc0
commit 2e3d9f7845

@ -1,4 +1,3 @@
const uuid = require("uuid");
const { Grid } = require("./Grid.js"); const { Grid } = require("./Grid.js");
const { Piece } = require("./Piece.js"); const { Piece } = require("./Piece.js");
@ -14,11 +13,11 @@ class Player {
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(1, { x: 0, y: 3 }, { x: 0, y: 3 })); this.pieces.push(new Piece(1, { x: 0, y: 3 }, { x: 0, y: 3 }));
//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(2, { x: 8, y: 2 }, { x: 8, y: 3 })); this.pieces.push(new Piece(2, { x: 8, y: 2 }, { x: 8, y: 3 }));
//this.pieces.push(new Piece(3, { x: 4, y: 3 }, { x: 4, y: 5 })); this.pieces.push(new Piece(3, { x: 4, y: 3 }, { x: 4, y: 5 }));
//this.pieces.push(new Piece(4, { x: 6, y: 6 }, { x: 6, y: 9 })); this.pieces.push(new Piece(4, { x: 6, y: 6 }, { x: 6, y: 9 }));
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++) {

@ -38,7 +38,7 @@ class Room {
ret = {isMove: true, players: this.players, isHit: playedCase.isShip, ret = {isMove: true, players: this.players, isHit: playedCase.isShip,
isWin: this.checkWin()} isWin: this.checkWin()}
if(!ret.isHit || ret.isWin) { if(!ret.isHit) {
let tmp = this.actualPlayer; let tmp = this.actualPlayer;
this.actualPlayer = this.ennemy; this.actualPlayer = this.ennemy;
this.ennemy = tmp; this.ennemy = tmp;

@ -1,12 +1,27 @@
CREATE DATABASE IF NOT EXISTS battleship; CREATE DATABASE IF NOT EXISTS battleship;
USE battleship; USE battleship;
CREATE TABLE IF NOT EXISTS users ( CREATE TABLE IF NOT EXISTS users (
id INT PRIMARY KEY AUTO_INCREMENT, id INT PRIMARY KEY AUTO_INCREMENT,
pseudo VARCHAR(255) UNIQUE NOT NULL, pseudo VARCHAR(255) UNIQUE NOT NULL,
hashed_password VARCHAR(255) NOT NULL hashed_password VARCHAR(255) NOT NULL
); );
CREATE USER 'root' IDENTIFIED WITH mysql_native_password BY 'rootpassword'; CREATE TABLE IF NOT EXISTS scoreboards (
GRANT ALL PRIVILEGES ON battleship.* TO 'root'; id INT PRIMARY KEY AUTO_INCREMENT,
FLUSH PRIVILEGES; player1 INT NOT NULL,
player2 INT NOT NULL,
player1Win INT NOT NULL DEFAULT 0,
player2Win INT NOT NULL DEFAULT 0,
FOREIGN KEY (player1) REFERENCES users(id),
FOREIGN KEY (player2) REFERENCES users(id)
);
CREATE TABLE IF NOT EXISTS score (
id INT PRIMARY KEY AUTO_INCREMENT,
playerId INT NOT NULL,
wins INT NOT NULL DEFAULT 0,
loses INT NOT NULL DEFAULT 0,
FOREIGN KEY (playerId) REFERENCES users(id)
);

@ -87,13 +87,30 @@ app.post('/register', async (req, res) => {
} }
}); });
const query = 'INSERT INTO users (pseudo, hashed_password) VALUES (?, ?)'; var query = 'INSERT INTO users (pseudo, hashed_password) VALUES (?, ?)';
db.query(query, [pseudo, hashedPassword], (err, results) => { db.query(query, [pseudo, hashedPassword], (err, results) => {
if (err) { if (err) {
console.error('Error inserting user into the database:', err); console.error('Error inserting user into the database:', err);
return res.status(500).send('Internal server error.'); return res.status(500).send('Internal server error.');
} }
query = 'SELECT id FROM users WHERE pseudo = ?'
db.query(query, [pseudo], (err, results) => {
if (err) {
console.error('Error inserting user into the database:', err);
return res.status(500).send('Internal server error.');
}
if (results.length === 1) {
query = 'INSERT INTO score (playerId) VALUES (?)';
db.query(query, [results[0].id], (err, results) => {
if (err) {
console.error('Error inserting user into the database:', err);
return res.status(500).send('Internal server error.');
}
})
}
});
const token = jwt.sign({ pseudo }, secretKey, { expiresIn: '1h' }); const token = jwt.sign({ pseudo }, secretKey, { expiresIn: '1h' });
res.cookie('authToken', token, { httpOnly: true, secure: false }); res.cookie('authToken', token, { httpOnly: true, secure: false });
@ -300,17 +317,27 @@ io.on("connection", (socket) => {
if (results.isWin) { if (results.isWin) {
const winner = results.players.find((p) => p.id === results.player) const winner = results.players.find((p) => p.id === results.player)
const loser = results.players.find((p) => p.id !== winner.id) const loser = results.players.find((p) => p.id !== winner.id)
const alteredRow = "player" + winner.dbId + "Win" const alteredRow = "player" + (winner.dbId > loser.dbId ? 2 : 1) + "Win"
const ids = [winner.dbId, loser.dbId].sort((a, b) => a - b) const ids = [winner.dbId, loser.dbId].sort((a, b) => a - b)
const getPseudoQuery = `UPDATE scoreboards SET ${alteredRow} = ${alteredRow} + 1 WHERE player1 = ? AND player2 = ?` var query = 'UPDATE score SET wins = wins + 1 WHERE playerId = ?'
db.query(getPseudoQuery, [ids[0], ids[1]], (err, results) => { db.query(query, [winner.dbId], (err, results) => {
if (err) { if (err) {
console.log(err) console.log(err)
} }
console.log(results) })
if (results.length === 1) {
console.log("Scoreboards update") query = 'UPDATE score SET loses = loses + 1 WHERE playerId = ?'
db.query(query, [loser.dbId], (err, results) => {
if (err) {
console.log(err)
}
})
query = `UPDATE scoreboards SET ${alteredRow} = ${alteredRow} + 1 WHERE player1 = ? AND player2 = ?`
db.query(query, [ids[0], ids[1]], (err, results) => {
if (err) {
console.log(err)
} }
}); });
} }

@ -16,4 +16,12 @@ CREATE TABLE IF NOT EXISTS scoreboards (
player2Win INT NOT NULL DEFAULT 0, player2Win INT NOT NULL DEFAULT 0,
FOREIGN KEY (player1) REFERENCES users(id), FOREIGN KEY (player1) REFERENCES users(id),
FOREIGN KEY (player2) REFERENCES users(id) FOREIGN KEY (player2) REFERENCES users(id)
) );
CREATE TABLE IF NOT EXISTS score (
id INT PRIMARY KEY AUTO_INCREMENT,
playerId INT NOT NULL,
wins INT NOT NULL DEFAULT 0,
loses INT NOT NULL DEFAULT 0,
FOREIGN KEY (playerId) REFERENCES users(id)
);
Loading…
Cancel
Save