Exemplo n.º 1
0
static int		ft_try(t_tetros *tetro, char **map, int size)
{
	if (tetro != NULL)
	{
		while (tetro->x * tetro->y < size * size)
		{
			if ((ft_can_place(tetro, map, size)) == 1)
			{
				map = ft_place(tetro, map);
				if ((ft_try(tetro->next, map, size)) == 1)
					return (1);
				map = ft_delete_tetro(tetro, map, size);
			}
			if (tetro->x < size)
				tetro->x++;
			else
			{
				tetro->y++;
				tetro->x = 0;
			}
		}
		tetro->y = 0;
		tetro->x = 0;
		return (0);
	}
	return (1);
}
Exemplo n.º 2
0
void			change_color(t_mlx *list)
{
	list->color = list->color + 0x0F0F0F;
	mlx_clear_window(list->mlx, list->win);
	mlx_destroy_image(list->mlx, list->link);
	*list = ft_create_image(*list);
	ft_try(*list);
	mlx_put_image_to_window(list->mlx, list->win, list->link,
			list->pos_x_image, list->pos_y_image);
}
Exemplo n.º 3
0
int		resolution(t_letubbies po)
{
	t_mlx	list;

	list = init_mlx(po);
	list.lp = put_gap_lpoint(list);
	ft_try(list);
	mlx_hook(list.win, 2, 1, key_hook, &list);
	mlx_mouse_hook(list.win, mouse_hook, &list);
	mlx_put_image_to_window(list.mlx, list.win, list.link,
			list.pos_x_image, list.pos_y_image);
	mlx_loop(list.mlx);
	return (0);
}
void			*ft_alg(void *p)
{
    t_env		*e;
    int			i;

    e = (t_env *)p;
    i = e->id;
    while (e->roll != 3)
    {
        never_die(e, i);
        if (!ft_strcmp(e->state[NEXT(i)], THINK) &&
                !ft_strcmp(e->state[PREV(i)], THINK))
            try_both(e, i);
        else if (TRY(&e->lock[FI]) == 0)
            ft_try(e, FI, NI, i);
        else if (TRY(&e->lock[NI]) == 0)
            ft_try(e, NI, FI, i);
        else
            ft_rest(e, i, 0);
    }
    if (pthread_detach(e->th[i]))
        ft_putendl("Error while detaching thread");
    return (p);
}
Exemplo n.º 5
0
void			ft_solve(t_tetros *tetro, int nb_tetros)
{
	char	**map;
	int		size;

	size = nb_tetros / 2;
	map = ft_gen_map(size);
	ft_adj_tetro(tetro);
	while (ft_try(tetro, map, size) == 0)
	{
		tetro->x = 0;
		tetro->y = 0;
		size++;
		ft_free_tetros(map, size);
		map = ft_gen_map(size);
	}
	ft_print_map(map);
}