Un jeu de stratégie classique implémenté en JavaScript, déployable sur GitHub Pages. Adaptation fidèle du cahier des charges original en version web interactive.
- 🐭 Souris : Faire entrer 9 souris dans le refuge (cases 33-41)
- 🐱 Chats : Éliminer suffisamment de souris pour rendre impossible la victoire adverse
- 21 souris placées sur les cases 1-21 (grenier)
- 2 chats placés au choix sur la rangée 22-28
- Refuge : 9 cases sécurisées (33-41)
- Se déplacent sur les cases voisines libres
- Ne peuvent pas reculer (règle importante !)
- Objectif : atteindre le refuge
- Se déplacent sur les cases voisines libres
- Ne peuvent pas entrer dans le refuge
- Prise obligatoire : doivent capturer une souris si possible
- Capture par saut (comme aux dames)
- Règle du soufflage : un chat qui ne prend pas quand il le peut est pénalisé
- Souris gagnent : 9 souris dans le refuge OU chats bloqués
- Chats gagnent : moins de 9 souris restantes OU souris bloquées
- Plateau interactif avec 41 cases numérotées
- Visualisation claire des connexions entre cases
- Indication visuelle des mouvements possibles
- Sélection intuitive par clic de souris
- Validation automatique des règles
- Détection des prises obligatoires
- Vérification des conditions de victoire
- Historique complet des coups
- Sauvegarde/Chargement de partie (localStorage)
- Annulation du dernier coup
- Historique détaillé des mouvements
- Compteurs en temps réel (souris, refuge, etc.)
chat-et-souris/
├── index.html # Interface principale
├── style.css # Styles et animations
├── script.js # Logique de jeu complète
└── README.md # Documentation
- HTML5 : Structure sémantique du plateau
- CSS3 : Design responsive, animations, effets visuels
- JavaScript ES6+ : Logique de jeu, validation des règles, IA
- LocalStorage : Sauvegarde des parties
- GitHub Pages : Hébergement gratuit
-
Créer un nouveau dépôt
# Sur GitHub, créez un dépôt nommé "chat-et-souris"
-
Cloner et ajouter les fichiers
git clone https://github.com/votre-username/chat-et-souris.git cd chat-et-souris # Ajoutez les 3 fichiers : index.html, style.css, script.js
-
Activer GitHub Pages
- Aller dans Settings → Pages
- Source : "Deploy from a branch"
- Branch :
main
→ Folder :/ (root)
-
Accéder au jeu
- URL :
https://votre-username.github.io/chat-et-souris/
- URL :
# Cloner le projet
git clone https://github.com/votre-username/chat-et-souris.git
cd chat-et-souris
# Ouvrir avec un serveur local (optionnel)
python -m http.server 8000
# ou
npx serve
# Ouvrir index.html dans le navigateur
class ChatSourisGame {
constructor() {
this.boardConnections = {}; // Topologie du plateau
this.cellPositions = {}; // Positions visuelles
this.gameState = {}; // État complet du jeu
}
}
- 41 cases numérotées (1-32 grenier, 33-41 refuge)
- Graphe de connexions définissant les mouvements possibles
- Positions calculées pour l'affichage responsive
gameState = {
currentPlayer: 'mouse', // Tour actuel
pieces: {}, // Position des pièces
selectedPiece: null, // Pièce sélectionnée
moveHistory: [], // Historique complet
gameStatus: 'playing', // État de la partie
mustCapture: false // Prise obligatoire
}
- Vérification des connexions topologiques
- Contrôle des règles spécifiques (recul, refuge)
- Détection des captures possibles
- Calcul vectoriel pour la direction de saut
- Vérification de la case d'atterrissage
- Gestion des prises multiples
- Comptage dynamique des pièces
- Vérification des mouvements possibles
- Détection des situations de blocage
- Adaptation automatique mobile/desktop
- Plateau redimensionnable
- Contrôles tactiles optimisés
- Cases sélectionnées : surbrillance dorée
- Mouvements possibles : bordure bleue pulsante
- Captures : bordure rouge animée
- Refuge : fond vert distinctif
- Transitions fluides pour les sélections
- Effets de capture avec rotation
- Messages contextuels temporisés
- Complexité du plateau : 41 cases, ~120 connexions
- Espace d'état : ~10^15 positions possibles
- Profondeur moyenne : 30-50 coups par partie
- Facteur de branchement : 2-8 mouvements par tour
- Intelligence artificielle pour jouer contre l'ordinateur
- Algorithme minimax avec élagage alpha-beta
- Niveaux de difficulté progressifs
- Évaluation heuristique avancée
- Mode en ligne avec WebSockets
- Salles de jeu privées
- Système de classement ELO
- Replay des parties
- Statistiques détaillées des parties
- Analyse des ouvertures populaires
- Base de données des parties célèbres
- Tutoriel interactif
// Activer le mode debug dans la console
game.debugMode = true;
// Afficher l'état complet
console.log(game.gameState);
// Forcer un mouvement
game.executeMove(from, {to: destination, type: 'move'});
// Tester les règles de base
function testBasicRules() {
const game = new ChatSourisGame();
// Tests unitaires des fonctions critiques
}
Les contributions sont bienvenues !
- Fork le projet
- Créer une branche feature (
git checkout -b feature/amelioration
) - Commit les changements (
git commit -m 'Ajout fonctionnalité'
) - Push vers la branche (
git push origin feature/amelioration
) - Ouvrir une Pull Request
- ES6+ moderne
- Documentation JSDoc
- Tests unitaires pour les fonctions critiques
- Code review obligatoire
Ce projet est sous licence MIT. Voir LICENSE pour plus de détails.
Projet développé dans le cadre d'un cours de programmation, adaptant un cahier des charges C original en application web moderne. Démonstration de :
- Analyse de requirements complexes
- Architecture logicielle modulaire
- Algorithmes de jeu avancés
- Interface utilisateur intuitive
- Déploiement web professionnel
- GitHub : @votre-username
- Issues : Signaler un bug
⭐ N'hésitez pas à mettre une étoile si ce projet vous a plu !
Développé avec passion pour l'apprentissage 🎯