Advertisement
EliasA

Mazeformeonly

Oct 23rd, 2016
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.83 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <assert.h>
  4.  
  5. char **twoArray(int m, int n) {
  6.     int i;
  7.     char **array = malloc( m * sizeof(char *));
  8.     assert( array != NULL );
  9.     for ( i = 0; i < m; i++ ) {
  10.         array[i] = calloc(n, sizeof(char));
  11.         assert(array[i] != NULL );
  12.     }
  13.     return array;
  14. }
  15.  
  16. void freeArray(int m, char **array) {
  17.     int i;
  18.     for (i = 0; i < m; i++) {
  19.         free(array[i]);
  20.     }
  21.     free(array);
  22. }
  23.  
  24.  
  25. char pathfinder(char **maze, int currentx, int currenty){
  26.    
  27.     if(maze[currentx][currenty] == 'E'){
  28.         return **maze;
  29.     }
  30.     //rechts
  31.     if(maze[currentx][currenty+1] == '.' || maze[currentx][currenty+1] == 'E'){
  32.         currenty = currenty+1;
  33.         maze[currentx][currenty] = '#';
  34.         pathfinder(maze, currentx, currenty);
  35.     }
  36.     //omlaag
  37.     if(maze[currentx+1][currenty] == '.' || maze[currentx+1][currenty] == 'E'){
  38.         currentx = currentx+1;
  39.         maze[currentx][currenty] = '#';
  40.         pathfinder(maze, currentx, currenty);
  41.     }
  42.     //links
  43.     if(maze[currentx][currenty-1] == '.' || maze[currentx][currenty-1] == 'E'){
  44.         currenty = currenty-1;
  45.         maze[currentx][currenty] = '#';
  46.         pathfinder(maze, currentx, currenty);
  47.     }
  48.     //boven
  49.     if(maze[currentx-1][currenty] == '.' || maze[currentx-1][currenty] == 'E'){
  50.         currentx = currentx-1;
  51.         maze[currentx][currenty] = '#';
  52.         pathfinder(maze, currentx, currenty);
  53.     }
  54.  
  55. }
  56.  
  57.  
  58. int main(int argc, char *argv[]){
  59.     int n,m,currentx, currenty;
  60.     scanf("%d %d\n", &n, &m);
  61.     char **maze = twoArray(n,m);
  62.  
  63.     for(int i = 0; i < n; i++){
  64.         for(int j = 0; j < m ; j++){
  65.             scanf("%c", &maze[i][j]);
  66.             if(maze[i][j] == 'S'){
  67.                 currentx = i;
  68.                 currenty = j;
  69.             }
  70.         }
  71.         scanf("\n");
  72.     }
  73.     pathfinder(maze, currentx, currenty);
  74.  
  75.         for(int i = 0; i < n; i++){
  76.         for(int j = 0; j < m ; j++){
  77.             printf("%c", maze[i][j]);
  78.         }
  79.         printf("\n");
  80.     }
  81.    
  82.     return 0;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement