Skip to content

Commit

Permalink
Merge branch 'main' of https://github.com/SBD1/2024.1-TLOU
Browse files Browse the repository at this point in the history
  • Loading branch information
Tutzs committed Sep 5, 2024
2 parents 18cc85c + 60c1c4c commit c39367e
Show file tree
Hide file tree
Showing 2 changed files with 158 additions and 123 deletions.
9 changes: 8 additions & 1 deletion Modulo2/DML.sql
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,14 @@ INSERT INTO InstItem(idInstItem, IdItem, Sala, IdInventario) VALUES
(10, 3, 1, NULL),
(11, 23, 1, NULL),
(12, 2, NULL, 1),
(13, 6, NULL, 1);
(13, 6, NULL, 1),

(14, 19, NULL, 1),
(15, 20, NULL, 1),
(16, 21, NULL, 1),
(17, 22, NULL, 1),
(18, 23, NULL, 1),
(19, 24, NULL, 1);

INSERT INTO Itens (IdMissao, IdItem) VALUES
(1, 2),
Expand Down
272 changes: 150 additions & 122 deletions src/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,168 +62,196 @@ async function primeiraTela() {
await segundaTela();

async function segundaTela() {
if (r == 1) {
try {
const infoJogador = await api.client.query('SELECT nomePersonagem, estado, vidaAtual, xp FROM PC');
if (infoJogador.rows.length > 0) {
const jogador = infoJogador.rows[0];
console.clear();
console.log(`Seu nome é: ${jogador.nomepersonagem}, Estado: ${jogador.estado}\nVida Atual: ${jogador.vidaatual}, Experiência: ${jogador.xp}`);
}

// Obtém a região atual do jogador e as salas disponíveis
const regiaoAtual = await api.client.query(`
SELECT r.nomeRegiao, r.descricaoRegiao
FROM Regiao r
JOIN Sala s ON s.idRegiao = r.idRegiao
JOIN PC p ON p.sala = s.idSala
`);
`);

if (regiaoAtual.rows.length > 0) {
const regiao = regiaoAtual.rows[0];
console.log(`\nVocê está na região: ${regiao.nomeregiao}`);
console.log(`Descrição: ${regiao.descricaoregiao}\n`);

const salasDaReg = await api.client.query(`
SELECT idSala FROM Sala WHERE idRegiao = 1;
`);
const salasDaReg = await api.client.query('SELECT idSala FROM Sala WHERE idRegiao = 1');
if (salasDaReg.rows.length > 0) {
console.log("Salas disponíveis nesta região:");
salasDaReg.rows.forEach((sala, index) => {
console.log(`${index + 1}. Sala ${sala.idsala}`);
});

console.log("\nC. Craft - Ver receitas disponíveis");
console.log("\nC. Craft - Ver receitas disponíveis\nI. Inventário");

// VAI DA PROBLEMA SE TIVER MAIS Q 2 SALAS RS
// while (!['V', 'v'].includes(escolhaReceita) && (isNaN(escolhaReceita) || escolhaReceita < 1 || escolhaReceita > receitas.rows.length));
let escolhaSalaOuCraft;
escolhaSalaOuCraft = askAndReturn("\nPressione 'C' para Craft: ");
let escolhaOp;
do {
escolhaOp = askAndReturn("\nEscolha a opção desejada: ");

if (escolhaSalaOuCraft.toLowerCase() === 'c') {
await mostrarReceitas();
async function mostrarReceitas() {
console.log("\nReceitas de Crafting disponíveis:\n");
if (escolhaOp.toLowerCase() === 'i') {
console.log("Seu inventário atual é:");
await api.mostrarInventario();
} else if (escolhaOp.toLowerCase() === 'c') {
await mostrarReceitas();
} else if (!isNaN(escolhaOp) && escolhaOp >= 1 && escolhaOp <= salasDaReg.rows.length) {
const salaEscolhida = salasDaReg.rows[parseInt(escolhaOp) - 1];
console.log(`Você escolheu a Sala: ${salaEscolhida.idsala}`);

await moverParaSala(salaEscolhida.idsala);

break; // Sai do loop quando uma sala válida é escolhida //necessário??
} else {
console.log("Escolha inválida, tente novamente.");
}
} while (true); // Continua pedindo a escolha até que o usuário decida
} else {
console.log("Nenhuma sala disponível nesta região.");
}
}
} catch (error) {
console.error("Erro ao executar o início do jogo:", error.message || error);
} finally {
console.log("Fechando a conexão com o banco de dados...");
console.log("Banco desconectado com sucesso!");
await api.updateSala(1);
process.exit();
}
}

const receitas = await api.client.query('SELECT * FROM Receita');
// Função para mostrar receitas
async function mostrarReceitas() {
console.log("\nReceitas de Crafting disponíveis:\n");

if (receitas.rows.length > 0) {
receitas.rows.forEach((receita, index) => {
console.log(`${index + 1}. Receita: ${receita.nomereceita}, Descrição: ${receita.descricaoreceita}, Ingredientes: ${receita.juncao}`);
});
const receitas = await api.client.query('SELECT * FROM Receita');

let escolhaReceita;
do {
escolhaReceita = askAndReturn("\nEscolha o número da receita para realizá-la ou pressione 'V' para voltar: ");
if (receitas.rows.length > 0) {
receitas.rows.forEach((receita, index) => {
console.log(`${index + 1}. Receita: ${receita.nomereceita}, Descrição: ${receita.descricaoreceita}, Ingredientes: ${receita.juncao}`);
});

if (escolhaReceita.toLowerCase() === 'v') {
console.log("\n\n");
return segundaTela(); // Sai da função mostrarReceitas e volta ao menu principal
}
let escolhaReceita;
do {
escolhaReceita = askAndReturn("\nEscolha o número da receita para realizá-la ou pressione 'V' para voltar: ");

if (!isNaN(escolhaReceita) && escolhaReceita >= 1 && escolhaReceita <= receitas.rows.length) {
const receitaEscolhida = receitas.rows[parseInt(escolhaReceita) - 1];
console.log(`Você escolheu a receita: ${receitaEscolhida.nomereceita}`);
if (escolhaReceita.toLowerCase() === 'v') {
console.log("\n\n");
return segundaTela(); // Sai da função mostrarReceitas e volta ao menu principal
}

await realizarReceita(receitaEscolhida);
if (!isNaN(escolhaReceita) && escolhaReceita >= 1 && escolhaReceita <= receitas.rows.length) {
const receitaEscolhida = receitas.rows[parseInt(escolhaReceita) - 1];
console.log(`Você escolheu a receita: ${receitaEscolhida.nomereceita}`);

// Após realizar a receita, continua no loop para permitir escolha de outra receita
} else {
console.log("Escolha inválida, tente novamente.");
}
} while (true); // Continua pedindo a escolha até que o usuário decida voltar
} else {
console.log("Nenhuma receita de crafting disponível.");
}
}
await realizarReceita(receitaEscolhida);

async function realizarReceita(receita) {
try {
console.log(`Realizando a receita: ${receita.nomereceita}`);

// Aqui vai a lógica para verificar ingredientes, atualizar inventário, etc.
// Exemplo:
/*const possuiIngredientes = await api.verificarIngredientes(receita.iditem); Função que verifica se o jogador tem os ingredientes
if (possuiIngredientes) {
await api.craftarItem(receita); //Função que realiza o crafting
console.log(`Receita ${receita.nomereceita} realizada com sucesso!`);
} else {
console.log("Você não possui todos os ingredientes necessários para esta receita.");
}*/
} catch (error) {
console.error("Erro ao realizar a receita:", error.message || error);
}
}
}


// Atualiza a sala do jogador para a escolhida
var sala = await api.getSalaAtual();
//await sleep(5);
//console.clear();

if (sala == 1) {
await api.mostrarNPCsDaSala(sala);
await api.evento(sala);
const DialogoInicio = 1;
const DialogoFim = 6;
await api.mostrarDialogo(DialogoInicio, DialogoFim);
await api.mostrarItensDaSala(sala);

let choose = askAndReturn("Você encontrou alguns itens na sala. Deseja pegá-los\nS/N\n");
if (choose.toLowerCase() == 's') {
await api.adicionarItemAoInventario(1, 1, 18);
await api.adicionarItemAoInventario(2, 1, 18);
await api.adicionarItemAoInventario(3, 1, 18);
await api.adicionarItemAoInventario(4, 1, 18);
await api.adicionarItemAoInventario(5, 1, 18);
await api.adicionarItemAoInventario(6, 1, 12);
await api.adicionarItemAoInventario(7, 1, 12);
await api.adicionarItemAoInventario(8, 1, 17);
await api.adicionarItemAoInventario(9, 1, 17);
await api.updateCapacidadeInventario(1);

console.log("\nItens adicionados ao inventário com sucesso!\n");
}
let escolha = askAndReturn("Deseja ver seu inventário?\nS/N\n");
if (escolha.toLowerCase() == 's') {
console.log("Seu inventário atual é:");
await api.mostrarInventario();
}
console.log("\n\nVocê irá agora para sala 2, aguarde...");
await api.updateSala(sala + 1);
await sleep(5);
console.clear();
}
sala = await api.getSalaAtual();
if (sala == 2) {
await api.mostrarNPCsDaSala(sala);
const DialogoInicio = 7;
const DialogoFim = 8;
await api.mostrarDialogo(DialogoInicio, DialogoFim);
await api.objetivoExploracao(sala);

const mis = askAndReturn("\nVocê aceita essa missão?\nS/N\n");
if (mis.toLowerCase() == 's') {
console.log("Missão aceita!");

await api.mostrarInimigoNPC(sala);
console.log("Proteja Ellie e Tess!");
await api.mostrarArmas();
} else {
console.log("Escolha inválida, tente novamente.");
}
} while (true); // Continua pedindo a escolha até que o usuário decida voltar
} else {
console.log("Nenhuma receita de crafting disponível.");
}
}

// Função para realizar a receita
async function realizarReceita(receita) {
try {
console.log(`Realizando a receita: ${receita.nomereceita}`);

// Implementar lógica de crafting aqui
// Exemplo:
/*
const possuiIngredientes = await api.verificarIngredientes(receita.iditem);
if (possuiIngredientes) {
await api.craftarItem(receita);
console.log(`Receita ${receita.nomereceita} realizada com sucesso!`);
} else {
console.log("Você não possui todos os ingredientes necessários para esta receita.");
}
*/
} catch (error) {
console.error("Erro ao realizar a receita:", error.message || error);
}
}

}
async function moverParaSala(salaEscolhida) {
try {
// Atualiza a sala do jogador no banco de dados
await api.updateSala(salaEscolhida);

// Obtem a nova sala atual do jogador
let salaAtual = await api.getSalaAtual();

if (salaAtual == 1) {
console.log("Você está na Sala 1.");
await api.mostrarNPCsDaSala(salaAtual);
await api.evento(salaAtual);
const DialogoInicio = 1;
const DialogoFim = 6;
await api.mostrarDialogo(DialogoInicio, DialogoFim);
await api.mostrarItensDaSala(salaAtual);

let choose = askAndReturn("Você encontrou alguns itens na sala. Deseja pegá-los\nS/N\n");
if (choose.toLowerCase() == 's') {
await api.adicionarItemAoInventario(1, 1, 18);
await api.adicionarItemAoInventario(2, 1, 18);
await api.adicionarItemAoInventario(3, 1, 18);
await api.adicionarItemAoInventario(4, 1, 18);
await api.adicionarItemAoInventario(5, 1, 18);
await api.adicionarItemAoInventario(6, 1, 12);
await api.adicionarItemAoInventario(7, 1, 12);
await api.adicionarItemAoInventario(8, 1, 17);
await api.adicionarItemAoInventario(9, 1, 17);
await api.updateCapacidadeInventario(1);

console.log("\nItens adicionados ao inventário com sucesso!\n");
}

//update no xp(ja ta pronto)
//matar inimigo
await api.updateSala(sala + 1);
await sleep(5);
console.clear();
}
sala = await api.getSalaAtual();
console.log(sala);
let escolha = askAndReturn("Deseja ver seu inventário?\nS/N\n");
if (escolha.toLowerCase() == 's') {
console.log("Seu inventário atual é:");
await api.mostrarInventario();
}
console.log("\n\nVocê irá agora para sala 2, aguarde...");
await api.updateSala(salaAtual + 1);
await sleep(5);
console.clear();

} else if (salaAtual == 2) {
console.log("Você está na Sala 2.");
await api.mostrarNPCsDaSala(salaAtual);
const DialogoInicio = 7;
const DialogoFim = 8;
await api.mostrarDialogo(DialogoInicio, DialogoFim);
await api.objetivoExploracao(salaAtual);

const mis = askAndReturn("\nVocê aceita essa missão?\nS/N\n");
if (mis.toLowerCase() == 's') {
console.log("Missão aceita!");
await api.mostrarInimigoNPC(salaAtual);
console.log("Proteja Ellie e Tess!");
await api.mostrarArmas();
}

await api.updateSala(salaAtual + 1);
await sleep(5);
console.clear();

} else {
console.log("Você está em uma sala desconhecida.");
}
} catch (error) {
console.error("Erro ao mover para a sala:", error.message || error);
}
}

} catch (error) {
console.error("Erro ao executar o início do jogo:", error.message || error);
}
Expand Down

0 comments on commit c39367e

Please sign in to comment.