/*
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=