127 lines
3.9 KiB
Markdown
127 lines
3.9 KiB
Markdown
# 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).
|