/* 
Lab 4 
CNIT 315 - Fall 21 
Created by: Ben Paglia 
Email: bpaglia@purdue.edu 
Lab: 11:30 Friday 
This is program creates a maze using a 2 dimensional array.  The maze has a designated start and end position. The program then uses recursive functions to find a path through the maze from the start to the end points. 
*/ 
 
 
#include <stdio.h> 
#define HEIGHT 6 
#define WIDTH 6 
char  maze [ HEIGHT]  [ WIDTH]   =  {  	{ 'S' , '#' , '#' , '#' , '#' , '#' } ,  
					{ '.' , '.' , '.' , '.' , '.' , '#' } ,  
					{ '#' , '.' , '#' , '#' , '#' , '#' } ,  
					{ '#' , '.' , '#' , '#' , '#' , '#' } ,  
					{ '.' , '.' , '.' , '#' , '.' , 'G' } ,  
					{ '#' , '#' , '.' , '.' , '.' , '#' } } ; 
 
int  possible; 
int  main( ) 
{ 
 
 
	void  mazeGo( int ,  int  ) ; 
 
	mazeGo( 0 ,  0 ) ; 
	return  0 ; 
} 
 
void  mazeGo( int  y,  int  x ) 
{ 
char  surrounding [ 4 ]  =  { ' ' , ' ' , ' ' , ' ' } ; 
int  North,  South,  East,  West; 
North =  y- 1 ; 
South =  y+ 1 ; 
East =  x+ 1 ; 
West =  x- 1 ; 	
	if  ( North >  0 ) { 
	surrounding [ 0 ]  =  maze [ North]  [ x] ;  //North 
	} 
	else  { surrounding [ 0 ]  =  '#' ; } 
	if  ( East <  WIDTH) { 
	surrounding [ 1 ]  =  maze [ y]  [ East] ;  //East 
	} 
	else  { surrounding [ 1 ]  =  '#' ; } 
	if  ( South <  HEIGHT) { 
	surrounding [ 2 ]  =  maze [ South]  [ x] ;  //South 
	} 
	else  { surrounding [ 2 ]  =  '#' ; } 
	if  ( West >  0 ) { 
	surrounding [ 3 ]  =  maze [ y]  [ West] ;  //West 
	} 
	else  { surrounding [ 3 ]  =  '#' ; } 
	possible =  0 ; 
	/* 
	if (maze [y] [x] == '.' || '+') 
		{ 
		for (int a=0; a<4; a++) 
			{ 
			if (surrounding [a] == '.') 
				{ 
				possible = 1; 
				} 
			} 
		} 
		if (possible == 1) 
		{ 
		maze [y] [x] = '+'; 
		} 
		else  
		{ 
		maze [y] [x] = '@'; 
		} 
	*/ 	
 
	if  ( maze [ y]  [ x]  ==  'G' ) 
	{  for  ( int  i= 0 ;  i< HEIGHT;  i++  ) 
		{ 
		for  ( int  w= 0 ;  w< WIDTH;  w++ ) 
			{ 
			} 
		} 
		return ; 
	} 
 
	else 
	{ 
	if  ( surrounding [ 1 ]  !=  '#'  ||  '@'  &&  East <  WIDTH ) { 
		mazeGo( y,  East) ; //East 
		} 
	else  if  ( surrounding [ 2 ]  !=  '#'  ||  '@'  &&  South <  HEIGHT) { 
		mazeGo( South,  x) ; //South 
		} 
	else  if  ( surrounding [ 3 ]  !=  '#'  ||  '@'  &&  West <  WIDTH) { 	
		mazeGo( y,  West) ; //West 
		} 
	else  if ( surrounding [ 0 ]  !=  '#'  ||  '@'  &&  North <  HEIGHT) { 	
		mazeGo( North,  x) ; //North 
		} 
	} 
 
} 
 
				LyoKTGFiIDQKQ05JVCAzMTUgLSBGYWxsIDIxCkNyZWF0ZWQgYnk6IEJlbiBQYWdsaWEKRW1haWw6IGJwYWdsaWFAcHVyZHVlLmVkdQpMYWI6IDExOjMwIEZyaWRheQpUaGlzIGlzIHByb2dyYW0gY3JlYXRlcyBhIG1hemUgdXNpbmcgYSAyIGRpbWVuc2lvbmFsIGFycmF5LiAgVGhlIG1hemUgaGFzIGEgZGVzaWduYXRlZCBzdGFydCBhbmQgZW5kIHBvc2l0aW9uLiBUaGUgcHJvZ3JhbSB0aGVuIHVzZXMgcmVjdXJzaXZlIGZ1bmN0aW9ucyB0byBmaW5kIGEgcGF0aCB0aHJvdWdoIHRoZSBtYXplIGZyb20gdGhlIHN0YXJ0IHRvIHRoZSBlbmQgcG9pbnRzLgoqLwoKCiNpbmNsdWRlIDxzdGRpby5oPgojZGVmaW5lIEhFSUdIVCA2CiNkZWZpbmUgV0lEVEggNgpjaGFyIG1hemUgW0hFSUdIVF0gW1dJRFRIXSAgPSB7IAl7J1MnLCcjJywnIycsJyMnLCcjJywnIyd9LCAKCQkJCQl7Jy4nLCcuJywnLicsJy4nLCcuJywnIyd9LCAKCQkJCQl7JyMnLCcuJywnIycsJyMnLCcjJywnIyd9LCAKCQkJCQl7JyMnLCcuJywnIycsJyMnLCcjJywnIyd9LCAKCQkJCQl7Jy4nLCcuJywnLicsJyMnLCcuJywnRyd9LCAKCQkJCQl7JyMnLCcjJywnLicsJy4nLCcuJywnIyd9fTsKCmludCBwb3NzaWJsZTsKaW50IG1haW4oKQp7CgkKCQoJdm9pZCBtYXplR28oaW50LCBpbnQgKTsKCQoJbWF6ZUdvKDAsIDApOwoJcmV0dXJuIDA7Cn0KCnZvaWQgbWF6ZUdvKGludCB5LCBpbnQgeCApCnsKY2hhciBzdXJyb3VuZGluZyBbNF0gPSB7JyAnLCcgJywnICcsJyAnfTsKaW50IE5vcnRoLCBTb3V0aCwgRWFzdCwgV2VzdDsKTm9ydGggPSB5LTE7ClNvdXRoID0geSsxOwpFYXN0ID0geCsxOwpXZXN0ID0geC0xOwkKCWlmIChOb3J0aCA+IDApewoJc3Vycm91bmRpbmcgWzBdID0gbWF6ZSBbTm9ydGhdIFt4XTsgLy9Ob3J0aAoJfQoJZWxzZSB7c3Vycm91bmRpbmcgWzBdID0gJyMnO30KCWlmIChFYXN0IDwgV0lEVEgpewoJc3Vycm91bmRpbmcgWzFdID0gbWF6ZSBbeV0gW0Vhc3RdOyAvL0Vhc3QKCX0KCWVsc2Uge3N1cnJvdW5kaW5nIFsxXSA9ICcjJzt9CglpZiAoU291dGggPCBIRUlHSFQpewoJc3Vycm91bmRpbmcgWzJdID0gbWF6ZSBbU291dGhdIFt4XTsgLy9Tb3V0aAoJfQoJZWxzZSB7c3Vycm91bmRpbmcgWzJdID0gJyMnO30KCWlmIChXZXN0ID4gMCl7CglzdXJyb3VuZGluZyBbM10gPSBtYXplIFt5XSBbV2VzdF07IC8vV2VzdAoJfQoJZWxzZSB7c3Vycm91bmRpbmcgWzNdID0gJyMnO30KCXBvc3NpYmxlID0gMDsKCS8qCglpZiAobWF6ZSBbeV0gW3hdID09ICcuJyB8fCAnKycpCgkJewoJCWZvciAoaW50IGE9MDsgYTw0OyBhKyspCgkJCXsKCQkJaWYgKHN1cnJvdW5kaW5nIFthXSA9PSAnLicpCgkJCQl7CgkJCQlwb3NzaWJsZSA9IDE7CgkJCQl9CgkJCX0KCQl9CgkJaWYgKHBvc3NpYmxlID09IDEpCgkJewoJCW1hemUgW3ldIFt4XSA9ICcrJzsKCQl9CgkJZWxzZSAKCQl7CgkJbWF6ZSBbeV0gW3hdID0gJ0AnOwoJCX0KCSovCQoJCglpZiAobWF6ZSBbeV0gW3hdID09ICdHJykKCXsgZm9yIChpbnQgaT0wOyBpPEhFSUdIVDsgaSsrICkKCQl7CgkJZm9yIChpbnQgdz0wOyB3PFdJRFRIOyB3KyspCgkJCXsKCQkJcHJpbnRmKCIlYyAiLCBtYXplIFtpXSBbd10pOwoJCQl9CgkJcHJpbnRmKCJcbiIpOwoJCX0KCQlyZXR1cm47Cgl9CgkKCWVsc2UKCXsKCWlmIChzdXJyb3VuZGluZyBbMV0gIT0gJyMnIHx8ICdAJyAmJiBFYXN0IDwgV0lEVEggKXsKCQltYXplR28oeSwgRWFzdCk7Ly9FYXN0CgkJfQoJZWxzZSBpZiAoc3Vycm91bmRpbmcgWzJdICE9ICcjJyB8fCAnQCcgJiYgU291dGggPCBIRUlHSFQpewoJCW1hemVHbyhTb3V0aCwgeCk7Ly9Tb3V0aAoJCX0KCWVsc2UgaWYgKHN1cnJvdW5kaW5nIFszXSAhPSAnIycgfHwgJ0AnICYmIFdlc3QgPCBXSURUSCl7CQoJCW1hemVHbyh5LCBXZXN0KTsvL1dlc3QKCQl9CgllbHNlIGlmKHN1cnJvdW5kaW5nIFswXSAhPSAnIycgfHwgJ0AnICYmIE5vcnRoIDwgSEVJR0hUKXsJCgkJbWF6ZUdvKE5vcnRoLCB4KTsvL05vcnRoCgkJfQoJfQoJCn0=