Obisidian vault auto-backup: 13-01-2026 15:13:31 on . 2 files edited

This commit is contained in:
Félix MARQUET
2026-01-13 15:13:31 +01:00
parent 52f0f79460
commit 7a17de79bc
2 changed files with 11 additions and 60 deletions

View File

@@ -30,33 +30,8 @@
"icon": "lucide-file",
"title": "Cloud Computing Cours 1"
}
},
{
"id": "9478fca2041362c8",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "ISEN/Cloud Computing/CIPA4/Cloud Computing Cours 2.md",
"mode": "source",
"source": false,
"backlinks": true,
"backlinkOpts": {
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
"showSearch": false,
"searchQuery": "",
"backlinkCollapsed": false,
"unlinkedCollapsed": true
}
},
"icon": "lucide-file",
"title": "Cloud Computing Cours 2"
}
}
],
"currentTab": 1
]
}
],
"direction": "vertical"
@@ -229,15 +204,16 @@
"obsidian-git:Open Git source control": false
}
},
"active": "9478fca2041362c8",
"active": "e11a6a080eb83632",
"lastOpenFiles": [
"ISEN/Web/CIPA 4/TP/TP3/js/tic-tac-toe.js~",
"ISEN/Cloud Computing/CIPA4/Cloud Computing Cours 2.md",
"ISEN/Web/CIPA 4/TP/TP3/js/tic-tac-toe.js",
"ISEN/Web/CIPA 4/TP/TP3/js",
"ISEN/Web/CIPA 4/TP/TP3/index.html",
"ISEN/Web/CIPA 4/TP/TP3/css/style.css",
"ISEN/Web/CIPA 4/TP/TP3/css",
"ISEN/Cloud Computing/CIPA4/TP 1 Ansible.md",
"ISEN/Cloud Computing/CIPA4/Cloud Computing Cours 2.md",
"ISEN/Cloud Computing/CIPA4/Cloud Computing Cours 1.md",
"ISEN/Web/CIPA 4/Idée projet.md",
"ISEN/Web/CIPA 4/TP/TP2/authentification.html~",
@@ -245,7 +221,6 @@
"ISEN/Web/CIPA 4/TP/TP2/style.css",
"ISEN/Cloud Computing/CIPA4/TP Ansible/playbook-role-https.yml",
"ISEN/Cloud Computing/CIPA4/TP Ansible/roles/nginx_proxy_https/handlers/main.yml",
"ISEN/Cloud Computing/CIPA4/TP Ansible/roles/nginx_proxy_https/handlers",
"ISEN/Cloud Computing/CIPA4/TP 4 Ansible.md",
"ISEN/Cloud Computing/CIPA4/TP 3 Ansible.md",
"ISEN/Cloud Computing/CIPA4/TP 2 Ansible.md",

View File

@@ -1,78 +1,63 @@
'use strict';
// 2.2. Définition de constantes
let MESSAGES = {
'message1': 'Bienvenue sur notre jeu.',
'message2': ' vous avez gagné !'
};
// 3.1. Définition de constantes
const PLAYER1 = "✔";
const PLAYER2 = "✗";
// Variable pour stocker la date de début de partie
let startTime;
// 2.3. Première fonction
function main() {
// Affiche message1
console.log(MESSAGES.message1);
alert(MESSAGES.message1);
// 3.2. Gestion des évènements - Cases
for (let i = 0; i < 9; i++) {
let cell = document.getElementById('cell' + i);
cell.addEventListener('click', fill);
}
// 4.2. Gestion de lévènement - Bouton Vérifier
let playButton = document.getElementById('play');
playButton.addEventListener('click', verify);
// 6. Gestion du timer
startTime = new Date();
setInterval(updateTimer, 1000);
}
// 3.3. Fonction de traitement
function fill(event) {
console.log(event.target);
let cell = event.target;
// Si la case est vide ou contient PLAYER2
if (cell.innerHTML === "" || cell.innerHTML === PLAYER2) {
cell.innerHTML = PLAYER1;
cell.style.color = "green"; // Vert pour coches
cell.style.color = "green";
} else {
cell.innerHTML = PLAYER2;
cell.style.color = "red"; // Rouge pour croix
cell.style.color = "red";
}
}
// 4.1. Vérification du plateau de jeu
function verifyPlayer(playerMark) {
// Fonction helper pour récupérer le contenu d'une case
function getCell(i) {
return document.getElementById('cell' + i).innerHTML;
}
// Lignes
if (getCell(0) === playerMark && getCell(1) === playerMark && getCell(2) === playerMark) return true;
if (getCell(3) === playerMark && getCell(4) === playerMark && getCell(5) === playerMark) return true;
if (getCell(6) === playerMark && getCell(7) === playerMark && getCell(8) === playerMark) return true;
// Colonnes
if (getCell(0) === playerMark && getCell(3) === playerMark && getCell(6) === playerMark) return true;
if (getCell(1) === playerMark && getCell(4) === playerMark && getCell(7) === playerMark) return true;
if (getCell(2) === playerMark && getCell(5) === playerMark && getCell(8) === playerMark) return true;
// Diagonales
if (getCell(0) === playerMark && getCell(4) === playerMark && getCell(8) === playerMark) return true;
if (getCell(2) === playerMark && getCell(4) === playerMark && getCell(6) === playerMark) return true;
return false;
}
// 4.2. Fonction appelée par le bouton Vérifier
function verify() {
let player1Name = document.querySelector("input[name='player1']").value;
let player2Name = document.querySelector("input[name='player2']").value;
@@ -88,26 +73,19 @@ function verify() {
}
}
// Fonction utilitaire pour réinitialiser le jeu (bonus demandé: "réinitialiser chaque case")
function resetGame() {
for (let i = 0; i < 9; i++) {
let cell = document.getElementById('cell' + i);
cell.innerHTML = "";
cell.style.color = "";
}
// On peut aussi redémarrer le timer? Le sujet ne le demande pas explicitement à ce stade mais c'est logique.
// "Dans le cas où un joueur est gagnant, il serait intéressant de réinitialiser chaque case du plateau de jeu"
// On laisse le timer tourner ou on reset ? "pour la session en cours", le timer semble être pour la partie.
startTime = new Date();
}
// 5. Gestion des scores
function addScore(name) {
let table = document.getElementById('scores');
let row = table.insertRow(); // Insère une ligne à la fin du tableau
// Note: thead is usually index 0 rows if present in table.rows but insertRow adds to tbody by default if exists or to table.
// Let's assume standard behavior. 'scores' table has a thead. We want to append to body.
// If we use table.insertRow(), it appends to the last tbody.
let row = table.insertRow();
let cellName = row.insertCell(0);
let cellDate = row.insertCell(1);
@@ -116,16 +94,15 @@ function addScore(name) {
cellDate.innerHTML = new Date().toLocaleString();
}
// 6. Gestion du timer
function updateTimer() {
let now = new Date();
// Temps écoulé en secondes
let diff = Math.floor((now - startTime) / 1000);
let minutes = Math.floor(diff / 60);
let seconds = diff % 60;
// Formatage avec 0 si besoin
if (minutes < 10) minutes = "0" + minutes;
if (seconds < 10) seconds = "0" + seconds;
@@ -133,5 +110,4 @@ function updateTimer() {
timerSpan.innerHTML = minutes + ":" + seconds;
}
// Appel de main
main();