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 0000000..235b505 Binary files /dev/null and b/R4.01_R4.A.10/td_tp/tp4/img/renard1.png differ diff --git a/R4.01_R4.A.10/td_tp/tp4/src/ex2/app.js b/R4.01_R4.A.10/td_tp/tp4/src/ex2/app.js new file mode 100644 index 0000000..710865d --- /dev/null +++ b/R4.01_R4.A.10/td_tp/tp4/src/ex2/app.js @@ -0,0 +1,36 @@ +import loader from './loader.js'; +const board = document.querySelector("div.board"); +const form = document.querySelector("form"); +const message = document.querySelector("#message"); +const ld = new loader(document.getElementById("loader")); + +let url = 'https://dwarves.iut-fbleau.fr/foxes/foxes.php'; + +let foxes; +let size; + +let newBoard = ( (size ) => { + 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