Skip to content
Snippets Groups Projects
Commit b3d9ff24 authored by Arnaud Albiez's avatar Arnaud Albiez
Browse files

Reorganisation du grid.c et grid.h

parent f4a54e7e
Branches
No related merge requests found
......@@ -9,7 +9,7 @@ int coordonner_vers_indice(int x, int y, struct Grid* grid)
return((y * grid->column_number)+ x);
}
enum CaseType* initialisation_grid(int x, int y)
enum CaseType* init_grid(int x, int y)
{
size_t taille_grid = x * y;
enum CaseType* new_grid = (enum CaseType*) malloc(taille_grid * sizeof(enum CaseType));
......@@ -22,13 +22,23 @@ enum CaseType* initialisation_grid(int x, int y)
struct Player* init_player()
{
struct Player * player = malloc(sizeof(struct Player *));
struct Player * player = (struct Player *) malloc(sizeof(struct Player));
player->x = 0;
player->y = 0;
return player;
}
struct Grid* new_grid(int x, int y)
{
struct Grid * new_strut_grid = (struct Grid *) malloc(sizeof(struct Grid));
new_strut_grid->column_number=x;
new_strut_grid->row_number= y;
new_strut_grid->game_grid = init_grid(x, y);
new_strut_grid->position = init_player();
new_strut_grid->tabGoal = NULL;
return new_strut_grid;
}
struct Grid* init_level(const char* file_path){
......@@ -47,6 +57,7 @@ struct Grid* init_level(const char* file_path){
sscanf(line, "%d %d %d", &number_column, &number_row, &number_goals);
struct Grid* grid = new_grid(number_row, number_column);
int current_row = 0;
grid->number_goal = number_goals;
grid->tabGoal = malloc(number_goals * (sizeof(struct Goal)));
int current_goal = 0;
// On lit le fichier ligne par ligne jusqu'à la fin du fichier
......@@ -58,7 +69,7 @@ struct Grid* init_level(const char* file_path){
grid->position->x = current_column;
grid->position->y = current_row;
}
if(buffer[0] == '.'){
else if(buffer[0] == '.'){
grid->tabGoal[current_goal].x = current_column;
grid->tabGoal[current_goal].y = current_row;
current_goal =+1;
......@@ -76,62 +87,75 @@ struct Grid* init_level(const char* file_path){
return grid;
}
enum CaseType* initialisation_grid(int x, int y)
enum CaseType get_grid(struct Grid* grid, int x, int y)
{
size_t taille_grid = x * y;
enum CaseType* new_grid = (enum CaseType*) malloc(taille_grid * sizeof(enum CaseType));
for(size_t i = 0; i< taille_grid; i++)
if (0 <= x && x <grid->column_number && 0 <= y && y <grid->row_number )
{
new_grid[i] = NONE;
return grid->game_grid[coordonner_vers_indice(x, y, grid)];
}
return new_grid;
else{return -1;}
}
struct Grid* new_grid(int x, int y)
{
struct Grid * new_strut_grid = (struct Grid *) malloc(sizeof(struct Grid *));
new_strut_grid->column_number=x;
new_strut_grid->row_number= y;
new_strut_grid->game_grid = initialisation_grid(x, y);
new_strut_grid->position = init_player();
new_strut_grid->tabGoal = NULL;
return new_strut_grid;
}
enum CaseType get_grid(struct Grid* grid, int x, int y)
int get_goal(struct Grid* grid, int x, int y)
{
if (0 <= x && x <grid->column_number && 0 <= y && y <grid->row_number )
{
return grid->game_grid[coordonner_vers_indice(x, y, grid)];
for(int i = 0; i<grid->number_goal; i++)
{
if (grid->tabGoal[i].x == x && grid->tabGoal[i].y == y)
{
return 1;
}
}
return -1;
}
else{
return -1;
}
else{return -1;}
}
void Affichage_grid(struct Grid* grid)
{
printf("player: %d %d\n", grid->position->x, grid->position->y);
for(int i = 0; i<grid->column_number; i++)
{
for(int j = 0 ; j < grid->row_number; j++)
switch(get_grid(grid, i, j)){
case NONE :{
printf(" ");
break;
}
case WALL:{
printf("#");
break;
}
case PLAYER:{
printf("@");
break;
}
case GOAL:{
printf(".");
break;
}
case BOX:{
printf("$");
break;
{
switch(get_grid(grid, i, j))
{
case NONE :{
if(grid->position->x == j && grid->position->y == i)
{
printf("@");
}
else if(get_goal(grid, i, j) == 1)
{
printf(".");
}
else
{
printf(" ");
}
break;
}
case WALL:{
printf("#");
break;
}
case BOX:{
printf("$");
break;
}
case PLAYER:{
printf("@");
break;
}
case GOAL:{
printf(".");
break;
}
}
}
printf("\n");
......
......@@ -23,15 +23,24 @@ struct Grid{
int row_number; ///< Nomber de ligne de game_grid
struct Player * position;///< Positioin du joueur
struct Goal* tabGoal;///< Liste des but
int number_goal;///< nombre de goal
};
struct Grid* init_level(const char* file_path);
int coordonner_vers_indice(int x, int y, struct Grid* grid);
enum CaseType* init_grid(int x, int y);
struct Player* init_player();
struct Grid* new_grid(int x, int y);
struct Grid* init_level(const char* file_path);
enum CaseType get_grid(struct Grid* grid, int x, int y);
int get_goal(struct Grid* grid, int x, int y);
void Affichage_grid(struct Grid* grid);
void change_cell_grid(struct Grid* grid, int x, int y, enum CaseType new_valeur);
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment