Le Songo est un jeu de plateau traditionnel originaire. Il se joue sur un plateau à deux rangées de 7 cases, chacune initialement chargée de 5 graines, pour un total de 70 graines en début de partie. Deux joueurs s'affrontent, chacun contrôlant une rangée (Sud et Nord), dans un affrontement stratégique de capture et de distribution de graines.
# 🌍 SONGO
> Jeu de plateau traditionnel africain — Implémentation Web
---
## 📖 Présentation
Le **Songo** est un jeu de plateau traditionnel originaire d'Afrique centrale, appartenant à la famille des jeux de **mancala**. Il se joue sur un plateau de **14 cases** (2 rangées de 7), chacune contenant initialement **5 graines**, pour un total de 70 graines.
Ce projet propose deux versions jouables :
| Version | Description |
|---|---|
| 🖥️ **Locale** | 2 joueurs sur la même machine, tour par tour |
| 🌐 **En ligne** | 2 joueurs à distance via un serveur PHP/MySQL |
---
## 🎮 Règles du jeu
- **Objectif** : capturer **40 graines ou plus** avant l'adversaire
- **Distribution** : les graines d'une case sont redistribuées une à une dans le sens circulaire
```
S1 → S2 → S3 → S4 → S5 → S6 → S7 → N7 → N6 → N5 → N4 → N3 → N2 → N1 → S1...
```
- **Capture** : si la dernière graine tombe dans une case **adverse** contenant **2, 3 ou 4** graines → capture !
- **Capture en chaîne** : les cases précédentes dans le camp adverse remplissant la même condition sont aussi capturées
- **Anti-affamage** : une capture est annulée si elle viderait totalement le camp adverse
- **Fin de partie** :
- Un joueur atteint 40 graines → victoire immédiate
- Moins de 10 graines sur le plateau → fin, le plus de graines gagne
- Impossible de nourrir l'adversaire → fin de partie
---
## 📁 Structure du projet
```
songo/
├── songo-local/ # Version locale (2 joueurs, même machine)
│ ├── index.html # Structure de la page
│ ├── style.css # Mise en page et animations
│ └── script.js # Logique complète du jeu
│
└── songo-online/ # Version réseau (2 joueurs à distance)
├── index.html # Interface + lobby
├── style.css # Styles
├── script.js # Logique client + synchronisation
└── api/
├── createGame.php # Création d'une partie
├── joinGame.php # Rejoindre une partie
├── playMove.php # Jouer un coup
├── getGame.php # Ré …