L’effervescence Bitcoin : un simple engouement ou une révolution silencieuse ? On en parle dans les médias, entre amis, parfois même dans des dîners de famille… mais qu’en savez-vous vraiment ? Le Bitcoin, monnaie numérique apparue en 2009, continue de diviser : adulée par certains, jugée instable ou incomprise par d’autres. Et pourtant, d’année en année, malgré les crises, les fluctuations et les critiques, le Bitcoin s’impose comme un acteur majeur de la transformation moné
bottom of page
(function(){
if (window.__cnJeuxScoreHudV1) return;
window.__cnJeuxScoreHudV1 = true;
var state = { score: 'Score: 0', best: 'Best: ' + (localStorage.getItem('carrementnous_dodge_ball_best_score') || localStorage.getItem('bestScore') || '0') };
function isJeuxPage(){
return //jeux(?:$|[?#/])/.test(window.location.pathname + window.location.search + window.location.hash);
}
function gameIframe(){
return document.querySelector('iframe[title="GAME DODGE BALL"]');
}
function ensureHud(){
var hud = document.getElementById('cn-game-score-hud');
if (!hud) {
hud = document.createElement('div');
hud.id = 'cn-game-score-hud';
hud.innerHTML = '';
document.body.appendChild(hud);
var s = hud.style;
s.position = 'fixed';
s.zIndex = '999999';
s.display = 'none';
s.alignItems = 'center';
s.justifyContent = 'space-between';
s.gap = '8px';
s.boxSizing = 'border-box';
s.pointerEvents = 'none';
s.color = '#fff';
s.background = 'rgba(0,0,0,.78)';
s.border = '1px solid rgba(255,255,255,.55)';
s.borderRadius = '4px';
s.padding = '3px 6px';
s.fontFamily = 'monospace';
s.fontWeight = '800';
s.lineHeight = '1.1';
s.textShadow = '0 1px 2px #000';
}
var left = hud.querySelector('.cn-score-left');
var right = hud.querySelector('.cn-score-right');
if (left) left.textContent = state.score.replace('Score:', 'Score :');
if (right) right.textContent = state.best.replace('Best:', 'Best :');
return hud;
}
function positionHud(){
var hud = ensureHud();
if (!isJeuxPage()) {
hud.style.display = 'none';
return;
}
var iframe = gameIframe();
if (!iframe) {
hud.style.display = 'none';
return;
}
var canvasRect = null;
var frameWidth = 0;
try {
var doc = iframe.contentDocument;
var canvas = doc && doc.getElementById('game');
if (canvas) {
var cr = canvas.getBoundingClientRect();
canvasRect = { x: cr.x, y: cr.y, width: cr.width, height: cr.height };
frameWidth = iframe.contentWindow.innerWidth || 0;
}
} catch (e) {}
if (!canvasRect || !frameWidth) {
hud.style.display = 'none';
return;
}
var ir = iframe.getBoundingClientRect();
var scale = ir.width / frameWidth;
var leftPos = ir.left + canvasRect.x * scale;
var topPos = ir.top + canvasRect.y * scale + 3;
var width = canvasRect.width * scale;
hud.style.display = 'flex';
hud.style.left = Math.round(leftPos) + 'px';
hud.style.top = Math.round(topPos) + 'px';
hud.style.width = Math.round(width) + 'px';
hud.style.height = Math.max(18, Math.round(24 * Math.min(1, Math.max(.78, scale + .28)))) + 'px';
hud.style.fontSize = Math.max(10, Math.min(13, Math.round(width / 16))) + 'px';
}
function injectScoreBridge(){
if (!isJeuxPage()) return false;
var iframe = gameIframe();
if (!iframe) return false;
try {
var win = iframe.contentWindow;
if (!win || win.__cnScorePostPatchV1) return true;
if (!win.CanvasRenderingContext2D) return false;
win.__cnScorePostPatchV1 = true;
var proto = win.CanvasRenderingContext2D.prototype;
var originalFillText = proto.fillText;
proto.fillText = function(text, x, y, maxWidth){
try {
var txt = String(text || '');
if (/^Score:/i.test(txt)) win.parent.postMessage({ type: 'cnDodgeScoreHud', score: txt }, '*');
if (/^Best:/i.test(txt)) win.parent.postMessage({ type: 'cnDodgeScoreHud', best: txt }, '*');
} catch (e) {}
return originalFillText.apply(this, arguments);
};
return true;
} catch (e) {
return false;
}
}
window.addEventListener('message', function(e){
if (!e.data || e.data.type !== 'cnDodgeScoreHud') return;
if (e.data.score) state.score = e.data.score;
if (e.data.best) state.best = e.data.best;
positionHud();
});
function tick(){
injectScoreBridge();
positionHud();
}
window.addEventListener('resize', positionHud, { passive: true });
window.addEventListener('scroll', positionHud, { passive: true });
setInterval(tick, 500);
setTimeout(tick, 250);
setTimeout(tick, 1000);
setTimeout(tick, 2500);
})();