so_long/games/map2.c
Etienne Rey-bethbeder 972031a1f4 Finish
2023-01-09 20:17:34 +01:00

82 lines
2.1 KiB
C

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* map2.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: erey-bet <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/01/06 19:06:48 by erey-bet #+# #+# */
/* Updated: 2023/01/06 19:06:51 by erey-bet ### ########.fr */
/* */
/* ************************************************************************** */
#include "../so_long.h"
int init_fd_map(char *argv[], char **tmp_map, char **map, int *i)
{
int fd;
fd = open(argv[1], O_RDONLY);
if (fd == -1)
return (-1);
*tmp_map = NULL;
*map = NULL;
*i = 0;
return (fd);
}
void read_map(char *argv[], t_data *data)
{
char *tmp_map;
char *map;
int i;
int fd;
i = ft_strlen(argv[1]);
if (argv[1][i - 1] != 'r' || argv[1][i - 2] != 'e' ||
argv[1][i - 3] != 'b' || argv[1][i - 4] != '.')
return ;
fd = init_fd_map(argv, &tmp_map, &map, &i);
if (fd == -1)
return ;
while (i == 0 || tmp_map != NULL)
{
tmp_map = get_next_line(fd);
if (tmp_map && map)
map = ft_strjoin_free(map, tmp_map, 1);
else if (tmp_map)
map = ft_strdup(tmp_map);
free(tmp_map);
i++;
}
data->map = ft_split(map, '\n');
data->h_map = i - 1;
free(map);
}
int too_much(t_data *data)
{
int i;
int y;
int nb;
nb = 0;
i = -1;
while (data->map[++i])
{
y = -1;
while (data->map[i][++y])
{
if (data->map[i][y] != 'P' && data->map[i][y] != '1'
&& data->map[i][y] != 'C' && data->map[i][y] != 'E'
&& data->map[i][y] != '0')
return (0);
if (data->map[i][y] == 'P' || data->map[i][y] == 'E')
nb++;
}
}
if (nb > 2)
return (0);
return (1);
}