From a3800b97d2bd1e2713a340dc32de84e1b870b9a1 Mon Sep 17 00:00:00 2001 From: Kolomiets Yaroslav Date: Wed, 14 Dec 2016 17:18:34 +0200 Subject: [PATCH] some corrections --- fillit.c | 42 +++++++++++++++++++++++++++++------------- fillit.h | 1 + 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/fillit.c b/fillit.c index 2d12a69..f475521 100644 --- a/fillit.c +++ b/fillit.c @@ -21,47 +21,44 @@ void clear_map(t_map *map) map->line[i++] = 0; } -t_tetraminos *convert_tetramino(char *s) +void convert_tetramino(char *s, t_map *map, int index) { - t_tetraminos *res; uint16_t temp; int i; int y; + int sharp_count; - res = (t_tetraminos*)malloc(sizeof(t_tetraminos)); - res->offset_y = 0; + map->figure[index].offset = 0; + sharp_count = 0; i = 0; y = 1; - while (i < 16) + while (i < 16 && sharp_count < 4) { temp = 0; while (i < y * 4) { temp = temp << 1; - if (s[i++] == '#') + if (s[i++] == '#' && ++sharp_count) temp = temp | 0x01; } temp = temp << 12; - res->line[y - 1] = temp; + map->figure[index].line[y - 1] = temp; y++; } - return (res); + map->figure[index].height = y - 1; } -t_map *map_initialization(char **tetramino_table) +void map_initialization(char **tetramino_table, t_map *map) { - t_map *map; unsigned int i; - map = (t_map*)malloc(sizeof(t_map)); i = 0; while (*tetramino_table) - map->figure[i++] = convert_tetramino(*tetramino_table++); + convert_tetramino(*tetramino_table++, map, i++); map->figure_amount = i; map->size = ft_sqrt_ceil(i * 4); clear_map(map); - return (map); } void insert_tetramino(t_map *map, int index) @@ -97,6 +94,25 @@ void erase_tetramino(t_map *map, int index) } } +void shift_tetramino(t_map *map, int index) +{ + //сделаю сдвиг фигуры вправо, если дошли до границы, то перемещу в начало следующего ряд и т.д. +} + void algorithm(t_map *map) { + //тут у меня сейчас трабл с рекурсией + //не могу пока написать что-то годное +} + +int main() +{ + t_map map; + char** table; + + table = read_from_file(); + map_initialization(table, &map); + algoritm(&map); + print_result(&map); + return (0); } diff --git a/fillit.h b/fillit.h index b2f33b5..a60583d 100644 --- a/fillit.h +++ b/fillit.h @@ -3,6 +3,7 @@ typedef struct s_tetraminos { uint16_t line[16]; + int height; int offset_y; } t_tetraminos;