# Tutoriel interactif de Mahjong Riichi

<p align="center">
  <img src="https://img.shields.io/badge/TypeScript-5.6-blue?logo=typescript" alt="TypeScript">
  <img src="https://img.shields.io/badge/Vite-6.0-646CFF?logo=vite" alt="Vite">
  <img src="https://img.shields.io/badge/License-CC0-green" alt="License">
</p>

Un tutoriel complet et interactif pour apprendre à jouer au Mahjong Riichi, développé en TypeScript moderne avec une interface élégante.

## Démonstration

Ce tutoriel est accessible directement sur [ce site](https://perso.eleves.ens-rennes.fr/people/adrien.decosse/riichi/).

## Fonctionnalités

- **Guide étape par étape** : Apprentissage progressif découpé en chapitres
- **Interface interactive** : Manipulez les tuiles et expérimentez les dynamiques
- **Exemples de jeu** : Scénarios dirigés pour s'entraîner aux différentes situations
- **Design moderne** : Interface élégante avec animations fluides
- **Performances optimisées** : Rendu canvas optimisé avec double buffering

## Stack Technique

| Technologie | Version | Usage |
|------------|---------|-------|
| TypeScript | 5.6+ | Langage principal |
| Vite | 6.0+ | Build tool & dev server |
| Vitest | 2.1+ | Tests unitaires |
| Canvas API | - | Rendu graphique |

## Démarrage Rapide

### Prérequis

- Node.js 18.0 ou supérieur
- npm ou yarn

### Installation

```bash
# Cloner le dépôt
git clone https://github.com/Didictateur/Riichi.git
cd Riichi

# Installer les dépendances
npm install

# Lancer le serveur de développement
npm run dev
```

## Scripts Disponibles

| Commande | Description |
|----------|-------------|
| `npm run dev` | Lance le serveur de développement avec hot reload |
| `npm run build` | Compile le projet pour la production |
| `npm run preview` | Prévisualise le build de production |
| `npm run typecheck` | Vérifie les types TypeScript |
| `npm run test` | Lance les tests |
| `npm run test:watch` | Lance les tests en mode watch |

## Makefile

Un Makefile est également disponible :

```bash
make dev          # Serveur de développement
make build        # Build production
make preview      # Prévisualiser le build
make test         # Lancer les tests
make clean        # Nettoyer les fichiers générés
make hard-clean   # Nettoyage complet (incluant node_modules)
make zip          # Créer une archive de distribution
make help         # Afficher l'aide
```

## Structure du Projet

```
Riichi/
├── src/
│   ├── constants/      # Constantes partagées
│   ├── display/        # Composants d'affichage (dp*.ts)
│   ├── styles/         # Feuilles de style CSS
│   ├── text/           # Textes des tutoriels
│   ├── types/          # Définitions de types TypeScript
│   ├── utils/          # Fonctions utilitaires
│   └── yakus/          # Implémentation des yakus
├── img/                # Images et ressources
├── tests/              # Tests unitaires
├── build/              # Fichiers compilés
├── index.html          # Point d'entrée HTML
├── vite.config.ts      # Configuration Vite
└── tsconfig.json       # Configuration TypeScript
```

## Design System

Le projet utilise un système de variables CSS moderne :

```css
:root {
  --color-primary: #1a7f4b;
  --color-accent: #ffd700;
  --bg-main: linear-gradient(...);
  /* ... */
}
```

## Contribution

Les contributions sont les bienvenues ! N'hésitez pas à :
1. Fork le projet
2. Créer une branche (`git checkout -b feature/amelioration`)
3. Commit vos changements (`git commit -am 'Ajout de fonctionnalité'`)
4. Push la branche (`git push origin feature/amelioration`)
5. Ouvrir une Pull Request

## Sources

Les images des tuiles proviennent du dépôt de [FluffyStuff](https://github.com/FluffyStuff/riichi-mahjong-tiles).

## Licence

Ce projet est dans le [domaine public](https://creativecommons.org/publicdomain/zero/1.0/) (CC0 1.0).
