From b93eebc9beccc565eb0de879c7ad6b59f5927b55 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Sun, 28 Aug 2016 20:23:22 +0200 Subject: [PATCH] av[1] parsing, doesnt compile yet --- fillit/includes/fillit.h | 15 +++++++- fillit/lib/libft | 2 +- fillit/src/main.c | 81 +++++++++++++++++++++++++++++++++++++++- 3 files changed, 94 insertions(+), 4 deletions(-) diff --git a/fillit/includes/fillit.h b/fillit/includes/fillit.h index 699619ae..a60e8739 100644 --- a/fillit/includes/fillit.h +++ b/fillit/includes/fillit.h @@ -1 +1,14 @@ -#include "libft.h" +#ifndef FILLIT_H +# include "libft.h" +# define FILLIT_H +# define BUF_SIZE 32 + + +typedef struct s_tetrim +{ + char id; + int pos[3][2]; + int placed; +} t_tetrim; + +#endif diff --git a/fillit/lib/libft b/fillit/lib/libft index 36afd3d0..5d24c020 160000 --- a/fillit/lib/libft +++ b/fillit/lib/libft @@ -1 +1 @@ -Subproject commit 36afd3d0ebf5258b9201fcbba8272e94b0b60df7 +Subproject commit 5d24c020c6563f8d7eb78bdcb18e61f28aa0d435 diff --git a/fillit/src/main.c b/fillit/src/main.c index b580fcfc..7de69b58 100644 --- a/fillit/src/main.c +++ b/fillit/src/main.c @@ -5,13 +5,90 @@ void ft_usage(void) ft_putendl("error"); } +t_list *ft_get_tetrims(char *filename) +{ + int fd; + char buf[BUF_SIZE + 1]; + int i; + int j; + int k; + int ref[2]; + char letter = 'A'; + t_tetrim tetrim; + t_list *tetrims; + + fd = open(filename); + if (fd == -1) + return (0); + j = -1; + k = 0; + while ((ret = read(fd, buf, BUF_SIZE))) + { + ret[BUF_SIZE] = '\0'; + i = 0; + while (ret[i]) + { + if (ret[i] == '.') + ; + else if (ret[i] == '#') + { + if (j == -1) + { + tetrim.id = letter++; + ref[0] = k / 5; + ref[1] = k % 5; + } + else if (j >= 0 && j <= 2) + { + (tetrim.pos)[j][0] = i / 5 - ref[0]; + (tetrim.pos)[j][1] = i % 5 - ref[1]; + } + else + return (0); + j++; + } + else if (i > 0 && ret[i] == '\n' && ret[i - 1] == '\n') + { + if (j != 3 || k != 20) + return (0); + ft_lstadd(&tetrims, ft_lstnew(tetrim, sizeof(tetrim))); + j = -1; + k = -1; + } + else if (ret[i] == '\n') + { + if ((k + 1) % 5 != 0) + return (0); + } + else + return (0); + i++; + k++; + } + } + if (j != 3 || k != 20) + return (0); + ft_lstadd(&tetrims, ft_lstnew(tetrim, sizeof(tetrim))); + return (tetrims); +} + int main(int ac, char **av) { - (void)av; - if (ac != 2) + t_list *tetrims; + int i; + + if (ac != 2 || !(tetrims = ft_get_tetrims(av[1]))) { ft_usage(); return (1); } + while (tetrims) + { + printf("%c", tetrims->content.id); + for (i=0; i<=3; i++) + printf("\t%i,%i\n", tetrims->content.pos[i][0], tetrims->content.pos[i][1]); + ft_putendl(""); + tetrims = tetrims->next; + } return (0); }