SyntaxSquad/DADProject#46 SyntaxSquad/DADProject#47 added sockets for game joining and card play

This commit is contained in:
2025-12-28 16:34:51 +00:00
parent 0d0f7569a6
commit 14dd4b3a4e
7 changed files with 459 additions and 127 deletions
+14 -34
View File
@@ -1,49 +1,29 @@
// websockets/state/game.js
const BiscaGame = require("../classes/BiscaGame");
// Importamos a classe que criaste no Passo 1
const BiscaGame = require('../classes/BiscaGame');
// Aqui guardamos todos os jogos a decorrer na memória RAM do servidor
// Chave: ID do jogo (matchId) -> Valor: Instância do Jogo (O objeto com o baralho, mãos, etc)
const activeGames = new Map();
/**
* Cria um novo jogo, guarda-o na memória e retorna-o.
*/
const createGame = (id, type, player1, player2) => {
// 1. Instanciar a classe (Criar o jogo com as regras)
const game = new BiscaGame(id, type, player1, player2);
// 2. Preparar o jogo (Baralhar, dar cartas iniciais)
game.init();
const game = new BiscaGame(id, type, player1, player2);
// 3. Guardar no "Armazém" para não se perder
activeGames.set(id, game);
game.init();
console.log(`[Game State] Jogo criado: ${id} (Tipo: ${type})`);
return game;
activeGames.set(id, game);
console.log(`[Game State] Game created: ${id} (Type: ${type})`);
return game;
};
/**
* Busca um jogo existente pelo ID.
* Usado sempre que um jogador envia uma carta, para sabermos a qual jogo pertence.
*/
const getGame = (id) => {
return activeGames.get(id);
return activeGames.get(id);
};
/**
* Remove o jogo da memória.
* Usado quando o jogo acaba para libertar RAM.
*/
const removeGame = (id) => {
activeGames.delete(id);
console.log(`[Game State] Jogo removido: ${id}`);
activeGames.delete(id);
console.log(`[Game State] Game removed: ${id}`);
};
// Exportamos estas funções para serem usadas no ficheiro de eventos
module.exports = {
createGame,
getGame,
removeGame
};
createGame,
getGame,
removeGame,
};