Skip to content
Snippets Groups Projects
grid.c 1.75 KiB
Newer Older
#include "grid.h"
#include <stdlib.h>
#include <stdio.h>

int coordonner_vers_indice(int x, int y, struct Grid* grid)
{
	return((y * grid->column_number)+ x);
}


void init_level(const char* file_path){
	// ouverture du fichier en mode lecture
	FILE* file = fopen(file_path, "r");
	if(!file){
		fprintf(stderr, "Error %s not found", file_path);
		exit(-1);
	}
	char line[100] = {0};
	int number_column = 0; // nombre de colonne
	int number_row = 0; /// nombre de ligne
	int number_goals = 0;
	// on lit la première ligne du fichier
	fgets(line, 100, file);
	sscanf(line, "%d %d %d", &number_column, &number_row, &number_goals);
	int current_row = 0;
	// On lit le fichier ligne par ligne jusqu'à la fin du fichier
	while(fgets(line, 100, file) != NULL){
		char* buffer = line;
		int current_column = 0;
		while(*buffer && *buffer != '\n'){
			current_column += 1;
AIGLE STIVEN's avatar
AIGLE STIVEN committed
			buffer += 1;
		}		
		current_row += 1;
	}
	// fermeture du fichier
	fclose(file);
}

enum CaseType* initialisation_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++)
	{
		new_grid[i] = NONE;
	}
	return new_grid;
}

struct Grid* grid_new(int x, int y)
{
	struct Grid * new_strut_grid = NULL;
	new_strut_grid = (struct Grid *) malloc(1 * sizeof(struct Grid *));
	enum CaseType* new_grid = initialisation_grid(x, y);
	new_strut_grid->column_number=x;
	new_strut_grid->row_number= y;
	new_strut_grid->game_grid = new_grid;
	return new_strut_grid;	
}

enum CaseType get_grid(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)];
	}
	else{return -1;}