brouillon8
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| brouillon8 [2026/04/22 20:36] – nanaki | brouillon8 [2026/04/28 19:04] (Version actuelle) – nanaki | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | let max = 15; | + | Essai 3 |
| - | let points = document.getElementById(" | + | |
| - | let checkboxes = document.querySelectorAll(" | + | |
| - | let rows = document.querySelectorAll("# | + | |
| - | function updateUI(){ | + | < |
| - | let checked | + | < |
| - | let total = checked.length; | + | <meta charset="UTF-8"> |
| + | < | ||
| - | points.innerText = total + " / " + max; | + | < |
| + | body { font-family: | ||
| + | h1,h2 { color: | ||
| + | .box { border:1px solid gold; padding: | ||
| + | select, | ||
| + | button { padding: | ||
| + | </ | ||
| + | </ | ||
| - | if(total | + | <body> |
| - | | + | |
| - | let cb = row.querySelector(".skill"); | + | < |
| - | | + | |
| - | row.classList.add("disabled-row"); | + | <div class=" |
| - | } | + | Race |
| - | }); | + | <select id=" |
| - | } else { | + | </ |
| - | rows.forEach(row=>{ | + | |
| - | row.classList.remove("disabled-row"); | + | <div class=" |
| - | }); | + | Stats |
| - | } | + | <div id=" |
| + | </ | ||
| + | |||
| + | <div class=" | ||
| + | Équipement< | ||
| + | Tête <select id=" | ||
| + | Cou <select id=" | ||
| + | Dos <select id=" | ||
| + | Main droite <select id=" | ||
| + | Main gauche <select id=" | ||
| + | Corps <select id=" | ||
| + | Anneau <select id=" | ||
| + | Pieds <select id=" | ||
| + | </ | ||
| + | |||
| + | <div class=" | ||
| + | Compétences | ||
| + | <div id=" | ||
| + | </ | ||
| + | |||
| + | <button onclick=" | ||
| + | <button onclick=" | ||
| + | |||
| + | <pre id=" | ||
| + | |||
| + | < | ||
| + | |||
| + | // ===== DATA ===== | ||
| + | |||
| + | const races = { | ||
| + | Elfe: | ||
| + | Nain: | ||
| + | Géant: | ||
| + | Olympien: | ||
| + | HS: | ||
| + | }; | ||
| + | |||
| + | |||
| + | const costTable = { | ||
| + | cc: | ||
| + | pv:[4,2,1], mvt: | ||
| + | }; | ||
| + | |||
| + | const equipments = [ | ||
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| + | ]; | ||
| + | |||
| + | const skills = [" | ||
| + | |||
| + | // ===== DOM ===== | ||
| + | const raceSelect | ||
| + | const statsDiv = document.getElementById(" | ||
| + | const skillsDiv = document.getElementById("skills"); | ||
| + | |||
| + | const head = document.getElementById(" | ||
| + | const neck = document.getElementById(" | ||
| + | const cape = document.getElementById(" | ||
| + | const rightHand | ||
| + | const leftHand = document.getElementById(" | ||
| + | const body = document.getElementById("body"); | ||
| + | const ring = document.getElementById(" | ||
| + | const feet = document.getElementById(" | ||
| + | |||
| + | // ===== INIT ===== | ||
| + | |||
| + | // race | ||
| + | for(let r in races){ | ||
| + | raceSelect.innerHTML += `< | ||
| } | } | ||
| - | checkboxes.forEach(cb=>{ | + | // stats |
| - | cb.addEventListener("change", ()=>{ | + | for(let s in costTable){ |
| - | let total = document.querySelectorAll(".skill: | + | statsDiv.innerHTML += `${s} <input type="number" |
| + | } | ||
| - | if(total > max){ | + | // skills |
| - | cb.checked | + | skills.forEach(s=>{ |
| - | | + | skillsDiv.innerHTML += `< |
| - | | + | }); |
| - | updateUI(); | + | // slots reset |
| - | }); | + | function resetSlots(){ |
| + | [head, | ||
| + | sel.innerHTML = `<option value=""> | ||
| }); | }); | ||
| + | } | ||
| - | document.getElementById(" | + | // remplir équipements |
| - | | + | function fillEquip(){ |
| - | | + | let r = raceSelect.value; |
| + | |||
| + | equipments.forEach((e,i)=>{ | ||
| + | if(e.race!==" | ||
| + | |||
| + | if(e.slot===" | ||
| + | if(e.slot===" | ||
| + | if(e.slot===" | ||
| }); | }); | ||
| + | } | ||
| + | |||
| + | // update | ||
| + | raceSelect.addEventListener(" | ||
| + | resetSlots(); | ||
| + | fillEquip(); | ||
| + | }); | ||
| + | |||
| + | resetSlots(); | ||
| + | fillEquip(); | ||
| + | |||
| + | // 2 mains | ||
| + | rightHand.addEventListener(" | ||
| + | let v = rightHand.value; | ||
| + | if(v==="" | ||
| + | |||
| + | let item = equipments[v]; | ||
| + | if(item.slot===" | ||
| + | leftHand.value=""; | ||
| + | leftHand.disabled=true; | ||
| + | }else{ | ||
| + | leftHand.disabled=false; | ||
| + | } | ||
| + | }); | ||
| + | |||
| + | // ===== CALCUL ===== | ||
| + | function calculate(){ | ||
| + | |||
| + | let char = {...races[raceSelect.value]}; | ||
| + | let total = 0; | ||
| + | |||
| + | // stats | ||
| + | for(let s in costTable){ | ||
| + | let v = parseInt(document.getElementById(s).value)||0; | ||
| + | char[s]+=v; | ||
| + | } | ||
| + | |||
| + | // equip | ||
| + | [rightHand, | ||
| + | if(sel.value==="" | ||
| + | let e = equipments[sel.value]; | ||
| + | for(let stat in e.stats){ | ||
| + | char[stat]=(char[stat]||0)+e.stats[stat]; | ||
| + | } | ||
| + | }); | ||
| + | |||
| + | // affichage | ||
| + | result.innerText = JSON.stringify(char, | ||
| + | } | ||
| + | |||
| + | // ===== EXPORT ===== | ||
| + | function exportWiki(){ | ||
| + | |||
| + | let txt=" | ||
| + | txt+=" | ||
| + | |||
| + | document.querySelectorAll(" | ||
| + | txt+=" | ||
| + | }); | ||
| + | |||
| + | result.innerText=txt; | ||
| + | } | ||
| + | |||
| + | </ | ||
| - | // INIT | + | </body> |
| - | updateUI(); | + | </ |
brouillon8.1776882982.txt.gz · Dernière modification : 2026/04/22 20:36 de nanaki
