🔍 Données vérifiées le : 30 janvier 2026
4.1 / 5 (95 avis)

Tableau bonus hunt gratuit

J’ai mis ici mon tableau Bonus Hunt gratuit, tout simplement. Je l’utilise pour garder un suivi propre de mes sessions : achats de bonus, mises, résultats, gains/pertes et bilan final, sans prise de tête. Vous pouvez l’ouvrir, le remplir directement et l’adapter à votre façon de jouer en deux minutes.

Mon Bonus Hunt 🎰

✅ Saisie rapide : Tab pour naviguer, Entrée sur “Gains” ajoute la ligne. Multiplicateur = Gains / Mise.
Bonus Machine Fournisseur Mise Gains Gains cumulés Multiplicateur Actions
Marque : Bonus-sans-depot.casino
Paramètres
Gain brut
Gain net
Nombre de bonus
Bankroll finale
Moyenne multiplicateur
Mise moyenne
Meilleur gain
Pire gain
📈 Net cumulé = somme (gains - mises) dans l’ordre de ton hunt.

Modifier le bonus

Télécharger (Excel/CSV)

Pour télécharger, renseigne ton email + consentement.
`; blobDownload(html, "application/vnd.ms-excel;charset=utf-8;", fileName("bonus-hunt", "xls")); } function downloadJSON(){ const payload = { v:1, savedAt: new Date().toISOString(), deposit: state.deposit, rows: state.rows }; blobDownload(JSON.stringify(payload, null, 2), "application/json;charset=utf-8;", fileName("bonus-hunt-backup", "json")); } // -------------------- // Chart (net cumulé lisible) // -------------------- function drawChart(){ const c = $("#bhlChart"); const ctx = c.getContext("2d"); const W = c.width, H = c.height; const rows = state.rows.slice(); let sumWin=0, sumBet=0; const series = rows.map(r => { sumWin += num(r.win); sumBet += num(r.bet); return (sumWin - sumBet); }); ctx.clearRect(0,0,W,H); ctx.strokeStyle = "rgba(255,255,255,.06)"; ctx.lineWidth = 1; for (let i=0;i<=6;i++){ const y = Math.round((H-50) * (i/6)) + 20; ctx.beginPath(); ctx.moveTo(20,y); ctx.lineTo(W-20,y); ctx.stroke(); } if (!series.length){ ctx.fillStyle = "rgba(169,183,218,.92)"; ctx.font = "16px system-ui"; ctx.fillText("Ajoute des bonus pour voir le net cumulé", 24, 46); return; } const minV = Math.min(...series, 0); const maxV = Math.max(...series, 0); const pad = (maxV - minV) * 0.12 || 10; const lo = minV - pad; const hi = maxV + pad; const x = (i) => 20 + (W-40) * (series.length === 1 ? 0 : (i/(series.length-1))); const y = (v) => 20 + (H-60) * (1 - ((v - lo) / (hi - lo || 1))); const y0 = y(0); ctx.strokeStyle = "rgba(255,255,255,.14)"; ctx.beginPath(); ctx.moveTo(20,y0); ctx.lineTo(W-20,y0); ctx.stroke(); ctx.strokeStyle = "rgba(58,160,255,.95)"; ctx.lineWidth = 2; ctx.beginPath(); series.forEach((v,i) => { const xi = x(i), yi = y(v); if (i===0) ctx.moveTo(xi, yi); else ctx.lineTo(xi, yi); }); ctx.stroke(); // ✅ label lisible avec fond const last = series[series.length-1]; const label = "Net cumulé : " + money(last); ctx.font = "16px system-ui"; const textW = ctx.measureText(label).width; const padX = 10; ctx.fillStyle = "rgba(0,0,0,.40)"; ctx.fillRect(20, H - 34, textW + padX*2, 24); ctx.fillStyle = "rgba(232,238,252,.98)"; ctx.fillText(label, 20 + padX, H - 16); } // -------------------- // Actions // -------------------- function delRow(id){ if (!confirm("Supprimer ce bonus ?")) return; state.rows = state.rows.filter(x => x.id !== id); save(false); renderAll(); } function moveRow(id, delta){ const idx = state.rows.findIndex(r => r.id === id); if (idx < 0) return; const j = idx + delta; if (j < 0 || j >= state.rows.length) return; const arr = state.rows.slice(); const [it] = arr.splice(idx, 1); arr.splice(j, 0, it); state.rows = arr; save(false); renderAll(); } // -------------------- // Import // -------------------- function importJSON(){ const inp = document.createElement("input"); inp.type = "file"; inp.accept = "application/json"; inp.onchange = () => { const file = inp.files && inp.files[0]; if (!file) return; const reader = new FileReader(); reader.onload = () => { try{ const p = JSON.parse(reader.result); if (!p || !Array.isArray(p.rows)) throw new Error("invalid"); state.deposit = num(p.deposit); state.rows = p.rows.map(r => ({ id: r.id || uid(), slot: r.slot || "Machine", provider: r.provider || "", bet: num(r.bet), win: num(r.win) })); $("#dDeposit").value = state.deposit; save(true); renderAll(); ping("Import OK ✅"); }catch(e){ ping("Fichier invalide.", true); } }; reader.readAsText(file); }; inp.click(); } // -------------------- // Storage // -------------------- function save(showStamp){ const payload = { v:1, savedAt:new Date().toISOString(), deposit:state.deposit, rows:state.rows }; localStorage.setItem(KEY, JSON.stringify(payload)); if (showStamp){ savedAtEl.textContent = "Dernière sauvegarde : " + new Date().toLocaleString(); } } function loadOrSeed(){ try{ const raw = localStorage.getItem(KEY); if (raw){ const p = JSON.parse(raw); state.deposit = num(p.deposit); state.rows = Array.isArray(p.rows) ? p.rows : []; if (p.savedAt) savedAtEl.textContent = "Dernière sauvegarde : " + new Date(p.savedAt).toLocaleString(); else savedAtEl.textContent = "—"; return; } }catch(e){} state.deposit = 200; state.rows = []; savedAtEl.textContent = "Pas encore sauvegardé"; save(false); } })();

Mes casinos favoris pour faire du bonus hunt !

Spin Dynasty Casino
500€
+ 50 FS
0x
Wager
20€
Dépôt min.
✅ Nouveaux joueurs • 🇫🇷 France
Viggoslots Casino
1000€
+ 170 FS
0x
Wager
20€
Dépôt min.
✅ Nouveaux joueurs • 🇫🇷 France
Shiny Wilds Casino
1000€
+ 250 FS
30x
Wager
20€
Dépôt min.
✅ Nouveaux joueurs • 🇫🇷 France
🎁 Obtenir 1000€ + 250 FS
Inscription ~2 min — Bonus crédité après inscription