Kohlanta

Présentation du projet
Kohlanta est un projet de jeu multijoueur développé avec un frontend HTML/CSS/JavaScript et un backend FastAPI utilisant WebSocket pour les communications temps réel.
Le principe du jeu :
- plusieurs joueurs se connectent avec un pseudo,
- chaque joueur contrôle une voiture,
- chaque manche contient 4 instructions,
- les voitures avancent sur une grille,
- la carte contient des murs, checkpoints et une case d’arrivée,
- le premier joueur qui atteint la case finale gagne.
Fonctionnalités
Backend
- GET
/ping - POST
/register - POST
/send-moves - POST
/clear - POST
/restart-game - POST
/leave - WebSocket
/ws
Jeu
- enregistrement des joueurs
- voitures colorées
- directions des voitures
- 4 instructions par manche
- déplacements sur grille
- collisions avec poussée
- checkpoints verticaux
- retour checkpoint après accident
- victoire du premier joueur
- redémarrage de partie
- temporisation de manche
Frontend
- affichage des joueurs
- affichage de la grille
- affichage des murs
- affichage des checkpoints
- affichage des voitures
- affichage des instructions
- fenêtre de victoire
Structure du projet
kohlanta_final/
│
├── Backend/
│ └── app/
│ ├── main.py
│ ├── state.py
│ ├── websocket_manager.py
│ ├── game_logic.py
│ └── api/
│ ├── ping.py
│ ├── register.py
│ ├── send_moves.py
│ ├── clear.py
│ ├── restart_game.py
│ └── leave.py
│
├── Frontend/
│ ├── index.html
│ ├── style.css
│ └── js/
│ ├── main.js
│ ├── api.js
│ ├── socket.js
│ ├── render.js
│ └── controls.js
│
├── README.md
├── EXIGENCES.md
├── requirements.txt
└── start.sh
Technologies utilisées
Backend
- Python
- FastAPI
- Uvicorn
- WebSocket
Frontend
- HTML
- CSS
- JavaScript
Lancement du projet
1. Cloner le projet
git clone git@gitlab.com:ahmad-games/kohlanta.git
cd kohlanta
2. Créer un environnement virtuel
python3 -m venv venv
3. Activer l’environnement virtuel
source venv/bin/activate
4. Installer les dépendances
pip install -r requirements.txt
5. Lancer le projet
chmod +x start.sh
./start.sh
Accès
Frontend
http://127.0.0.1:5500
Backend
http://127.0.0.1:8000
Test API
http://127.0.0.1:8000/ping
Règles du jeu
- chaque joueur envoie 4 instructions,
- avancer,
- tourner à gauche,
- tourner à droite,
- collisions avec poussée,
- murs et bords bloquants,
- retour checkpoint après accident,
- victoire à l’arrivée.
Choix techniques
Le projet est séparé en plusieurs modules :
state.py: état globalgame_logic.py: logique principalewebsocket_manager.py: WebSocketapi/: routes backend- frontend séparé en modules JS
Cette organisation permet un code plus clair et plus facile à maintenir.
Limites actuelles
- données stockées en mémoire,
- pas de base de données,
- animations simples,
- version pédagogique.
Pistes d’amélioration
- animations avancées,
- meilleure interface graphique,
- mode en ligne hébergé,
- gestion avancée des collisions,
- amélioration de la carte,
- affichage du temps restant.
Résultat
Kohlanta est un projet multijoueur simple permettant de découvrir :
- FastAPI,
- WebSocket,
- synchronisation temps réel,
- architecture frontend/backend,
- logique de jeu sur grille.
Liens
-
Dépôt GitLab :
https://gitlab.com/ahmad-games/kohlanta/-/tree/main?ref_type=heads -
Portfolio :
https://ahmadaboalola.com/
Auteur
Ahmad Abo-Alola — Student Project (AI Developer Training)