-
Notifications
You must be signed in to change notification settings - Fork 0
/
resolve.c
executable file
·71 lines (65 loc) · 2.04 KB
/
resolve.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
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* resolve.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: vcaquant <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2015/12/17 14:51:06 by vcaquant #+# #+# */
/* Updated: 2016/01/22 21:05:39 by vcaquant ### ########.fr */
/* */
/* ************************************************************************** */
#include "fillit.h"
int put_tetri(t_tetri *tab, char square[26][27], int pos, t_var *var)
{
int nbsharp_put;
nbsharp_put = 0;
init_put_tetri(tab, var, pos);
while (nbsharp_put != 4)
{
if (nbsharp_put == 1)
put_tetri_one(tab, var);
else if (nbsharp_put == 2)
put_tetri_two(tab, var);
else if (nbsharp_put == 3)
put_tetri_three(tab, var);
if (square[var->y][var->x] == '.' || nbsharp_put == 0)
square[var->y][var->x] = tab[pos].name;
else
{
cor_error(tab, square, var->pos, nbsharp_put);
return (0);
}
nbsharp_put++;
}
return (1);
}
void parsingv3(char square[26][27], t_tetri *tab, int nbtetri, t_var *var)
{
inityx(var);
var->pos = 0;
while (var->pos != nbtetri)
{
if (trytoput(square, tab, var))
var->pos++;
else if (var->pos > 0)
{
var->pos--;
cor_error(tab, square, var->pos, 4);
while (trytoputprev(square, tab, var) && var->pos > 0)
{
var->pos--;
cor_error(tab, square, var->pos, 4);
}
}
}
display_result(square, var);
}
void resolve(t_tetri *tab, t_var *var, int nbtetri)
{
char square[26][27];
initab(square);
smallest(nbtetri, var);
chgsmall(square, 0, var);
parsingv3(square, tab, nbtetri, var);
}