116 lines
2.6 KiB
C
116 lines
2.6 KiB
C
/* ************************************************************************** */
|
|
/* */
|
|
/* ::: :::::::: */
|
|
/* ft_get_struct.c :+: :+: :+: */
|
|
/* +:+ +:+ +:+ */
|
|
/* By: gbrochar <marvin@42.fr> +#+ +:+ +#+ */
|
|
/* +#+#+#+#+#+ +#+ */
|
|
/* Created: 2016/01/08 18:32:49 by gbrochar #+# #+# */
|
|
/* Updated: 2016/02/25 11:35:48 by fanno ### ########.fr */
|
|
/* */
|
|
/* ************************************************************************** */
|
|
|
|
#include "fillit.h"
|
|
|
|
char **ft_allocate_types(void)
|
|
{
|
|
char **types;
|
|
int i;
|
|
|
|
i = 0;
|
|
types = (char **)malloc(20 * sizeof(char *));
|
|
while (i != 20)
|
|
types[i++] = ft_strnew(20);
|
|
return (types);
|
|
}
|
|
|
|
char **ft_create_types(void)
|
|
{
|
|
char **types;
|
|
|
|
types = ft_allocate_types();
|
|
types[0] = "#....#....#....#";
|
|
types[1] = "####";
|
|
types[2] = "##...##";
|
|
types[3] = "###...#";
|
|
types[4] = "#...##....#";
|
|
types[5] = "#...###";
|
|
types[6] = "#....##...#";
|
|
types[7] = "##..##";
|
|
types[8] = "#....##....#";
|
|
types[9] = "##....##";
|
|
types[10] = "#...##...#";
|
|
types[11] = "#....#....##";
|
|
types[12] = "###..#";
|
|
types[13] = "##....#....#";
|
|
types[14] = "#..###";
|
|
types[15] = "#....#...##";
|
|
types[16] = "#....###";
|
|
types[17] = "##...#....#";
|
|
types[18] = "###....#";
|
|
types[19] = NULL;
|
|
return (types);
|
|
}
|
|
|
|
t_tetromino *ft_create_tiles(void)
|
|
{
|
|
t_tetromino *tiles;
|
|
int i;
|
|
|
|
i = 0;
|
|
tiles = (t_tetromino *)malloc(26 * sizeof(t_tetromino));
|
|
while (i != 26)
|
|
{
|
|
tiles[i].type = -1;
|
|
tiles[i].x = 0;
|
|
tiles[i++].y = 0;
|
|
}
|
|
return (tiles);
|
|
}
|
|
|
|
void ft_replace_linefeed(char **tiles)
|
|
{
|
|
int i;
|
|
int i2;
|
|
|
|
i = 0;
|
|
while (tiles[i])
|
|
{
|
|
i2 = 0;
|
|
while (tiles[i][i2])
|
|
{
|
|
if (tiles[i][i2] == '\n' && i2 != 20)
|
|
tiles[i][i2] = '.';
|
|
i2++;
|
|
}
|
|
i++;
|
|
}
|
|
}
|
|
|
|
t_tetromino *ft_get_struct(char **tiles)
|
|
{
|
|
char **types;
|
|
t_tetromino *t_tiles;
|
|
int i;
|
|
int i_types;
|
|
|
|
ft_replace_linefeed(tiles);
|
|
types = ft_create_types();
|
|
t_tiles = ft_create_tiles();
|
|
i = 0;
|
|
while (tiles[i])
|
|
{
|
|
i_types = 0;
|
|
while (types[i_types])
|
|
if (ft_strstr_binary(tiles[i], types[i_types++]) == 1)
|
|
{
|
|
t_tiles[i].type = i_types - 1;
|
|
break ;
|
|
}
|
|
if (t_tiles[i].type == -1)
|
|
return (NULL);
|
|
i++;
|
|
}
|
|
return (t_tiles);
|
|
}
|