From 534fc8ace19ac6d1b7ac5fed258e0af323f17ec2 Mon Sep 17 00:00:00 2001 From: Denis Monnerat Date: Mon, 16 Feb 2026 11:14:11 +0100 Subject: [PATCH] exo2 --- R4.01_R4.A.10/td_tp/tp4/README.md | 53 +++++++++++++++++ R4.01_R4.A.10/td_tp/tp4/img/renard1.png | Bin 0 -> 27487 bytes R4.01_R4.A.10/td_tp/tp4/src/ex2/app.js | 36 ++++++++++++ R4.01_R4.A.10/td_tp/tp4/src/ex2/css/style.css | 54 ++++++++++++++++++ R4.01_R4.A.10/td_tp/tp4/src/ex2/foxes.html | 35 ++++++++++++ R4.01_R4.A.10/td_tp/tp4/src/ex2/loader.js | 12 ++++ 6 files changed, 190 insertions(+) create mode 100644 R4.01_R4.A.10/td_tp/tp4/img/renard1.png create mode 100644 R4.01_R4.A.10/td_tp/tp4/src/ex2/app.js create mode 100644 R4.01_R4.A.10/td_tp/tp4/src/ex2/css/style.css create mode 100644 R4.01_R4.A.10/td_tp/tp4/src/ex2/foxes.html create mode 100644 R4.01_R4.A.10/td_tp/tp4/src/ex2/loader.js diff --git a/R4.01_R4.A.10/td_tp/tp4/README.md b/R4.01_R4.A.10/td_tp/tp4/README.md index 5175284..a5abef6 100644 --- a/R4.01_R4.A.10/td_tp/tp4/README.md +++ b/R4.01_R4.A.10/td_tp/tp4/README.md @@ -44,4 +44,57 @@ http. The Godfather1972 ``` +#### Ex2 +Le but, dans un premier temps, est d'écrire une interface, avec ajax, qui permette de joueur au jeu suivant : +- On a une grille dans laquelle sont cachés des renards (on en connait le nombre initial). + +- A chaque tour, on choisit de tirer sur un case. On a l'alternative suivante : + - on tue un renard, + - on récupére les nombres de renards sur la grille sur la ligne, colonne et diagonales de la case. + +
+ +
+ +Le jeu utilise un serveur http à l'url suivante + +``` +https://dwarves.iut-fbleau.fr/foxes/foxes.php +``` + +Voici les urls du jeu : + +``` +https://dwarves.iut-fbleau.fr/foxes/foxes.php?new&size=10&foxes=10 +``` + +initialise la partie , avec la taille de la grille et le nombre de renards +dont la position est aléatoire (le script utilise des sessions de cinq minutes). + +La réponse normale, en json : + +```json +{"status":"ok","foxes":10,"tries":0} +``` + + +``` +https://dwarves.iut-fbleau.fr/foxes/foxes.php?X=1&Y=3 +``` + +permet de tirer sur une case. Le serveur répond + +```json +{"status":"ok","foxes":2,"tries":1} +``` + +`foxes` vaut -1 si le coup est gagnant, sinon donne le nombre de renards de la colonne, ligne et diagonales de la case. + + +En cas de victoire, le status est `win`. En cas d'erreur, le status est `nok`. + + +**Remarque** + +Ajouter l'option `credentials` à vos requêtes pour utiliser la session en cours. diff --git a/R4.01_R4.A.10/td_tp/tp4/img/renard1.png b/R4.01_R4.A.10/td_tp/tp4/img/renard1.png new file mode 100644 index 0000000000000000000000000000000000000000..235b505c749c19520077ec7fe764b17b8c23b732 GIT binary patch literal 27487 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 { + let frag = document.createDocumentFragment(); + for (let i = 0; i< size; i++){ + let div = document.createElement("div"); + for(let j = 0; j < size; j++){ + let span = document.createElement("span"); + span.dataset.num = size*i + j; + div.appendChild(span); + } + frag.appendChild(div); + } + board.replaceChildren(frag); +}) + + + +form.addEventListener("submit", (async (ev) => { + ev.preventDefault(); + // TODO +})) + + +board.addEventListener("click", ( async (ev) => { + // TODO +})) diff --git a/R4.01_R4.A.10/td_tp/tp4/src/ex2/css/style.css b/R4.01_R4.A.10/td_tp/tp4/src/ex2/css/style.css new file mode 100644 index 0000000..3012e5a --- /dev/null +++ b/R4.01_R4.A.10/td_tp/tp4/src/ex2/css/style.css @@ -0,0 +1,54 @@ +article { + text-align : center; +} +.board > div { + display : flex; +} +article .board { + display : inline-block; +} +.board span { + display: inline-block; + vertical-align:baseline; + width: 50px; + height: 50px; + /*padding : 1em;*/ + margin : 0.1em; + cursor: pointer; + border: 1px solid #444; + /*background: radial-gradient(rgb(150,250,150), #00ee00);*/ +} +.board span:hover { + background: #3AB903; + background: radial-gradient(rgb(66, 255, 66), #065006); +} + +.board span.on { + background: #009900; +} + +div.is-loading { + position: fixed; + z-index: 999; + overflow: show; + margin: auto; + top: 0; + left: 0; + bottom: 0; + right: 0; +} +div.is-loading:after { + animation: spinAround 500ms infinite linear; + border: 2px solid hsl(0deg, 0%, 86%); + border-radius: 9999px; + border-right-color: transparent; + border-top-color: transparent; + content: ""; + display: block; + position: relative; + top: calc(50% - 5em); + left: calc(50% - 5em); + width: 10em; + height: 10em; + border-width: 0.25em; +} diff --git a/R4.01_R4.A.10/td_tp/tp4/src/ex2/foxes.html b/R4.01_R4.A.10/td_tp/tp4/src/ex2/foxes.html new file mode 100644 index 0000000..f61a9e3 --- /dev/null +++ b/R4.01_R4.A.10/td_tp/tp4/src/ex2/foxes.html @@ -0,0 +1,35 @@ + + + + + + + + + +
+
+ +
+

Foxes

+

Le but est de tuer tous les renards en minimisant le nombre de coups joués.

+
+

+
+
+
+
+
+
+ + + +
+
+
+ + + diff --git a/R4.01_R4.A.10/td_tp/tp4/src/ex2/loader.js b/R4.01_R4.A.10/td_tp/tp4/src/ex2/loader.js new file mode 100644 index 0000000..6ca5415 --- /dev/null +++ b/R4.01_R4.A.10/td_tp/tp4/src/ex2/loader.js @@ -0,0 +1,12 @@ +class loader { + constructor(node){ + this.node = node + } + set(loading){ + if (loading) + this.node.classList.add("is-loading") + else + this.node.classList.remove("is-loading") + } +} +export default loader