This commit is contained in:
2026-02-11 13:20:47 +01:00
commit d3645f663c
30 changed files with 403 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
CC=gcc
SRC = villager.c demon.c weapons.c print.c main.c
CFLAGS= -Wall -Wextra -Werror
LDFLAGS= -fsanitize=address -g -lm
# Computes the basic main for tests
main: ${SRC}
gcc $(CFLAGS) $^ -o main -lm
#Check for memory errors/leaks and to use gdb
debug: ${SRC}
gcc $(CFLAGS) $^ -o debug $(LDFLAGS)
clean:
$(RM) main debug

View File

@@ -0,0 +1,37 @@
#ifndef DEMON_H
#define DEMON_H
#include "villager.h"
struct villager;
enum demon_category
{
PARASITE = 1,
THREAT,
NIGHTMARE,
CALAMITY,
TOM_NOOK
};
struct demon {
enum demon_category category;
char name[50];
int damage;
enum distance range;
int cur_HP;
int HP_max;
};
struct demon *init_demon(enum demon_category category, char name[50], int HP_max, int damage, enum distance range);
void pp_demon(struct demon *demon);
void destroy_demon(struct demon *demon);
void basic_attack(struct demon *demon, struct villager *target);
void draining_attack(struct demon *demon, struct villager *target);
void heavy_attack(struct demon *demon, struct villager *target);
void chase(struct demon *demon, struct villager *villager);
void update_demon_hp(struct demon *demon, int amount);
void demon_action(struct demon *demon, struct villager *villager);
#endif

Binary file not shown.

View File

@@ -0,0 +1,14 @@
#include <stdio.h>
#include "demon.h"
#include "villager.h"
#include "weapons.h"
int main()
{
char gun_name[50] = "BFG";
struct gun *gun = init_gun(gun_name, 50, FAR, 16);
printf("Gun name: %s\nDamage: %d\nRange: %d\nMagazine: %d/%d\n", gun->name, gun->damage, gun->range, gun->current_magazine, gun->magazine_size);
}

View File

@@ -0,0 +1,28 @@
#ifndef VILLAGER_H
#define VILLAGER_H
#include "weapons.h"
struct demon;
struct villager{
char name[50];
int cur_HP;
int HP_max;
// struct gun;
int gun_mastery;
int medicines;
enum distance distance;
};
struct villager *init_villager(char name[50], int HP_max, struct gun *gun, int gun_mastery);
void pp_villager(struct villager *villager);
void destroy_villager(struct villager *villager);
void update_villager_hp(struct villager *villager, int amount);
void shoot(struct villager *villager, struct demon *demon);
void heal(struct villager *villager);
enum distance walk(struct villager *villager, int direction);
int prepare_medicine(struct villager *villager);
#endif

View File

@@ -0,0 +1,17 @@
#include "weapons.h"
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
struct gun *init_gun(char name[50], int damage, enum distance range, int magazine_size){
struct gun *rslt = malloc(sizeof( struct gun));
//mettre protection
//init des var du struct
strcpy(rslt->name, name);
rslt->damage = damage;
rslt->range = range;
rslt->magazine_size = magazine_size;
return rslt;
}

View File

@@ -0,0 +1,24 @@
#ifndef WEAPONS_H
#define WEAPONS_H
enum distance
{
CLOSE,
NEAR,
FAR,
};
struct gun {
char name[50];
int damage;
enum distance range;
int magazine_size;
int current_magazine;
};
struct gun *init_gun(char name[50], int damage, enum distance range, int magazine_size);
void reload(struct gun *gun);
void destroy_gun(struct gun *gun);
#endif