Skip to content

xHemera/stat-system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

13 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽฎ RPG Combat System

Language License Platform

Un systรจme de combat RPG complet dรฉveloppรฉ en C avec interface en ligne de commande, featuring un systรจme d'initiative avancรฉ, un systรจme d'armure rรฉaliste et une architecture modulaire.

๐Ÿ“‹ Table des matiรจres

โœจ Fonctionnalitรฉs

๐ŸŽฏ Systรจme de combat avancรฉ

  • Initiative basรฉe sur les niveaux : Diffรฉrence de ยฑ5 niveaux = avantage automatique
  • Tirage pondรฉrรฉ par l'รฉnergie : Plus d'รฉnergie = plus de chances de jouer en premier
  • Ordre d'affichage intelligent : Les PV sont affichรฉs au bon moment selon l'initiative
  • Systรจme d'armure rรฉaliste : Rรฉduction directe des dรฉgรขts avec minimum de 1 dรฉgรขt

๐Ÿ›ก๏ธ Mรฉcaniques de jeu

  • Pรฉnรฉtration d'armure : Support pour contourner les dรฉfenses
  • Dรฉgรขts physiques et magiques : Systรจmes sรฉparรฉs avec leurs propres armures
  • Vampirisme et rรฉgรฉnรฉration : Mรฉcaniques de survie avancรฉes
  • Scaling par niveau : Progression รฉquilibrรฉe des statistiques

๐ŸŽจ Interface utilisateur

  • Barres de vie dynamiques : Unicode blocks avec couleurs progressives
  • Headers ASCII professionnels : Affichage de combat immersif
  • Systรจme de prompts adaptatif : Diffรฉrents styles selon le contexte
  • Messages dรฉtaillรฉs : Calculs de dรฉgรขts transparents

๐Ÿ—๏ธ Architecture technique

  • Systรจme de commandes modulaire : Pointeurs de fonction pour extensibilitรฉ
  • Gestion mรฉmoire sรฉcurisรฉe : Protection contre les buffer overflows
  • Parser robuste : Chargement d'ennemis depuis fichiers avec validation
  • Code optimisรฉ : Performance et maintenabilitรฉ

๐Ÿ› ๏ธ Installation

Prรฉrequis

# Ubuntu/Debian
sudo apt-get install build-essential libreadline-dev

# Fedora/CentOS
sudo dnf install gcc readline-devel

# Arch Linux
sudo pacman -S gcc readline

Compilation

git clone https://github.com/xHemera/stat-system.git
cd stat-system
make

Nettoyage

make clean    # Supprime les fichiers objets
make fclean   # Nettoyage complet
make re       # Recompilation complรจte

๐ŸŽฏ Utilisation

Lancement du jeu

./stat-system

Premier dรฉmarrage

  1. Entrez votre nom (lettres uniquement, max 19 caractรจres)
  2. Explorez les commandes avec help
  3. Activez le debug avec /debug pour plus d'options
  4. Commencez ร  combattre avec fight

Exemple de session

Entrez un nom de joueur :
> Aragorn
Bienvenue Aragorn!

Simple RPG combat management
> help
> /debug
[DEBUG] Mode debug activรฉ.
> stats
> enemies
> fight goblin

โš”๏ธ Systรจme de combat

Initiative

Le systรจme d'initiative dรฉtermine qui attaque en premier :

Diffรฉrence de niveau = Niveau joueur - Niveau ennemi

Si diffรฉrence โ‰ค -5  โ†’ Ennemi a l'initiative automatiquement
Si diffรฉrence โ‰ฅ +5  โ†’ Joueur a l'initiative automatiquement
Sinon              โ†’ Tirage alรฉatoire pondรฉrรฉ par l'รฉnergie

Calcul des dรฉgรขts

Dรฉgรขts physiques = max(1, Attaque physique - Armure)
Dรฉgรขts magiques  = max(1, Attaque magique - Armure magique)

Avec pรฉnรฉtration :
Armure effective = max(0, Armure - Pรฉnรฉtration)

Exemple de combat

๐ŸŽฒ Test d'initiative:
   Aragorn (Niveau 5) vs Orc (Niveau 3)
   Diffรฉrence de niveau: +2
   Calcul d'initiative basรฉ sur l'รฉnergie...
   Aragorn รฉnergie: 20
   Orc รฉnergie: 20
   Aragorn gagne l'initiative! (tirage: 15/40)

โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘                        COMBAT - Tour 1                        โ•‘
โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

Aragorn (Niveau 5)
โค๏ธ   500/500 [โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ] 100%
Orc (Niveau 3)
โค๏ธ   360/360 [โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ] 100%

๐ŸŽฏ Tour de Aragorn:
โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘                       Actions disponibles                     โ•‘
โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
๐Ÿ—ก๏ธ  attack - Attaquer l'ennemi
๐Ÿƒ run - Fuir le combat

๐Ÿ“Š Systรจme de stats

Stats de base

Stat Description Scaling
Health Points de vie ร— Niveau
Physical Dmg Dรฉgรขts physiques ร— Niveau
Armor Rรฉduction dรฉgรขts physiques ร— Niveau
Magical Dmg Dรฉgรขts magiques ร— Niveau
Magic Armor Rรฉduction dรฉgรขts magiques ร— Niveau
Energy Ressource pour actions spรฉciales + Base
Vampirism Vol de vie en % ร— Niveau

Formules de calcul

Stat totale = (Stat de base ร— Niveau) + Bonus d'รฉquipement
ร‰nergie     = Stat de base + Bonus d'รฉquipement

๐ŸŽฎ Commandes disponibles

Commandes gรฉnรฉrales

Commande Description
help Affiche l'aide complรจte
stats Affiche vos statistiques
fight [cible] Combat contre un ennemi
enemies Liste tous les ennemis
exit / quit Quitte le jeu

Paramรจtres de combat

fight                 # Menu interactif
fight goblin         # Combat par nom
fight 1              # Combat par index
fight random         # Ennemi alรฉatoire

Commandes debug

Commande Description
levelup / lvl Monte d'un niveau
add_max_hp +20 PV max (en combat)

Commandes systรจme

Commande Description
/debug Active/dรฉsactive le mode debug

๐Ÿ—๏ธ Architecture

Organisation modulaire

src/
โ”œโ”€โ”€ core/           # Logique principale
โ”‚   โ”œโ”€โ”€ commands.c  # Systรจme de commandes
โ”‚   โ””โ”€โ”€ loop.c      # Boucle principale
โ”œโ”€โ”€ entities/       # Gestion des entitรฉs
โ”‚   โ”œโ”€โ”€ player.c    # Joueur et stats
โ”‚   โ””โ”€โ”€ enemy.c     # Ennemis et chargement
โ”œโ”€โ”€ fight/          # Systรจme de combat
โ”‚   โ”œโ”€โ”€ fight.c     # Logique de combat
โ”‚   โ””โ”€โ”€ fight_utils.c # Utilitaires combat
โ””โ”€โ”€ utils/          # Fonctions utilitaires
    โ”œโ”€โ”€ utils.c     # Fonctions gรฉnรฉrales
    โ”œโ”€โ”€ debug.c     # Mode debug
    โ””โ”€โ”€ print_stats.c # Affichage stats

Structures principales

typedef struct s_stats {
    float health, physical_dmg, armor;
    float magical_dmg, magic_armor;
    float vampirism, heal_shield_power;
    int energy, energy_regen;
} t_stats;

typedef struct s_player {
    char name[MAX_NAME_LENGTH];
    int level;
    t_stats base, bonus, total;
} t_player;

typedef struct s_command {
    char *name;
    int (*handler)(t_player*, t_enemy*, int, char*);
    int admin_only;
    char *description;
} t_command;

๐Ÿงช Mode debug

Activez le mode debug avec /debug pour accรฉder ร  :

Affichage avancรฉ

โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
โ”‚              SUPER STATS de Aragorn      (Niveau 5)             โ”‚
โ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚
โ”‚   Health            โ”‚ Total:    500.0 โ”‚ Base:    500.0 โ”‚ Bonus:      0.0 โ”‚
โ”‚   Physical Dmg      โ”‚ Total:     50.0 โ”‚ Base:     50.0 โ”‚ Bonus:      0.0 โ”‚
โ”‚   Armor             โ”‚ Total:     50.0 โ”‚ Base:     50.0 โ”‚ Bonus:      0.0 โ”‚
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”

Commandes supplรฉmentaires

  • levelup : Montรฉe de niveau instantanรฉe
  • add_max_hp : Boost de PV en plein combat
  • Dรฉtails combat : Calculs d'initiative dรฉtaillรฉs

๐Ÿ“ Structure du projet

stat-system/
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ Makefile
โ”œโ”€โ”€ .gitignore
โ”œโ”€โ”€ include/
โ”‚   โ””โ”€โ”€ hemera.h        # Header principal
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ core/           # Cล“ur du systรจme
โ”‚   โ”œโ”€โ”€ entities/       # Gestion joueur/ennemis
โ”‚   โ”œโ”€โ”€ fight/          # Systรจme de combat
โ”‚   โ””โ”€โ”€ utils/          # Utilitaires
โ”œโ”€โ”€ data/
โ”‚   โ””โ”€โ”€ enemies         # Base de donnรฉes ennemis
โ””โ”€โ”€ obj/                # Fichiers objets (gรฉnรฉrรฉ)

Format des ennemis

Le fichier data/enemies utilise le format pipe-separated :

# Nom|Niveau|HP|HealPwr|Vamp|MagDmg|MagArmor|MagPen|PhysDmg|Armor|ArmorPen|Energy|EnergyRegen|XP|Gold
Goblin|1|50|1|0|0|5|0|8|4|0|10|1|10|5
Orc|3|120|1|0|5|15|0|15|8|0|20|2|50|25

๐Ÿš€ Fonctionnalitรฉs avancรฉes

Systรจme de pรฉnรฉtration

float calculate_physical_damage(float attack, float armor, float armor_pen) {
    float effective_armor = armor - armor_pen;
    if (effective_armor < 0) effective_armor = 0;
    
    float damage = attack - effective_armor;
    return damage > 1.0f ? damage : 1.0f; // Minimum 1 dรฉgรขt
}

Gestion des signaux

  • Ctrl+C : Affiche un message mais ne quitte pas
  • Ctrl+D : Sortie propre avec nettoyage mรฉmoire

Optimisations

  • Gestion mรฉmoire : Protection buffer overflow avec strncpy
  • Performance : Boucles optimisรฉes et structures efficaces
  • Validation : Parsing robuste avec nettoyage des donnรฉes
  • Extensibilitรฉ : Architecture modulaire pour ajouts futurs

๐Ÿค Contribution

Pour contribuer

  1. Fork le repository
  2. Crรฉez une branche feature (git checkout -b feature/amazing-feature)
  3. Committez vos changements (git commit -m 'Add amazing feature')
  4. Push vers la branche (git push origin feature/amazing-feature)
  5. Ouvrez une Pull Request

Standards de code

  • Style : Code en anglais, commentaires en franรงais
  • Naming : snake_case pour fonctions, t_ pour types
  • Sรฉcuritรฉ : Toujours valider les entrรฉes utilisateur
  • Memory : Libรฉrer toute mรฉmoire allouรฉe

TODO

  • Systรจme d'expรฉrience et de progression
  • ร‰quipements et inventaire
  • Sauvegarde/chargement de parties
  • Plus de types d'attaques spรฉciales
  • Interface graphique simple

Dรฉveloppรฉ avec โค๏ธ en C

Un projet รฉducatif dรฉmontrant les concepts avancรฉs de programmation systรจme, la gestion mรฉmoire et l'architecture logicielle.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors