Advertisement
Guest User

Untitled

a guest
Jul 28th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.52 KB | None | 0 0
  1. /* ************************************************************************** */
  2. /*                                                                            */
  3. /*                                                        :::      ::::::::   */
  4. /*   findbsq.c                                          :+:      :+:    :+:   */
  5. /*                                                    +:+ +:+         +:+     */
  6. /*   By: mtsouria <marvin@42.fr>                    +#+  +:+       +#+        */
  7. /*                                                +#+#+#+#+#+   +#+           */
  8. /*   Created: 2016/07/26 20:53:05 by mtsouria          #+#    #+#             */
  9. /*   Updated: 2016/07/27 21:09:42 by mtsouria         ###   ########.fr       */
  10. /*                                                                            */
  11. /* ************************************************************************** */
  12.  
  13. #include "libbsq.h"
  14.  
  15. bsq         *createbsq(void)
  16. {
  17.     bsq     *node;
  18.  
  19.     if (!(node = malloc(sizeof(bsq))))
  20.         return (0);
  21.     else
  22.     {
  23.         node->nbr = 0;
  24.         node->x = 0;
  25.         node->y = 0;
  26.     }
  27.     return (node);
  28. }
  29.  
  30. void        store_bsq(int **map, int x, int y, bsq *node)
  31. {
  32.     if (map[y][x] > node->nbr)
  33.     {
  34.         node->nbr = map[y][x];
  35.         node->x = x;
  36.         node->y = y;
  37.     }
  38. }
  39.  
  40. void        print_bsq(int **map, t_legend *legend, bsq *node)
  41. {
  42.     int     x;
  43.     int     y;
  44.  
  45.     x = 0;
  46.     y = 0;
  47.     while (y < legend->height)
  48.     {
  49.         while (x < legend->length)
  50.         {
  51.             if (x > (node->x - node->nbr) && x <= node->x
  52.                     && y > (node->y - node->nbr) && y <= node->y)
  53.                 ft_putchar(legend->full);
  54.             else if (map[y][x] == 0)
  55.                 ft_putchar(legend->obstacle);
  56.             else
  57.                 ft_putchar(legend->empty);
  58.             x++;
  59.         }
  60.         ft_putchar('\n');
  61.         free(*map);
  62.         x = 0;
  63.         y++;
  64.     }
  65.     free(map);
  66. }
  67.  
  68. void        ft_if_empty(int **map, bsq *node, int x, int y)
  69. {
  70.     if (x < 1 || y < 1)
  71.         map[y][x] = 1;
  72.     else
  73.     {
  74.         map[y][x] = map[y - 1][x - 1];
  75.         if ((map[y - 1][x]) < map[y][x])
  76.             map[y][x] = map[y - 1][x];
  77.         if ((map[y][x - 1]) < map[y][x])
  78.             map[y][x] = map[y][x - 1];
  79.         map[y][x]++;
  80.     }
  81.     store_bsq(map, x, y, node);
  82. }
  83.  
  84. void        find_bsq(int **map, t_list *head, t_legend *legend, bsq *node)
  85. {
  86.     t_list      *list;
  87.     int         x;
  88.     int         y;
  89.  
  90.     x = 0;
  91.     y = 0;
  92.     list = head;
  93.     while (list && node && map && *map && y < legend->height)
  94.     {
  95.         while (x < legend->length)
  96.         {
  97.             if (list->data == legend->obstacle)
  98.                 map[y][x] = 0;
  99.             if (list->data == legend->empty)
  100.                 ft_if_empty(map, node, x, y);
  101.             x++;
  102.             list = list->next;
  103.         }
  104.         list = list->next;
  105.         y++;
  106.         x = 0;
  107.     }
  108.     print_bsq(map, legend, node);
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement