some corrections
This commit is contained in:
parent
677a990d06
commit
a3800b97d2
2 changed files with 30 additions and 13 deletions
42
fillit.c
42
fillit.c
|
@ -21,47 +21,44 @@ void clear_map(t_map *map)
|
||||||
map->line[i++] = 0;
|
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;
|
uint16_t temp;
|
||||||
int i;
|
int i;
|
||||||
int y;
|
int y;
|
||||||
|
int sharp_count;
|
||||||
|
|
||||||
res = (t_tetraminos*)malloc(sizeof(t_tetraminos));
|
map->figure[index].offset = 0;
|
||||||
res->offset_y = 0;
|
sharp_count = 0;
|
||||||
i = 0;
|
i = 0;
|
||||||
y = 1;
|
y = 1;
|
||||||
while (i < 16)
|
while (i < 16 && sharp_count < 4)
|
||||||
{
|
{
|
||||||
temp = 0;
|
temp = 0;
|
||||||
while (i < y * 4)
|
while (i < y * 4)
|
||||||
{
|
{
|
||||||
temp = temp << 1;
|
temp = temp << 1;
|
||||||
if (s[i++] == '#')
|
if (s[i++] == '#' && ++sharp_count)
|
||||||
temp = temp | 0x01;
|
temp = temp | 0x01;
|
||||||
|
|
||||||
}
|
}
|
||||||
temp = temp << 12;
|
temp = temp << 12;
|
||||||
res->line[y - 1] = temp;
|
map->figure[index].line[y - 1] = temp;
|
||||||
y++;
|
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;
|
unsigned int i;
|
||||||
|
|
||||||
map = (t_map*)malloc(sizeof(t_map));
|
|
||||||
i = 0;
|
i = 0;
|
||||||
while (*tetramino_table)
|
while (*tetramino_table)
|
||||||
map->figure[i++] = convert_tetramino(*tetramino_table++);
|
convert_tetramino(*tetramino_table++, map, i++);
|
||||||
map->figure_amount = i;
|
map->figure_amount = i;
|
||||||
map->size = ft_sqrt_ceil(i * 4);
|
map->size = ft_sqrt_ceil(i * 4);
|
||||||
clear_map(map);
|
clear_map(map);
|
||||||
return (map);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void insert_tetramino(t_map *map, int index)
|
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)
|
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);
|
||||||
}
|
}
|
||||||
|
|
1
fillit.h
1
fillit.h
|
@ -3,6 +3,7 @@
|
||||||
typedef struct s_tetraminos
|
typedef struct s_tetraminos
|
||||||
{
|
{
|
||||||
uint16_t line[16];
|
uint16_t line[16];
|
||||||
|
int height;
|
||||||
int offset_y;
|
int offset_y;
|
||||||
} t_tetraminos;
|
} t_tetraminos;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue