-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathread_file.c
executable file
·88 lines (81 loc) · 2.15 KB
/
read_file.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* read_file.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: obelouch <OB-96@hotmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2018/11/07 01:47:16 by obelouch #+# #+# */
/* Updated: 2018/11/07 01:50:25 by obelouch ### ########.fr */
/* */
/* ************************************************************************** */
#include "tetris.h"
int ft_validate_tetris(char **tet, int *pound)
{
int ind[3];
ind[2] = 0;
ind[0] = 0;
while (tet[ind[0]])
{
ind[1] = 0;
while (tet[ind[1]])
{
if (tet[ind[0]][ind[1]] == '#' && ++(*pound))
{
if (ind[0] < 3 && tet[ind[0] + 1][ind[1]] == '#')
ind[2] += 1;
if (ind[0] > 0 && tet[ind[0] - 1][ind[1]] == '#')
ind[2] += 1;
if (ind[1] < 3 && tet[ind[0]][ind[1] + 1] == '#')
ind[2] += 1;
if (ind[1] > 0 && tet[ind[0]][ind[1] - 1] == '#')
ind[2] += 1;
}
ind[1]++;
}
ind[0]++;
}
return (ind[2]);
}
char **ft_read_tetriminos(char *buff)
{
int r;
int i[2];
char **block;
block = (char**)malloc(sizeof(char*) * 5);
block[4] = 0;
i[0] = -1;
r = 0;
while (++i[0] < 4)
{
block[i[0]] = (char*)malloc(sizeof(char) * 5);
i[1] = -1;
while (++i[1] < 4)
{
if (buff[r] == '\n')
r++;
block[i[0]][i[1]] = buff[r++];
}
block[i[0]][i[1]] = '\0';
}
return (block);
}
int ft_read(int fd)
{
char buff[BUFF_SIZE];
int count;
int pound;
count = 0;
while (read(fd, buff, BUFF_SIZE) >= 0)
{
pound = 0;
count = ft_validate_tetris(ft_read_tetriminos(buff), £);
if (pound > 4)
return (0);
if (count != 6 && count != 8)
return (0);
if (read(fd, buff, 1) == 0)
break ;
}
return (1);
}