Skip to content
Snippets Groups Projects
Commit 91168677 authored by anthony.bouillan's avatar anthony.bouillan
Browse files

Create analyse document

parent 4fe4fb02
No related branches found
No related tags found
No related merge requests found
# Analyse Technique - Implémentation de Puissance 4 en C
## 1. Introduction
Ce document détaille l'analyse technique pour l'implémentation d'un [puissance 4](https://fr.wikipedia.org/wiki/Puissance_4) en C, en respectant les contraintes et spécifications du cahier des charges [Cahier des charges](./CDC.pdf).
## 2. Spécifications du Jeu
### 2.1 Modes de Jeu
Le jeu devra supporter trois modes distincts :
- **Mode deux joueurs** : Deux joueurs humains s'affrontent.
- **Mode un joueur (IA aléatoire)** : L'ordinateur joue des coups aléatoires.
- **Mode un joueur (IA intelligente)** : L'ordinateur tente de gagner ou d'empêcher la défaite.
### 2.2 Interface Utilisateur
L'affichage du jeu se fera en mode texte avec un rendu ASCII Art.
Exemple :
```text
┌─┬─┬─┬─┬─┬─┬─┐
│ │ │ │ │ │ │ │
├─┼─┼─┼─┼─┼─┼─┤
│ │ │ │X│ │ │ │
└─┴─┴─┴─┴─┴─┴─┘
1 2 3 4 5 6 7
```
## 3. Conception Technique
### 3.1 Structures de Données
- **Plateau de jeu** : Utilisation d'un tableau 2D `char board[MAX_ROWS][MAX_COLS]`.
- **Enum pour les éléments du plateau** :
```c
enum {
EMPTY, CROSS, CIRCLE
} cell;
```
- **Struct pour le jeu** :
```c
typedef struct {
int rows;
int cols;
cell board[MAX_ROWS][MAX_COLS];
} game_board;
```
### 3.2 Modules
Le projet va être organisé en plusieurs fichiers :
- `main.c` : Point d'entrée du programme.
- `game.c/.h` : Gestion du jeu (initialisation, mise à jour, conditions de victoire).
- `display.h/display.c` : Affichage en ASCII Art.
- `ai.h/ai.c` : IA aléatoire et intelligente.
- `tests.h/tests.c` : Tests unitaires et de validation.
### 3.3 Algorithme Principal
1. Initialisation du jeu et du plateau.
2. Affichage initial du plateau.
3. Boucle principale :
- Demander au joueur/IA de jouer.
- Mettre à jour le plateau.
- Vérifier les conditions de victoire.
- Afficher le plateau mis à jour.
4. Fin du jeu : affichage du résultat.
## 4. Questions Techniques
### 4.1 Gestion des Entrées Utilisateur
## 5. En plus
### 5.1 Utilisation de (CI/CD)
Pour automatiser les tests, une pipeline CI/CD pourrait être mise en place avec :
- **GitLab CI** : Compilation automatique et exécution des tests unitaires à chaque push de commit.
- **Tests automatisés** : Exécution de `make tests` pour valider chaque modification.
- **Analyse statique** : Utilisation d'outils comme `clang-tidy` ou `cppcheck` pour vérifier la qualité du code (à voir).
### 5.2 Sauvegarde des Résultats
Afin de permettre le suivi des parties et des scores, une fonctionnalité de sauvegarde des résultats peut être ajoutée :
- **Format de stockage** : Fichier texte (`results.txt`).
- **Informations enregistrées** :
- Mode de jeu (1 joueur / 2 joueurs / IA)
- Nombre de coups joués
- Vainqueur
- Date et heure de la partie
- **Lecture et affichage des scores** : Possibilité de consulter l'historique des parties gagnées/perdues.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment