hackaton-2025/assets/front.js
2025-03-06 12:19:35 +01:00

324 lines
8.1 KiB
JavaScript

const socket = io();
let barreStress = document.getElementById('barreStress')
let stress = 0;
let maxInterval1;
let maxInterval2;
// ________________________________________________________________________________________
function test() {
setInterval(() => {
stress+=10;
console.log(stress);
testBarre();
}, 1000);
}
function teste(){
setInterval(() => {
stress=0;
}, 15000);
}
function animBarreMax() {
clearInterval(maxInterval1);
clearInterval(maxInterval2);
maxInterval1 = setInterval(() => {
barreStress.style.backgroundImage = 'url("barre/barreMax1.PNG")';
}, 250);
maxInterval2 = setInterval(() => {
barreStress.style.backgroundImage = 'url("barre/barreMax2.PNG")';
}, 500);
}
function stopAnimBarreMax() {
clearInterval(maxInterval1);
clearInterval(maxInterval2);
}
function testBarre() {
if (stress < 100) {
stopAnimBarreMax();
}
if (stress <= 10) {
barreStress.style.backgroundImage = 'url("barre/barre1.PNG")';
} else if (stress <= 20) {
barreStress.style.backgroundImage = 'url("barre/barre2.PNG")';
} else if (stress <= 30) {
barreStress.style.backgroundImage = 'url("barre/barre3.PNG")';
} else if (stress <= 40) {
barreStress.style.backgroundImage = 'url("barre/barre4.PNG")';
} else if (stress <= 50) {
barreStress.style.backgroundImage = 'url("barre/barre5.PNG")';
} else if (stress <= 60) {
barreStress.style.backgroundImage = 'url("barre/barre6.PNG")';
} else if (stress <= 70) {
barreStress.style.backgroundImage = 'url("barre/barre7.PNG")';
} else if (stress <= 80) {
barreStress.style.backgroundImage = 'url("barre/barre8.PNG")';
} else if (stress <= 90) {
barreStress.style.backgroundImage = 'url("barre/barre9.PNG")';
} else if (stress >= 100) {
animBarreMax();
}
}
// ________________________________________________________________________________________
function addNoise() {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
const imageData = ctx.createImageData(canvas.width, canvas.height);
const data = imageData.data;
for (let i = 0; i < data.length; i += 4) {
const value = Math.random() * 255;
data[i] = data[i + 1] = data[i + 2] = value;
data[i + 3] = 255; // alpha
}
ctx.putImageData(imageData, 0, 0);
document.body.style.backgroundImage = `url(${canvas.toDataURL()})`;
}
// ________________________________________________________________________________________
function lireTexte() {
// Récupérer le texte à lire depuis l'élément HTML avec l'ID 'texte'
const Texte = document.getElementById('texte');
const texteToSpeak = Texte ? Texte.innerText : "Texte par défaut";
// Appeler l'API backend pour lire le texte
fetch(`/speak?text=${encodeURIComponent(texteToSpeak)}`)
.then(reponse => {
if (!reponse.ok) {
throw new Error('Erreur réseau lors de l\'appel de l\'API');
}
return reponse.text();
})
.then(data => {
console.log(data); // Affiche la réponse du serveur
})
.catch(error => {
console.error('Erreur :', error);
});
}
// ________________________________________________________________________________________
let envoyerQuestion = document.getElementById("envoyerQuestion");
function doubleRandomWord(question) {
let words = question.split(' ');
if (words.length === 0) return question;
let randomIndex = Math.floor(Math.random() * words.length);
words.splice(randomIndex, 0, words[randomIndex]);
return words.join(' ');
}
function addInsulte(question) {
let listeInsulte = [
'PUTE',
'BITE',
'CON',
'CONNARD',
'SALOPE',
'MERDE',
'PUTAIN'
];
let Insulte = listeInsulte[Math.floor(Math.random() * listeInsulte.length)];
let words = question.split(' ');
let randomIndex = Math.floor(Math.random() * (words.length + 1));
words.splice(randomIndex, 0, Insulte);
return words.join(' ');
}
function submitQuestion (){
let question = document.getElementById('questionInput').value;
if (question.trim() !== '') {
// Modifier la question
// question = doubleRandomWord(question);
// question = addInsulte(question);
// Envoyer la question au serveur via socket.io ou une requête HTTP
socket.emit('question', question);
// Afficher la question dans le conteneur de réponses
const reponseContainer = document.getElementById('reponseContainer');
const questionElement = document.createElement('div');
questionElement.textContent = `Question: ${question}`;
reponseContainer.appendChild(questionElement);
// Vider le champ de saisie
document.getElementById('questionInput').value = '';
}
};
// ________________________________________________________________________________________
// // Créez une scène, une caméra et un rendu
// const scene = new THREE.Scene();
// const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
// const renderer = new THREE.WebGLRenderer();
// renderer.setSize(window.innerWidth, window.innerHeight);
// document.body.appendChild(renderer.domElement);
// // Ajoutez des lumières
// const light = new THREE.HemisphereLight(0xffffbb, 0x080820, 1);
// scene.add(light);
// // Chargez le modèle .obj
// const objLoader = new THREE.OBJLoader();
// objLoader.load(
// 'cybergirl.obj', // Remplacez par le chemin de votre fichier .obj
// (object) => {
// scene.add(object);
// object.position.set(0, 0, 0); // Ajustez la position si nécessaire
// },
// (xhr) => {
// console.log((xhr.loaded / xhr.total * 100) + '% loaded');
// },
// (error) => {
// console.error('Une erreur est survenue lors du chargement du modèle:', error);
// }
// );
// const mtlLoader = new THREE.MTLLoader();
// mtlLoader.load('cybergirl.mtl', (materials) => {
// materials.preload();
// const objLoader = new THREE.OBJLoader();
// objLoader.setMaterials(materials);
// objLoader.load('cybergirl.obj',(object) => {
// scene.add(object);
// object.position.set(0, 0, 0); // Ajustez la position si nécessaire
// },
// (xhr) => {
// console.log((xhr.loaded / xhr.total * 100) + '% loaded');
// },
// (error) => {
// console.error('Une erreur est survenue lors du chargement du modèle:', error);
// }
// );
// });
// // Positionnez la caméra
// camera.position.z = 5;
// // Fonction de rendu
// function animate() {
// requestAnimationFrame(animate);
// renderer.render(scene, camera);
// }
// animate();
// ________________________________________________________________________________________
let intervalEcoute;
let intervalEcoute1;
let intervalEcoute2;
let tete = document.getElementById('tete');
let tetegif =document.getElementById('teteGif')
let parle = -1;
function animAttente() {
tete.style.display='none';
tetegif.style.display='block';
}
function Ecoute() {
tete.style.display='block';
tetegif.style.display='none';
}
function animEcoute() {
tete.style.display='block';
tetegif.style.display='none';
clearInterval(intervalEcoute1);
clearInterval(intervalEcoute2);
intervalEcoute = setInterval(() => {
if (parle <= 0) {
intervalEcoute1 = setInterval(() => {
clearInterval(intervalEcoute1);
tete.style.backgroundImage='url("cybergirl_anim/png/^^1.png")';
console.log('1');
intervalEcoute2 = setInterval(() => {
clearInterval(intervalEcoute2);
tete.style.backgroundImage='url("cybergirl_anim/png/^^2.png")';
console.log('2');
}, 1000);
}, 1000);
} else {
console.log('stop');
clearInterval(intervalEcoute);
}
}, 2000);
}
function animParle() {
parle = 0;
}
function animInsulte() {
}
// ________________________________________________________________________________________
envoyerQuestion.addEventListener("click",submitQuestion);
document.addEventListener("keydown", function(event) {
if (event.key === "Enter") {
submitQuestion();
}
});
barreStress.addEventListener("click", lireTexte);
questionInput.addEventListener("click",animEcoute);
addNoise();
teste();
test();