예제 #1
0
파일: line_fct.c 프로젝트: kasou/lem-in
int				seek_step_line(char *line, t_map *map)
{
	if (map->step == 0)
	{
		if (is_nbr_ant(line))
			save_nbr_ant(ft_atoi(line), map);
		else
			return (0);
	}
	else if (map->step == 1)
	{
		if (is_room(line))
			save_room(line, map);
		else
			return (0);
	}
	else if (map->step == 2)
	{
		if (is_link(line))
			save_link(line, map);
		else
			return (0);
	}
	return (1);
}
예제 #2
0
void		get_rooms(t_env *env)
{
	t_args		*tmp;
	char		start;
	char		end;
	t_args		*prev;

	tmp = env->a_start;
	while (tmp)
	{
		if (start != 1 && tmp != env->a_start)
			start = is_start(prev);
		if (end != 1 && tmp != env->a_start)
			end = is_end(prev);
		if (is_room(tmp, env, 1) != -1)
		{
			add_room(env, ft_strsplit(tmp->data, ' '), start, end);
			start = 0;
			end = 0;
		}
		else if (is_command(tmp) != 1 && is_com(tmp) != 1 && \
		is_ants(tmp, env) != 1)
			break ;
		prev = tmp;
		tmp = tmp->next;
	}
}
예제 #3
0
파일: init_frmlr.c 프로젝트: kizdolf/Lem-in
int			nb_rooms(char **entry)
{
	int		i;
	int		nb;

	i = 0;
	nb = 0;
	while (entry[i])
	{
		if (is_room(entry[i++]))
			nb++;
	}
	return (nb);
}
예제 #4
0
int			check_room(t_lem_env *env, char *s)
{
	if (is_link(s) && env->fonction[env->r.state + 1](env, s))
		return (ft_add_state(env));
	if (ft_strcmp("##start", s) == 0 && check_start(env, s))
		return (1);
	if (ft_strcmp("##end", s) == 0 && check_end(env, s))
		return (1);
	if (is_room(s) && add_room(env, s))
	{
		env->r.nbline += add_file(env, s);
		return (1);
	}
	return (ft_error(env, 1));
}
예제 #5
0
파일: parse.c 프로젝트: jwalle/lemin
static int	get_start(t_env *e)
{
	int		ret;
	char	*tmp;

	if ((ret = (get_next_line(0, &tmp)) > 0))
	{
		if (is_room(tmp))
		{
			e->rooms = ft_lst_push(e->rooms, stock_room(tmp, e, START));
			free(tmp);
			return (1);
		}
	}
	return (ft_putstr_error("Error, Wrong format for starting room.\n"));
}
예제 #6
0
파일: line_fct.c 프로젝트: kasou/lem-in
int				is_invalid_line(char *line, t_map *map)
{
	if (is_empty_line(line))
		return (1);

	/*if (is_comment(line) == 0)
	{
		printf("pas un comment  ");
		if (is_attribute(line, map) == 0)
		{
			printf("pas un attr  ");
			if (is_room(line) == 0)
			{
				printf("pas une room  ");
				if (is_link(line) == 0)
				{
					printf("pas un link  ");
					if (is_nbr_ant(line) == 0)
					{
						printf("pas le nb de fourmi\n");
						return (1);
					}
					else
						printf("c le nb fourmi\n");
				}
				printf("c un link  ");
				return (0);
			}
			printf("c une rooom  ");
			return (0);
		}
		printf("c un attr  ");
		return (0);
	}
	printf("c un comment  ");
	return (0);*/
	return (!is_comment(line) && !is_attribute(line, map) && !is_room(line)
			&& !is_link(line) && !is_nbr_ant(line));
}
예제 #7
0
파일: parse.c 프로젝트: jwalle/lemin
int			parse(t_env *e, char *line, int ret)
{
	(void)ret;
	if (line[0] == '#')
	{
		if (line[1] == '#')
			return (start_end(&(line[2]), e));
		else
			return (1);
	}
	else if (ft_isalnum(line[0]))
	{
		if (is_room(line))
			e->rooms = ft_lst_push(e->rooms, stock_room(line, e, NORMAL));
		else if (is_tube(line))
			e->tubes = ft_lst_push(e->tubes, stock_tube(line));
		else
			return (0);
	}
	else
		return (0);
	return (1);
}