liste des yakus (nom seulement)

This commit is contained in:
Didictateur 2026-02-24 21:14:12 +01:00
parent d8ef8022e0
commit f9567f1a1d
3 changed files with 423 additions and 1 deletions

View file

@ -52,7 +52,7 @@
<li><a href="">Chapitre 5 : Une partie à trois</a></li>
</ul>
</li>
<li><a href="">Liste des Yakus</a></li>
<li><a href="/frontend/pages/liste_yakus.html">Liste des Yakus</a></li>
<li><a href="">Ressources</a></li>
</ul>
</nav>

View file

@ -172,5 +172,11 @@ const texts = {
Une liste exhaustive des yakus les plus courants au moins courants sont présentés dans<br>
l'onglet dédié.
`
},
liste_yakus:{
explanation:`
Liste des yakus les plus courants selon Tenhou février 2026
`
}
};

View file

@ -0,0 +1,416 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Liste des Yakus - Tuto Riichi</title>
<link rel="stylesheet" href="/frontend/css/style.css">
<link rel="stylesheet" href="/frontend/css/speech-bubble.css">
<style>
#menu {
position: relative;
z-index: 10;
}
#mascotte {
position: absolute;
top: 670px;
right: 100px;
z-index: 999;
transform: scaleX(-1);
cursor: pointer;
}
#mascotte img {
width: 250px;
height: auto;
display: block;
}
.speech-bubble {
position: absolute;
top: 150px;
right: 170px;
z-index: 1;
display: none;
}
.speech-bubble.visible {
display: flex;
}
h1 {
text-align: center;
color: white;
margin: 40px 0 50px 0;
font-size: 2.5rem;
}
.yakus-container {
max-width: 1000px;
margin: 0 auto;
padding: 20px;
display: grid;
gap: 20px;
}
.yaku-card {
background: rgba(45, 85, 60, 0.8);
border: 2px solid rgba(82, 183, 136, 0.6);
border-radius: 10px;
padding: 20px;
display: grid;
grid-template-columns: 1fr 100px;
gap: 20px;
align-items: center;
transition: all 0.3s ease;
}
.yaku-card:hover {
background: rgba(45, 85, 60, 1);
border-color: rgba(82, 183, 136, 1);
box-shadow: 0 0 20px rgba(82, 183, 136, 0.3);
transform: translateX(5px);
}
.yaku-info h3 {
color: #52b788;
margin: 0 0 10px 0;
font-size: 1.3rem;
}
.yaku-info p {
color: #c8e6c9;
margin: 0;
line-height: 1.5;
font-size: 0.95rem;
}
.yaku-percentage {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
background: linear-gradient(135deg, #52b788, #40916c);
border-radius: 8px;
padding: 15px;
min-height: 80px;
}
.percentage-number {
font-size: 2rem;
font-weight: bold;
color: white;
}
.percentage-label {
font-size: 0.8rem;
color: #e8f5e9;
margin-top: 5px;
}
.yaku-bar {
width: 100%;
height: 4px;
background: rgba(82, 183, 136, 0.3);
border-radius: 2px;
margin-top: 10px;
overflow: hidden;
}
.yaku-bar-fill {
height: 100%;
background: linear-gradient(90deg, #52b788, #74c69d);
border-radius: 2px;
}
</style>
</head>
<body>
<div id="menu"></div>
<div class="speech-bubble">
<div class="speech-text" id="speech-text"></div>
</div>
<div id="mascotte"></div>
<h1>Yakus les plus courants</h1>
<div class="yakus-container" id="yakus-list"></div>
<script src="/frontend/js/fr/texts.js"></script>
<script>
// Charger le menu
fetch('/components/menu.html')
.then(r => r.text())
.then(html => document.getElementById('menu').innerHTML = html);
// Afficher la mascotte et le texte
const mascolteEl = document.getElementById('mascotte');
mascolteEl.innerHTML = '<img src="/img/tilineau/idle.png" alt="Tilineau">';
document.getElementById('speech-text').innerHTML = texts.liste_yakus.explanation;
// Toggle bulle de dialogue au clic sur la mascotte
const speechBubble = document.querySelector('.speech-bubble');
mascolteEl.addEventListener('click', () => {
speechBubble.classList.toggle('visible');
mascolteEl.innerHTML = speechBubble.classList.contains('visible')
? '<img class="explaining" src="/img/tilineau/explaining.png" alt="Tilineau">'
: '<img src="/img/tilineau/idle.png" alt="Tilineau">';
});
// Données des yakus
const yakus = [
{
name: 'Riichi',
description: '',
percentage: 41.9
},
{
name: 'Brelan de dragon',
description: '',
percentage: 23.8
},
{
name: 'Tanyao',
description: '',
percentage: 23.3
},
{
name: 'Pinfu',
description: '',
percentage: 19.9
},
{
name: 'Tout caché tiré',
description: '',
percentage: 17.8
},
{
name: 'Ippatsu',
description: '',
percentage: 9.2
},
{
name: 'Vent de la manche',
description: '',
percentage: 8.3
},
{
name: 'Vent du joueur',
description: '',
percentage: 8.17
},
{
name: 'Semie pure',
description: '',
percentage: 6.3
},
{
name: 'iipeiko',
description: '',
percentage: 4.2
},
{
name: 'sanshoku',
description: '',
percentage: 3.5
},
{
name: 'Tout brelan',
description: '',
percentage: 3.0
},
{
name: '7 paires',
description: '',
percentage: 2.3
},
{
name: 'ittsu',
description: '',
percentage: 1.6
},
{
name: 'Chanta',
description: '',
percentage: 1.0
},
{
name: 'Pure',
description: '',
percentage: 0.87
},
{
name: 'Trois brelans cachés',
description: '',
percentage: 0.68
},
{
name: 'Under the river',
description: '',
percentage: 0.57
},
{
name: 'Terminal partout',
description: '',
percentage: 0.32
},
{
name: 'Under the sea',
description: '',
percentage: 0.31
},
{
name: '(after a kong)',
description: '',
percentage: 0.28
},
{
name: 'Double riichi?',
description: '',
percentage: 0.17
},
{
name: 'Trois petits dragons',
description: '',
percentage: 0.12
},
{
name: 'Tout terminal et honneur',
description: '',
percentage: 0.058
},
{
name: "Vole d'un Khan",
description: '',
percentage: 0.057
},
{
name: '(rayanpeiko)',
description: '',
percentage: 0.042
},
{
name: 'Triple brelan mixte',
description: '',
percentage: 0.038
},
{
name: 'Quatre brelans cachés',
description: '',
percentage: 0.036
},
{
name: 'Triple grands dragons',
description: '',
percentage: 0.032
},
{
name: '13 orphelins',
description: '',
percentage: 0.022
},
{
name: 'Quatre petits vents',
description: '',
percentage: 0.0095
},
{
name: 'Tout honneur',
description: '',
percentage: 0.0054
},
{
name: 'su anko tanko',
description: '',
percentage: 0.0038
},
{
name: 'Trois Khan',
description: '',
percentage: 0.0035
},
{
name: 'Tout terminal',
description: '',
percentage: 0.00059
},
{
name: 'Quatre grands vents',
description: '',
percentage: 0.00059
},
{
name: 'Bénédiction du ciel',
description: '',
percentage: 0.00044
},
{
name: 'Bénédiction de la terre',
description: '',
percentage: 0.00044
},
{
name: 'Neufs portes',
description: '',
percentage: 0.00044
},
{
name: 'Tout vert',
description: '',
percentage: 0.00030
},
{
name: 'Quatres khans',
description: '',
percentage: 0.00015
},
];
// Afficher les yakus
const yakusList = document.getElementById('yakus-list');
yakus.forEach(yaku => {
const card = document.createElement('div');
card.className = 'yaku-card';
const info = document.createElement('div');
info.className = 'yaku-info';
const title = document.createElement('h3');
title.textContent = yaku.name;
const desc = document.createElement('p');
desc.textContent = yaku.description;
const bar = document.createElement('div');
bar.className = 'yaku-bar';
const barFill = document.createElement('div');
barFill.className = 'yaku-bar-fill';
barFill.style.width = yaku.percentage + '%';
bar.appendChild(barFill);
info.appendChild(title);
info.appendChild(desc);
info.appendChild(bar);
const percentage = document.createElement('div');
percentage.className = 'yaku-percentage';
const number = document.createElement('div');
number.className = 'percentage-number';
number.textContent = yaku.percentage + '%';
const label = document.createElement('div');
label.className = 'percentage-label';
label.textContent = 'Fréquence';
percentage.appendChild(number);
percentage.appendChild(label);
card.appendChild(info);
card.appendChild(percentage);
yakusList.appendChild(card);
});
</script>
</body>
</html>