From 6705bf9133d72e2a4682ff4bc3e2cffb9300532c Mon Sep 17 00:00:00 2001 From: Hugo LAMY Date: Wed, 15 May 2019 18:05:37 +0200 Subject: [PATCH] version clean sans modulos et divisions pour find_place --- search_map.c | 73 +++++++++++++--------------------------------------- 1 file changed, 18 insertions(+), 55 deletions(-) diff --git a/search_map.c b/search_map.c index daf835a..9574347 100644 --- a/search_map.c +++ b/search_map.c @@ -6,7 +6,7 @@ /* By: hulamy +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/04/27 20:47:22 by hulamy #+# #+# */ -/* Updated: 2019/05/15 17:46:55 by hulamy ### ########.fr */ +/* Updated: 2019/05/15 18:03:41 by hulamy ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,15 +16,12 @@ ** function that look if a tretri fit in a place */ -//unsigned int fit_in_place(unsigned int *map, t_fillist *list, int size, int pos) -unsigned int fit_in_place(unsigned int *map, t_fillist *list, int size, int pos, int number, int place) +unsigned int fit_in_place(unsigned int *map, t_fillist *list, int size, int n, int r) { unsigned int tmp; unsigned int mask; int i; -// /* - (void)pos; unsigned int tetri; i = list->height; tetri = list->tetribit << 16 >> list->width; @@ -34,29 +31,13 @@ unsigned int fit_in_place(unsigned int *map, t_fillist *list, int size, int pos, { if (tmp & tetri) return (0); - if (place >= 32 && ++number) - place -= 32; - tmp = (mask & (map[number] << place)) | (mask & (map[number + 1] >> (32 - place))); + if (r >= 32 && ++n) + r -= 32; + tmp = (mask & (map[n] << r)) | (mask & (map[n + 1] >> (32 - r))); tetri <<= list->width; - place += size; + r += size; } return (!(tmp & tetri)); -// */ - - /* - (void)place; - (void)number; - mask = ~0u << (32 - list->width); - i = (list->height - 1) * size + pos; - tmp = 0; - while (i >= pos) - { - tmp >>= list->width; - tmp |= (mask & (map[i / 32] << i)) | (mask & (map[(i / 32) + 1] >> (32 - i))); - i -= size; - } - return (!((tmp >> 16) & list->tetribit)); - */ } /* @@ -65,48 +46,30 @@ unsigned int fit_in_place(unsigned int *map, t_fillist *list, int size, int pos, int find_place(unsigned int *tab, t_fillist *list, int size, int pos) { -// /* - int row; // designe la position de size*size sur la ligne du tableau - int number; // designe la position de pos dans l'int du tableau - int place; // designe dans quel int tu tableau pos se trouve + int place; // designe la position sur la ligne du tableau de size*size + int r; // designe la position de pos dans l'int du tableau + int n; // designe dans quel int tu tableau pos se trouve int limit; // limit en hauteur du tableau a chercher pour la position du tetri - row = pos % size; - place = pos % 32; - number = pos / 32; + place = pos % size; + r = pos % 32; + n = pos / 32; limit = (size - list->height + 1) * size; while (pos < limit) { - if (place >= 32 && ++number) - place -= 32; -// if (place != (pos % 32) || number != (pos / 32)) // pour verifier que place et number sont bien implementes -// ft_putendl("error"); - if (row > size - list->width && (row = -1)) + if (r >= 32 && ++n) + r -= 32; + if (place > size - list->width && (place = -1)) { pos += list->width - 2; - place += list->width - 2; + r += list->width - 2; } - else if (fit_in_place(tab, list, size, pos, number, place)) + else if (fit_in_place(tab, list, size, n, r)) return (pos + 1); pos++; - row++; place++; + r++; } -// */ - - /* - // boucle jusqu'a la dernier place pour le tetri dans la map ou qu'il entre dans un trou - while (pos < (size - list->height + 1) * size) - { - // pour ne pas deborder a droite de la map - if (pos % size > size - list->width) - pos += list->width - 2; - else if (fit_in_place(tab, list, size, pos)) - return (pos + 1); - pos++; - } - */ - return (0); }