<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>webdev &#8211; Collyre.net</title>
	<atom:link href="https://www.collyre.net/tag/webdev/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.collyre.net/</link>
	<description></description>
	<lastBuildDate>Mon, 21 Sep 2026 01:43:20 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.1</generator>
	<item>
		<title>Le hasard peut mieux faire</title>
		<link>https://www.collyre.net/catane-webapp/</link>
		
		<dc:creator><![CDATA[Olivier Poncin]]></dc:creator>
		<pubDate>Thu, 10 Sep 2026 02:07:34 +0000</pubDate>
				<category><![CDATA[Loisirs]]></category>
		<category><![CDATA[jeu de société]]></category>
		<category><![CDATA[webdev]]></category>
		<guid isPermaLink="false">https://collyre.local/wp-root/?p=14</guid>

					<description><![CDATA[Si vous jouez au jeu de société « Catane », laissez-moi vous convaincre d’utiliser une petite application web en compagnon de jeu.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Pris de passion pour le jeu Catane et plus particulièrement son extension «&nbsp;Villes et Chevaliers&nbsp;», ses multiples mécaniques et ses coups fourrés, j’ai enchaîné les parties avec des amis. Mais à force d’affiner nos tactiques, un problème a pris de l’ampleur&nbsp;: le hasard des dés domine trop souvent sur l’aspect stratégique du jeu…</p>



<span id="more-14"></span>



<h2 class="wp-block-heading">Hasard contre stratégie</h2>



<p class="wp-block-paragraph">Une partie fait généralement entre 50 et 70 tours. On gagne des ressources quand le numéro d’une de nos cases tombe. Avec deux dés, les numéros ne tombent pas tous aussi souvent (le 7 tombe trois fois plus souvent que le numéro 3 par exemple, car seule la combinaison de dés 1&#x20e3; 2&#x20e3; fait 3 contre 1&#x20e3; 6&#x20e3;, 2&#x20e3; 5&#x20e3; et 3&#x20e3; 4&#x20e3; pour le numéro 7)<sup data-fn="fb1489e9-9413-45dc-8ea6-40a34d0ec28f" class="fn"><a href="#fb1489e9-9413-45dc-8ea6-40a34d0ec28f" id="fb1489e9-9413-45dc-8ea6-40a34d0ec28f-link">1</a></sup>. Les joueurs et joueuses se placent donc en fonction des ressources souhaitées, la position des terrains sur la carte et la probabilité de voir leur numéro tomber.</p>



<p class="wp-block-paragraph">Mais avec seulement une soixantaine de lancers de dés, les tirages sont parfois très loin des probabilités. Avec de simples dés et si les joueurs et joueuses sont aguerri(e)s, c’est simplement la personne qui s’était placée sur les numéros qui sont le plus tombés qui gagne, quelle que soit sa stratégie. Catane est-elle donc à classer dans la catégorie Loto ou Jeu de l’oie ? Pas si vite !</p>



<h2 class="wp-block-heading">Lisser le hasard : les jeux sont faits, rien ne va plus !</h2>



<p class="wp-block-paragraph">Un moyen de tempérer ce hasard consiste à représenter chaque combinaison de dés sur une carte, puis mélanger les cartes et les tirer une par une. Ainsi, au bout de 36 “lancers de dés”, la répartition des résultats correspond exactement à la distribution théorique à long terme.</p>



<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1556 789" class="collyre-dices-diagram" role="img" aria-label="Comparaison de répartition : 36 combinaisons vs pile de 36 cartes">
  <style>
    .collyre-dices-diagram {
      display: block;
      width: 100%;
      max-width: 100%;
      height: auto;
      margin: 2rem auto;
      font-family: var(--font-body, "Public Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);
      color-scheme: light dark;
      user-select: none;
    }

    /* Textes &amp; descriptions */
    .collyre-dices-diagram .c-title {
      fill: var(--color-heading, #23180d);
      font-weight: 600;
    }
    .collyre-dices-diagram .c-desc {
      fill: var(--color-heading, #23180d);
      font-weight: 500;
    }
    .collyre-dices-diagram .c-axis-label {
      fill: var(--color-text-muted, #78664f);
      font-family: var(--font-mono, "JetBrains Mono", monospace, sans-serif);
    }
    .collyre-dices-diagram .c-bracket {
      fill: var(--color-text-muted, #78664f);
    }

    /* Lignes et repères */
    .collyre-dices-diagram .c-grid-line {
      stroke: var(--color-border-alt, #e9dfd6);
    }
    .collyre-dices-diagram .c-axis-line {
      stroke: var(--color-border-strong, #d6c8bc);
    }

    /* Histogrammes (Barres d'accent Collyre) */
    .collyre-dices-diagram .c-bar {
      fill: var(--color-accent, #f57521);
      transition: fill 0.2s ease;
    }
    .collyre-dices-diagram .c-bar-value {
      fill: var(--color-on-accent, #ffffff);
      font-weight: 700;
      font-family: var(--font-body, "Public Sans", sans-serif);
    }

    /* Dés, cartes et contours */
    .collyre-dices-diagram .c-stroke {
      stroke: var(--color-text, #322618);
    }
    .collyre-dices-diagram .c-pip {
      fill: var(--color-text, #322618);
    }
    .collyre-dices-diagram .c-arrow {
      stroke: var(--color-text, #322618);
      fill: var(--color-surface, #ffffff);
      fill-opacity: 0.35;
    }

    /* Surfaces des cartes et faces de dés (Thème Clair) */
    .collyre-dices-diagram .c-card-bg {
      fill: var(--color-surface, #ffffff);
      stroke: var(--color-text, #322618);
    }
    .collyre-dices-diagram .c-die-front {
      fill: var(--color-surface, #ffffff);
    }
    .collyre-dices-diagram .c-die-top {
      fill: var(--color-surface-alt, #f9f5ef);
    }
    .collyre-dices-diagram .c-die-side {
      fill: var(--color-border-strong, #d6c8bc);
    }
    .collyre-dices-diagram .c-die-mini-side {
      fill: var(--color-border-alt, #e9dfd6);
    }

    /* Adaptation dynamique au THÈME SOMBRE Collyre [data-theme="dark"] */
    :root[data-theme="dark"] .collyre-dices-diagram .c-card-bg,
    [data-theme="dark"] .collyre-dices-diagram .c-card-bg {
      fill: var(--palette-ink-900, #322618);
    }
    :root[data-theme="dark"] .collyre-dices-diagram .c-die-front,
    [data-theme="dark"] .collyre-dices-diagram .c-die-front {
      fill: var(--palette-ink-900, #322618);
    }
    :root[data-theme="dark"] .collyre-dices-diagram .c-die-top,
    [data-theme="dark"] .collyre-dices-diagram .c-die-top {
      fill: var(--palette-ink-800, #382c21);
    }
    :root[data-theme="dark"] .collyre-dices-diagram .c-die-side,
    [data-theme="dark"] .collyre-dices-diagram .c-die-side {
      fill: var(--palette-ink-700, #564334);
    }
    :root[data-theme="dark"] .collyre-dices-diagram .c-die-mini-side,
    [data-theme="dark"] .collyre-dices-diagram .c-die-mini-side {
      fill: var(--palette-ink-700, #564334);
    }
    :root[data-theme="dark"] .collyre-dices-diagram .c-arrow,
    [data-theme="dark"] .collyre-dices-diagram .c-arrow {
      fill: var(--palette-ink-800, #382c21);
      fill-opacity: 0.6;
    }

    /* Fallback système prefers-color-scheme si aucun bouton n'a été cliqué */
    @media (prefers-color-scheme: dark) {
      :root:not([data-theme="light"]) .collyre-dices-diagram .c-card-bg {
        fill: var(--palette-ink-900, #322618);
      }
      :root:not([data-theme="light"]) .collyre-dices-diagram .c-die-front {
        fill: var(--palette-ink-900, #322618);
      }
      :root:not([data-theme="light"]) .collyre-dices-diagram .c-die-top {
        fill: var(--palette-ink-800, #382c21);
      }
      :root:not([data-theme="light"]) .collyre-dices-diagram .c-die-side {
        fill: var(--palette-ink-700, #564334);
      }
      :root:not([data-theme="light"]) .collyre-dices-diagram .c-die-mini-side {
        fill: var(--palette-ink-700, #564334);
      }
      :root:not([data-theme="light"]) .collyre-dices-diagram .c-arrow {
        fill: var(--palette-ink-800, #382c21);
        fill-opacity: 0.6;
      }
    }
  </style><path class="c-bracket" fill-rule="evenodd" d="m1283 112-4 1-3 3-1 5-1 9v31q0 11-3 15-4 4-10 4h-6v-2h6q6 0 9-5l1-12v-31q0-9 2-14 3-4 6-5-3-1-6-5a39 39 0 0 1-2-14V61l-1-12q-3-5-9-5h-6v-2h6q6 0 10 4 3 5 3 15v31l1 9 1 5 3 3 4 1Zm0 244-4 1-3 3-1 5-1 9v31q0 11-3 15-4 4-10 4h-6v-2h6q6 0 9-5l1-12v-31q0-9 2-14 3-4 6-5-3-1-6-5a39 39 0 0 1-2-14v-31l-1-12q-3-5-9-5h-6v-2h6q6 0 10 4 3 5 3 15v31l1 9 1 5 3 3 4 1Zm0 230-4 1-3 3-1 5-1 9v31q0 11-3 15-4 4-10 4h-6v-2h6q6 0 9-5l1-12v-31q0-9 2-14 3-4 6-5-3-1-6-5a39 39 0 0 1-2-14v-31l-1-12q-3-5-9-5h-6v-2h6q6 0 10 4 3 5 3 15v31l1 9 1 5 3 3 4 1Z"></path><path class="c-grid-line" stroke-dasharray="10 10" stroke-linecap="round" stroke-width="2.5" d="M315 11v640M640 11v640M950 11v640"></path><path class="c-die-front c-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="3.5" d="M40 476h60v60H40Z"></path><path class="c-die-top c-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="3.5" d="m40 476 35-30h60l-35 30Z"></path><path class="c-die-side c-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="3.5" d="m100 476 35-30v60l-35 30Z"></path><path class="c-pip" d="M60 521a4.5 4.5 0 1 1-9 0 4.5 4.5 0 0 1 9 0m15-15a4.5 4.5 0 1 1-9 0 4.5 4.5 0 0 1 9 0m15-15a4.5 4.5 0 1 1-9 0 4.5 4.5 0 0 1 9 0"></path><path class="c-pip" d="M91 461q0 3-4 3-3 0-4-3 1-3 4-3 4 0 4 3"></path><path class="c-die-front c-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="3.5" d="M164 486h60v60h-60Z"></path><path class="c-die-top c-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="3.5" d="m164 486 35-30h60l-35 30Z"></path><path class="c-die-side c-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="3.5" d="m224 486 35-30v60l-35 30Z"></path><path class="c-pip" d="M199 516a5 5 0 1 1-10 0 5 5 0 0 1 10 0"></path><path class="c-pip" d="M244 503q0 5-2 5t-2-5 2-5 2 5m-7 17q0 5-2 5t-2-5 2-5 2 5m14-34q0 5-2 5t-2-5 2-5 2 5m-138 20q0 5-2 5t-2-5 2-5 2 5m14-34q0 5-2 5t-2-5 2-5 2 5"></path><path class="c-arrow" fill-rule="evenodd" stroke-width="3" d="m250 410 12-31-16-18s64-32 106-12c-6-7-18-27-18-27l56 41-47 29s9-18 10-25c-47-17-103 43-103 43Z"></path><text class="c-title" xml:space="preserve" x="63" y="730" font-size="25">36 combinaisons</text><path class="c-card-bg" fill-rule="evenodd" stroke-width="3" d="M437 423c5 6 17 8 25 6l105-31q14-6 6-16l-34-38c-6-7-18-10-28-7l-107 36q-13 5-3 15Z"></path><path class="c-die-side c-stroke" stroke-width="2" d="m452 387 10-9 13 3-10 8Z"></path><path class="c-die-front c-stroke" stroke-width="2" d="m452 387 13 2 2 10-13-3Z"></path><path class="c-die-mini-side c-stroke" stroke-width="2" d="m465 389 10-8 2 9-10 9Z"></path><path class="c-pip" d="M465 383a2 2 0 1 1-3 1Z"></path><path class="c-die-side c-stroke" stroke-width="2" d="m492 376 10-9 13 3-10 8Z"></path><path class="c-die-front c-stroke" stroke-width="2" d="m492 376 13 2 2 10-13-3Z"></path><path class="c-die-mini-side c-stroke" stroke-width="2" d="m505 378 10-8 2 9-10 9Z"></path><path class="c-pip" d="M501 372a1.1 1.1 0 1 1-2 1 1.1 1.1 0 0 1 2-1m6 1a1 1 0 1 1-2 0 1 1 0 0 1 2 0"></path><path class="c-pip" d="M208 463.5q0 2.5-4 2.5-3 0-4-2.5 1-2.5 4-2.5 4 0 4 2.5m28 1.5q0 3-3.5 3-2.6 0-3.5-3 1-3 3.5-3 3.5 0 3.5 3m-43 13q0 3-4.5 3-3.3 0-4.5-3 1.2-3 4.5-3 4.5 0 4.5 3m29 0q0 3-4 3-3 0-4-3 1-3 4-3 4 0 4 3m-9-6.5q0 2.5-3.5 2.5-2.6 0-3.5-2.5 1-2.5 3.5-2.5 3.5 0 3.5 2.5"></path><g class="c-card-bg" fill-rule="evenodd" stroke-width="3"><path d="M462 641c-8 2-20 0-25-6l-36-35q-6-5-4-10l1-5v-6q-3-8 6-11l107-36c10-3 22 0 28 7l34 38q5 5 2 9v12q3 8-8 12Z"></path> <path d="M437 607c5 6 17 8 25 6l105-31q14-6 6-16l-34-38c-6-7-18-10-28-7l-107 36q-13 5-3 15Z"></path> <path d="M437 599c5 6 17 8 25 6l105-31q14-6 6-16l-34-38c-6-7-18-10-28-7l-107 36q-13 5-3 15Z"></path> <path d="M437 583c5 6 17 8 25 6l105-31q14-6 6-16l-34-38c-6-7-18-10-28-7l-107 36q-13 5-3 15Z"></path> <path d="M437 553c5 6 17 8 25 6l105-31q14-6 6-16l-34-38c-6-7-18-10-28-7l-107 36q-13 5-3 15Z"></path></g><g class="c-stroke" stroke-width="2"><path class="c-die-side" d="m452 517 10-9 13 3-10 8Z"></path><path class="c-die-front" d="m452 517 13 2 2 10-13-3Z"></path><path class="c-die-mini-side" d="m465 519 10-8 2 9-10 9Z"></path></g><g class="c-stroke" stroke-width="2"><path class="c-die-side" d="m492 506 10-9 13 3-10 8Z"></path><path class="c-die-front" d="m492 506 13 2 2 10-13-3Z"></path><path class="c-die-mini-side" d="m505 508 10-8 2 9-10 9Z"></path></g><text class="c-title" xml:space="preserve" x="379" y="730" font-size="25">Pile de 36 cartes</text><path class="c-axis-line" stroke-linecap="round" stroke-width="2" d="M673 151h250"></path><path class="c-bar" d="M725 127h14l2 2v20l-2 2h-14l-2-2v-20Z"></path><text class="c-bar-value" xml:space="preserve" x="726" y="145" font-size="13">1</text><path class="c-bar" d="M747 127h14l2 2v20l-2 2h-14l-2-2v-20Z"></path><text class="c-bar-value" xml:space="preserve" x="748" y="145" font-size="13">1</text><path class="c-bar" d="M769 127h14l2 2v20l-2 2h-14l-2-2v-20Z"></path><text class="c-bar-value" xml:space="preserve" x="770" y="145" font-size="13">1</text><path class="c-bar" d="M791 55h14l2 2v92l-2 2h-14l-2-2V57Z"></path><text class="c-bar-value" xml:space="preserve" x="792" y="74" font-size="13">4</text><path class="c-bar" d="M813 127h14l2 2v20l-2 2h-14l-2-2v-20Z"></path><text class="c-bar-value" xml:space="preserve" x="814" y="145" font-size="13">1</text><path class="c-bar" d="M879 103h14l2 2v44l-2 2h-14l-2-2v-44Z"></path><text class="c-bar-value" xml:space="preserve" x="880" y="122" font-size="13">2</text><text class="c-axis-label" xml:space="preserve" x="681" y="173" font-size="13">2</text><text class="c-axis-label" xml:space="preserve" x="703" y="173" font-size="13">3</text><text class="c-axis-label" xml:space="preserve" x="725" y="173" font-size="13">4</text><text class="c-axis-label" xml:space="preserve" x="747" y="173" font-size="13">5</text><text class="c-axis-label" xml:space="preserve" x="769" y="173" font-size="13">6</text><text class="c-axis-label" xml:space="preserve" x="791" y="173" font-size="13">7</text><text class="c-axis-label" xml:space="preserve" x="813" y="173" font-size="13">8</text><text class="c-axis-label" xml:space="preserve" x="835" y="173" font-size="13">9</text><text class="c-axis-label" xml:space="preserve" x="854" y="173" font-size="13">10</text><text class="c-axis-label" xml:space="preserve" x="876" y="173" font-size="13">11</text><text class="c-axis-label" xml:space="preserve" x="898" y="173" font-size="13">12</text><path class="c-axis-line" stroke-linecap="round" stroke-width="2" d="M980 151h250"></path><path class="c-bar" d="M1010 139h14l2 2v8l-2 2h-14l-2-2v-8Zm22-11h14l2 2v19l-2 2h-14l-2-2v-19Z"></path><text class="c-bar-value" xml:space="preserve" x="1033" y="146" font-size="13">2</text><path class="c-bar" d="M1054 105h14l2 2v42l-2 2h-14l-2-2v-42Z"></path><text class="c-bar-value" xml:space="preserve" x="1055" y="124" font-size="13">4</text><path class="c-bar" d="M1076 25h14l2 2v122l-2 2h-14l-2-2V27Z"></path><text class="c-bar-value" xml:space="preserve" x="1075" y="46" font-size="13">11</text><path class="c-bar" d="M1098 105h14l2 2v42l-2 2h-14l-2-2v-42Z"></path><text class="c-bar-value" xml:space="preserve" x="1099" y="124" font-size="13">4</text><path class="c-bar" d="M1120 116h14l2 2v31l-2 2h-14l-2-2v-31Z"></path><text class="c-bar-value" xml:space="preserve" x="1121" y="135" font-size="13">3</text><path class="c-bar" d="M1142 105h14l2 2v42l-2 2h-14l-2-2v-42Z"></path><text class="c-bar-value" xml:space="preserve" x="1143" y="124" font-size="13">4</text><path class="c-bar" d="M1164 128h14l2 2v19l-2 2h-14l-2-2v-19Z"></path><text class="c-bar-value" xml:space="preserve" x="1165" y="146" font-size="13">2</text><path class="c-bar" d="M1186 105h14l2 2v42l-2 2h-14l-2-2v-42Z"></path><text class="c-bar-value" xml:space="preserve" x="1187" y="124" font-size="13">4</text><path class="c-bar" d="M1208 139h14l2 2v8l-2 2h-14l-2-2v-8Z"></path><text class="c-axis-label" xml:space="preserve" x="988" y="173" font-size="13">2</text><text class="c-axis-label" xml:space="preserve" x="1010" y="173" font-size="13">3</text><text class="c-axis-label" xml:space="preserve" x="1032" y="173" font-size="13">4</text><text class="c-axis-label" xml:space="preserve" x="1054" y="173" font-size="13">5</text><text class="c-axis-label" xml:space="preserve" x="1076" y="173" font-size="13">6</text><text class="c-axis-label" xml:space="preserve" x="1098" y="173" font-size="13">7</text><text class="c-axis-label" xml:space="preserve" x="1120" y="173" font-size="13">8</text><text class="c-axis-label" xml:space="preserve" x="1142" y="173" font-size="13">9</text><text class="c-axis-label" xml:space="preserve" x="1161" y="173" font-size="13">10</text><text class="c-axis-label" xml:space="preserve" x="1183" y="173" font-size="13">11</text><text class="c-axis-label" xml:space="preserve" x="1205" y="173" font-size="13">12</text><g class="c-desc" font-size="25"><text xml:space="preserve" x="1303" y="90">Hasard pur,</text> <text xml:space="preserve" x="1303" y="122">partie souvent</text> <text xml:space="preserve" x="1303" y="154">déséquilibrée</text></g><path class="c-axis-line" stroke-linecap="round" stroke-width="2" d="M673 396h250"></path><path class="c-bar" d="M725 340h14l2 2v52l-2 2h-14l-2-2v-52Z"></path><text class="c-bar-value" xml:space="preserve" x="726" y="360" font-size="13">2</text><path class="c-bar" d="M747 368h14l2 2v24l-2 2h-14l-2-2v-24Z"></path><text class="c-bar-value" xml:space="preserve" x="748" y="388" font-size="13">1</text><path class="c-bar" d="M769 340h14l2 2v52l-2 2h-14l-2-2v-52Z"></path><text class="c-bar-value" xml:space="preserve" x="770" y="360" font-size="13">2</text><path class="c-bar" d="M813 368h14l2 2v24l-2 2h-14l-2-2v-24Z"></path><text class="c-bar-value" xml:space="preserve" x="814" y="388" font-size="13">1</text><path class="c-bar" d="M835 368h14l2 2v24l-2 2h-14l-2-2v-24Z"></path><text class="c-bar-value" xml:space="preserve" x="836" y="388" font-size="13">1</text><path class="c-bar" d="M857 340h14l2 2v52l-2 2h-14l-2-2v-52Z"></path><text class="c-bar-value" xml:space="preserve" x="858" y="360" font-size="13">2</text><path class="c-bar" d="M901 368h14l2 2v24l-2 2h-14l-2-2v-24Z"></path><text class="c-bar-value" xml:space="preserve" x="902" y="388" font-size="13">1</text><text class="c-axis-label" xml:space="preserve" x="681" y="418" font-size="13">2</text><text class="c-axis-label" xml:space="preserve" x="703" y="418" font-size="13">3</text><text class="c-axis-label" xml:space="preserve" x="725" y="418" font-size="13">4</text><text class="c-axis-label" xml:space="preserve" x="747" y="418" font-size="13">5</text><text class="c-axis-label" xml:space="preserve" x="769" y="418" font-size="13">6</text><text class="c-axis-label" xml:space="preserve" x="791" y="418" font-size="13">7</text><text class="c-axis-label" xml:space="preserve" x="813" y="418" font-size="13">8</text><text class="c-axis-label" xml:space="preserve" x="835" y="418" font-size="13">9</text><text class="c-axis-label" xml:space="preserve" x="854" y="418" font-size="13">10</text><text class="c-axis-label" xml:space="preserve" x="876" y="418" font-size="13">11</text><text class="c-axis-label" xml:space="preserve" x="898" y="418" font-size="13">12</text><path class="c-axis-line" stroke-linecap="round" stroke-width="2" d="M980 396h250"></path><path class="c-bar" d="M988 381h14l2 2v11l-2 2h-14l-2-2v-11Zm44-13h14l2 2v24l-2 2h-14l-2-2v-24Z"></path><text class="c-bar-value" xml:space="preserve" x="1033" y="387" font-size="13">2</text><path class="c-bar" d="M1054 368h14l2 2v24l-2 2h-14l-2-2v-24Z"></path><text class="c-bar-value" xml:space="preserve" x="1055" y="387" font-size="13">2</text><path class="c-bar" d="M1076 328h14l2 2v64l-2 2h-14l-2-2v-64Z"></path><text class="c-bar-value" xml:space="preserve" x="1077" y="349" font-size="13">5</text><path class="c-bar" d="M1098 314h14l2 2v78l-2 2h-14l-2-2v-78Z"></path><text class="c-bar-value" xml:space="preserve" x="1099" y="335" font-size="13">6</text><path class="c-bar" d="M1120 342h14l2 2v50l-2 2h-14l-2-2v-50Z"></path><text class="c-bar-value" xml:space="preserve" x="1121" y="363" font-size="13">4</text><path class="c-bar" d="M1142 314h14l2 2v78l-2 2h-14l-2-2v-78Z"></path><text class="c-bar-value" xml:space="preserve" x="1143" y="335" font-size="13">6</text><path class="c-bar" d="M1164 354h14l2 2v38l-2 2h-14l-2-2v-38Z"></path><text class="c-bar-value" xml:space="preserve" x="1165" y="375" font-size="13">3</text><path class="c-bar" d="M1186 354h14l2 2v38l-2 2h-14l-2-2v-38Z"></path><text class="c-bar-value" xml:space="preserve" x="1187" y="375" font-size="13">3</text><path class="c-bar" d="M1208 381h14l2 2v11l-2 2h-14l-2-2v-11Z"></path><text class="c-axis-label" xml:space="preserve" x="988" y="418" font-size="13">2</text><text class="c-axis-label" xml:space="preserve" x="1010" y="418" font-size="13">3</text><text class="c-axis-label" xml:space="preserve" x="1032" y="418" font-size="13">4</text><text class="c-axis-label" xml:space="preserve" x="1054" y="418" font-size="13">5</text><text class="c-axis-label" xml:space="preserve" x="1076" y="418" font-size="13">6</text><text class="c-axis-label" xml:space="preserve" x="1098" y="418" font-size="13">7</text><text class="c-axis-label" xml:space="preserve" x="1120" y="418" font-size="13">8</text><text class="c-axis-label" xml:space="preserve" x="1142" y="418" font-size="13">9</text><text class="c-axis-label" xml:space="preserve" x="1161" y="418" font-size="13">10</text><text class="c-axis-label" xml:space="preserve" x="1183" y="418" font-size="13">11</text><text class="c-axis-label" xml:space="preserve" x="1205" y="418" font-size="13">12</text><g class="c-desc" font-size="25"><text xml:space="preserve" x="1303" y="330">Stratégie mixte,</text> <text xml:space="preserve" x="1303" y="362">suffisament</text> <text xml:space="preserve" x="1303" y="394">imprévisible</text></g><path class="c-axis-line" stroke-linecap="round" stroke-width="2" d="M673 646h250"></path><path class="c-bar" d="M681 621h14l2 2v21l-2 2h-14l-2-2v-21Z"></path><text class="c-bar-value" xml:space="preserve" x="682" y="639" font-size="13">1</text><path class="c-bar" d="M725 621h14l2 2v21l-2 2h-14l-2-2v-21Z"></path><text class="c-bar-value" xml:space="preserve" x="726" y="639" font-size="13">1</text><path class="c-bar" d="M747 571h14l2 2v71l-2 2h-14l-2-2v-71Z"></path><text class="c-bar-value" xml:space="preserve" x="748" y="592" font-size="13">3</text><path class="c-bar" d="M791 621h14l2 2v21l-2 2h-14l-2-2v-21Z"></path><text class="c-bar-value" xml:space="preserve" x="792" y="639" font-size="13">1</text><path class="c-bar" d="M813 596h14l2 2v46l-2 2h-14l-2-2v-46Z"></path><text class="c-bar-value" xml:space="preserve" x="814" y="617" font-size="13">2</text><path class="c-bar" d="M835 596h14l2 2v46l-2 2h-14l-2-2v-46Z"></path><text class="c-bar-value" xml:space="preserve" x="836" y="617" font-size="13">2</text><text class="c-axis-label" xml:space="preserve" x="681" y="668" font-size="13">2</text><text class="c-axis-label" xml:space="preserve" x="703" y="668" font-size="13">3</text><text class="c-axis-label" xml:space="preserve" x="725" y="668" font-size="13">4</text><text class="c-axis-label" xml:space="preserve" x="747" y="668" font-size="13">5</text><text class="c-axis-label" xml:space="preserve" x="769" y="668" font-size="13">6</text><text class="c-axis-label" xml:space="preserve" x="791" y="668" font-size="13">7</text><text class="c-axis-label" xml:space="preserve" x="813" y="668" font-size="13">8</text><text class="c-axis-label" xml:space="preserve" x="835" y="668" font-size="13">9</text><text class="c-axis-label" xml:space="preserve" x="854" y="668" font-size="13">10</text><text class="c-axis-label" xml:space="preserve" x="876" y="668" font-size="13">11</text><text class="c-axis-label" xml:space="preserve" x="898" y="668" font-size="13">12</text><path class="c-axis-line" stroke-linecap="round" stroke-width="2" d="M980 646h250"></path><path class="c-bar" d="M988 631h14l2 2v11l-2 2h-14l-2-2v-11Zm22-15h14l2 2v26l-2 2h-14l-2-2v-26Z"></path><text class="c-bar-value" xml:space="preserve" x="1011" y="636" font-size="13">2</text><path class="c-bar" d="M1032 601h14l2 2v41l-2 2h-14l-2-2v-41Z"></path><text class="c-bar-value" xml:space="preserve" x="1033" y="623" font-size="13">3</text><path class="c-bar" d="M1054 586h14l2 2v56l-2 2h-14l-2-2v-56Z"></path><text class="c-bar-value" xml:space="preserve" x="1055" y="608" font-size="13">4</text><path class="c-bar" d="M1076 571h14l2 2v71l-2 2h-14l-2-2v-71Z"></path><text class="c-bar-value" xml:space="preserve" x="1077" y="593" font-size="13">5</text><path class="c-bar" d="M1098 556h14l2 2v86l-2 2h-14l-2-2v-86Z"></path><text class="c-bar-value" xml:space="preserve" x="1099" y="578" font-size="13">6</text><path class="c-bar" d="M1120 571h14l2 2v71l-2 2h-14l-2-2v-71Z"></path><text class="c-bar-value" xml:space="preserve" x="1121" y="593" font-size="13">5</text><path class="c-bar" d="M1142 586h14l2 2v56l-2 2h-14l-2-2v-56Z"></path><text class="c-bar-value" xml:space="preserve" x="1143" y="608" font-size="13">4</text><path class="c-bar" d="M1164 601h14l2 2v41l-2 2h-14l-2-2v-41Z"></path><text class="c-bar-value" xml:space="preserve" x="1165" y="623" font-size="13">3</text><path class="c-bar" d="M1186 616h14l2 2v26l-2 2h-14l-2-2v-26Z"></path><text class="c-bar-value" xml:space="preserve" x="1187" y="636" font-size="13">2</text><path class="c-bar" d="M1208 631h14l2 2v11l-2 2h-14l-2-2v-11Z"></path><text class="c-axis-label" xml:space="preserve" x="988" y="668" font-size="13">2</text><text class="c-axis-label" xml:space="preserve" x="1010" y="668" font-size="13">3</text><text class="c-axis-label" xml:space="preserve" x="1032" y="668" font-size="13">4</text><text class="c-axis-label" xml:space="preserve" x="1054" y="668" font-size="13">5</text><text class="c-axis-label" xml:space="preserve" x="1076" y="668" font-size="13">6</text><text class="c-axis-label" xml:space="preserve" x="1098" y="668" font-size="13">7</text><text class="c-axis-label" xml:space="preserve" x="1120" y="668" font-size="13">8</text><text class="c-axis-label" xml:space="preserve" x="1142" y="668" font-size="13">9</text><text class="c-axis-label" xml:space="preserve" x="1161" y="668" font-size="13">10</text><text class="c-axis-label" xml:space="preserve" x="1183" y="668" font-size="13">11</text><text class="c-axis-label" xml:space="preserve" x="1205" y="668" font-size="13">12</text><g class="c-desc" font-size="25"><text xml:space="preserve" x="1303" y="580">Pile de cartes pure,</text> <text xml:space="preserve" x="1303" y="612">trop prévisible</text></g><g class="c-title" font-size="25"><text xml:space="preserve" x="724" y="730">Répartition à</text> <text xml:space="preserve" x="740" y="760">10 tirages</text></g><g class="c-title" font-size="25"><text xml:space="preserve" x="1031" y="730">Répartition à</text> <text xml:space="preserve" x="1047" y="760">36 tirages</text></g></svg>



<p class="wp-block-paragraph">En jouant cette variante, on se rend vite compte qu’on devient capable d’anticiper les numéros qui vont tomber… ce qui brise le jeu d’une nouvelle façon. Mieux vaut alors basculer sur une stratégie mixte&nbsp;: après avoir mélangé les 36 cartes, on en enlève une partie. Et éventuellement, on mélange plusieurs decks de 36 cartes. En faisant varier ces paramètres (nombre de cartes enlevées, nombre de decks assemblés), on arrive à ajuster la dose de hasard et d’imprévisibilité que l’on souhaite&nbsp;! Je vous épargne les centaines de simulations, veuillez croire en mon autorité (et à la flemme de les retrouver, les rendre visuelles et présentables).</p>



<h2 class="wp-block-heading">Une webapp compagnon pour gérer les dés et les tours de jeu</h2>



<p class="wp-block-paragraph">Ces principes sont facilement mis en œuvre dans une petite application dédiée. Voici la solution que j’utilise : <a href="https://www.collyre.net/linked-from-blog/catan-dices/" target="_blank" rel="noopener">Ouvrir Catan Dices</a>. Au lieu de lancer les dés, on appuie sur le bouton du même nom sur un smartphone posé sur la table et visible de tous.</p>



<figure class="wp-block-image size-large is-style-default"><img fetchpriority="high" decoding="async" width="1024" height="975" src="https://www.collyre.net/wp-content/uploads/2026/06/Catan-Dices-app-originale-70-1024x975.png" alt="Captures d'écran de la web app Dés Catane" class="wp-image-93" srcset="https://www.collyre.net/wp-content/uploads/2026/06/Catan-Dices-app-originale-70-1024x975.png 1024w, https://www.collyre.net/wp-content/uploads/2026/06/Catan-Dices-app-originale-70-300x286.png 300w, https://www.collyre.net/wp-content/uploads/2026/06/Catan-Dices-app-originale-70-768x731.png 768w, https://www.collyre.net/wp-content/uploads/2026/06/Catan-Dices-app-originale-70-1536x1462.png 1536w, https://www.collyre.net/wp-content/uploads/2026/06/Catan-Dices-app-originale-70.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Aperçu de l’app avec l’écran de configuration du hasard et l’écran pendant la partie avec le résultat des dés, le tour du joueur, les règles spécifiques au jeu et des petites statistiques de temps et de dés.</figcaption></figure>



<p class="wp-block-paragraph">Développée à l’époque en quelques sessions de travail, l’application permet de choisir les paramètres du niveau de hasard souhaité.</p>



<h2 class="wp-block-heading">Alors, est-ce que ça marche ?</h2>



<p class="wp-block-paragraph">Après plusieurs années et des dizaines de parties, nous n’avons aucune envie de revenir aux dés classiques. L’application n’a pas totalement supprimé le hasard (ce serait probablement une autre façon de gâcher le jeu) mais elle évite les cas les plus frustrants. Les parties où le 5 ne sort jamais, où le 9 tombe quinze fois et où chacun finit par regarder ses colonies produire, ou non, avec une forme de résignation.</p>



<p class="wp-block-paragraph">Avec comme réglages “un deck et trois cartes supprimées”, ou “deux decks et 4 à 6 cartes supprimées”, les résultats restent suffisamment imprévisibles pour empêcher les calculs trop confortables<sup data-fn="98dee34f-ec57-4787-a526-cd9874e3def2" class="fn"><a href="#98dee34f-ec57-4787-a526-cd9874e3def2" id="98dee34f-ec57-4787-a526-cd9874e3def2-link">2</a></sup>. On peut toujours avoir de la chance, prendre un risque ou attendre désespérément une ressource qui ne vient pas. Simplement, les écarts finissent moins souvent par décider seuls de la partie.</p>



<p class="wp-block-paragraph">Ce changement est difficile à mesurer précisément, mais facile à ressentir autour de la table : les parties sont plus serrées, les choix semblent compter davantage et les défaites sont un peu plus difficiles à attribuer entièrement aux dés.</p>



<p class="wp-block-paragraph">Si l’expérience vous tente, vous pouvez essayer <a href="https://www.collyre.net/linked-from-blog/catan-dices/" target="_blank" rel="noopener">Catan Dices</a> lors de votre prochaine partie. L’application est visuellement rudimentaire, pensée uniquement pour smartphone, mais elle remplit consciencieusement sa mission depuis plusieurs années.</p>



<h2 class="wp-block-heading">P.-S. À l’heure des LLM</h2>



<p class="wp-block-paragraph">Quand j’ai conçu ma petite solution, j’étais assez intéressé au problème et motivé à tester mes idées que j&rsquo;y ai consacré le temps nécessaire… c’est tellement plus facile de créer ce genre de petit outil aujourd&rsquo;hui avec Antigravity (Google), Codex (OpenAI) ou Claude Code (Anthropic).</p>



<p class="wp-block-paragraph">Pour tester Gemini 3.7<sup data-fn="a441c3f2-0ced-47e3-abb1-63621d556ae4" class="fn"><a href="#a441c3f2-0ced-47e3-abb1-63621d556ae4" id="a441c3f2-0ced-47e3-abb1-63621d556ae4-link">3</a></sup>, je lui ai demandé de reconstruire mon application à partir de zéro.</p>



<figure class="wp-block-image size-large is-style-default"><img decoding="async" width="1024" height="650" src="https://www.collyre.net/wp-content/uploads/2026/06/Catan-Dices-app-gemini-70-1024x650.png" alt="Captures d'écran de la variante créée par Gemini" class="wp-image-97" srcset="https://www.collyre.net/wp-content/uploads/2026/06/Catan-Dices-app-gemini-70-1024x650.png 1024w, https://www.collyre.net/wp-content/uploads/2026/06/Catan-Dices-app-gemini-70-300x190.png 300w, https://www.collyre.net/wp-content/uploads/2026/06/Catan-Dices-app-gemini-70-768x488.png 768w, https://www.collyre.net/wp-content/uploads/2026/06/Catan-Dices-app-gemini-70-1536x975.png 1536w, https://www.collyre.net/wp-content/uploads/2026/06/Catan-Dices-app-gemini-70.png 2016w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Variante “Gemini” via l’app Antigravity, avec ses petits ajouts, les dés 3D animés, le suivi de la piste des barbares.</figcaption></figure>



<p class="wp-block-paragraph">Moins de trente minutes plus tard, après deux trois allers-retours, <a href="https://www.collyre.net/s/catan-gemini/" target="_blank" rel="noopener">cette nouvelle variante</a> proposait déjà des dés en trois dimensions, la piste des barbares et quelques sons. Son goût esthétique reste discutable (que vous préfèrerez peut être à ma version très brute), mais l’expérience donne un aperçu assez saisissant de ce qu’il devient possible de fabriquer pour répondre à un besoin minuscule et très personnel.</p>



<p class="wp-block-paragraph">Pour certains, l’IA gâche le plaisir du codage, j’ai la sensation que ça n’enlève rien au plaisir de concevoir un outil personnalisé, d’affiner les détails de la solution désirée.</p>



<p class="wp-block-paragraph">Ça me donne envie de trouver des idées de petits besoins trop spécifiques pour trouver une app commerciale dédiée, mais de belles occasions de bidouiller avec un LLM pour se construire une solution sur mesure. Ou alors de me remettre à mon outil de mémorisation espacée dédiée aux concepts et stratégies poker&nbsp;!</p>


<ol class="wp-block-footnotes"><li id="fb1489e9-9413-45dc-8ea6-40a34d0ec28f">On compte en réalité 1&#x20e3; 2&#x20e3; et 2&#x20e3; 1&#x20e3; dans les combinaisons du numéro 3, seuls les doubles n’ont strictement qu’une combinaison. On obtient un total de 36 combinaisons avec les deux dés à six faces <a href="#fb1489e9-9413-45dc-8ea6-40a34d0ec28f-link" aria-label="Aller à la note de bas de page 1"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/21a9.png" alt="↩" class="wp-smiley" style="height: 1em; max-height: 1em;" />︎</a></li><li id="98dee34f-ec57-4787-a526-cd9874e3def2">En réalité, lorsqu’un numéro tombe particulièrement beaucoup dès le début, on sait qu&rsquo;il tombera moins durant les 30 tours suivants… ajustez les réglages à votre goût  <a href="#98dee34f-ec57-4787-a526-cd9874e3def2-link" aria-label="Aller à la note de bas de page 2"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/21a9.png" alt="↩" class="wp-smiley" style="height: 1em; max-height: 1em;" />︎</a></li><li id="a441c3f2-0ced-47e3-abb1-63621d556ae4">Je voulais demander à la même chose à Codex pour comparer les modèles, mais je réfléchis encore à de meilleurs tests comparatifs <a href="#a441c3f2-0ced-47e3-abb1-63621d556ae4-link" aria-label="Aller à la note de bas de page 3"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/21a9.png" alt="↩" class="wp-smiley" style="height: 1em; max-height: 1em;" />︎</a></li></ol>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
