42-archive/42-piscine-c/bsq_magouin/solver.c
2016-08-25 20:50:28 +02:00

108 lines
2.2 KiB
C

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* solver.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: magouin <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2015/07/28 19:16:21 by magouin #+# #+# */
/* Updated: 2015/07/30 21:17:03 by jcamhi ### ########.fr */
/* */
/* ************************************************************************** */
#include "ft_io.h"
void make_cadre(int **tab, int target, int longeur, int hauteur)
{
int a;
int b;
a = target;
b = target;
while (a < longeur - target)
{
tab[b][a] = target + 1;
a++;
}
a--;
while (b < hauteur - target)
{
tab[b][a] = target + 1;
b++;
}
b--;
while (--a >= target)
tab[b][a] = target + 1;
a++;
while (--b >= target)
tab[b][a] = target + 1;
}
void affiche(int **tab, char *block)
{
int x;
int y;
y = 0;
while (y < g_dimension[0])
{
x = 0;
while (x < g_dimension[1])
{
if (tab[y][x] == 0)
write(1, block + 2, 1);
else if (tab[y][x] == -1)
write(1, block + 1, 1);
else
write(1, block, 1);
x++;
}
write(1, "\n", 1);
y++;
}
}
void print_result(int **tab, int *max, char *block)
{
int x;
int y;
max[2]--;
y = max[1] - max[2];
while (y <= max[1] + max[2] + max[3])
{
x = max[0] - max[2];
while (x <= max[0] + max[2] + max[3])
{
tab[y][x] = -1;
x++;
}
y++;
}
affiche(tab, block);
}
void percolation(int **tab, int x, int y)
{
tab[y][x] = 0;
if (x != 0)
{
tab[y][x] = 1;
recursifg(tab, x, y, 0);
}
if (x != g_dimension[1] - 1)
{
tab[y][x] = 1;
recursifd(tab, x, y, 0);
}
if (y != 0)
{
tab[y][x] = 1;
recursifh(tab, x, y, 0);
}
if (y != g_dimension[0] - 1)
{
tab[y][x] = 1;
recursifb(tab, x, y, 0);
}
}