Vamos criar alguns algoritmos que simulam um gerenciamento de partidas. Nada complexo ou avançado, pelo contrário, justamente para reforçar o aprendizado em algoritmo e lógica de programação.
<script>
LISTA_PARTIDAS = []
LISTA_USUARIOS = []
MAX_NUM_USERS_PARTIDA = 8;
// 1) Função que gerencia entrada de usuarios e partidas também.
// Quando algum jogador conectar na partida,
// A função onConnect verifica se existe alguma partida existente com menos de 8 jogadores
// Se existir ela coloca la, se não ela cria uma nova partida e coloca o jogador na partida.
function onConnect(user) {
var joined = false;
if (LISTA_PARTIDAS){
for (var i = 0; i < LISTA_PARTIDAS.length; i++){
if(LISTA_PARTIDAS[i].length < 8 && !joined){
LISTA_PARTIDAS[i].append(user)
joined = true;
}
}
}
if (!joined){
LISTA_PARTIDAS.append([user])
}
}
// 2) Função que retorna o status do gerenciamento de partidas/usuarios.
function logs(){
console.log("Atualmente existem ", LISTA_PARTIDAS.length, " partidas e ", LISTA_USUARIOS.length, " jogadores ativos.")
console.log("-------------------")
for (var i = 0; i < LISTA_PARTIDAS.length; i++ ){
console.log("- " + i + ") Partida (" + LISTA_PARTIDAS[i].length + " jogadores):")
for (var x = 0; x < LISTA_PARTIDAS[i].length; x ++){
console.log("----> ", LISTA_PARTIDAS[i][x].name, " (nível " + LISTA_PARTIDAS[i][x].nivel + ")")
}
}
}
// Para testar vamos criar alguns objetos de jogadores.
// Aproximadamente 20 jogadores vão conectar e depois vamos verificar como estão as partidas.
// 2) Verificar o estado inicial do gerenciador de partidas
logs()
// 3) Criando jogadores.
for (var i = 0;i <= 20;i++){
LISTA_USUARIOS.append({
id: i,
name: 'Guilherme' + i,
nivel: 1
})
}
// 4) Conectando jogadores
for(var u = 0; u < LISTA_USUARIOS.length; u++){
onConnect(LISTA_USUARIOS[u])
}
// 5) Verificando o estado do gerenciador de partidas, apos adicionar usuários.
logs()
</script>
Segue o exemplo no CodePen:
[Hidden Content]