#include #define BOARDSIZE 50 #define PIXPATH PixPath #define PIXEXT PixExt char board[BOARDSIZE][BOARDSIZE]; int markup[BOARDSIZE][BOARDSIZE]; char PixPath [10] = "PGM"; char PixExt [10] = "pgm"; void PrintMaze() { int row,col; for (row = 0; row < 20; row++) { for (col = 0; col < 20; col++) { printf("%c",board[row][col]); } } printf("\n"); } void SetInside(int depth, int row, int col) { if (markup[row][col] == 1 || row<0 || row >= BOARDSIZE || col<0 || col >= BOARDSIZE) return; markup[row][col] = 1; if (board[row][col] != ' ' && board[row][col] != '#') { if (board[row][col] == '~') board[row][col] = ' '; SetInside(depth+1,row+1,col); SetInside(depth+1,row-1,col); SetInside(depth+1,row,col+1); SetInside(depth+1,row,col-1); } } int main(int argc, char **argv) { char sq,ch[2000],fname[5]; int row,col,i,on; int maxcol; int Numbers,Color,Border; int manrow,mancol; Numbers = Color = Border = 1; for (i=1; itcshfile\n"); exit(1); } } row = col = maxcol = 0; while ( (sq = getc(stdin)) != EOF) { board[row][col] = sq; switch (sq) { case '\n': if (col>maxcol) maxcol=col; col = 0; row++; break; case '+': case '@': manrow = row; mancol = col; col++; break; case ' ': board[row][col] = '~'; col++; break; default: col++; } } board[row][col] = EOF; memset(markup,0,sizeof(int)*BOARDSIZE*BOARDSIZE); SetInside(0,manrow,mancol); /* create letters on top */ if (Border) { printf("pnmcat -lr %s/outside.%s",PIXPATH,PIXEXT); for (col=0; col %02d.row\n",row); if (board[row][0]!='\n') { if (Border) printf("pnmcat -lr %s/%c.%s", PIXPATH, 'a'+row, PIXEXT); else printf("pnmcat -lr "); } else { break; } for (col=0; col0 && board[row-1][col]=='#') fname[0] = 'N'; else fname[0] = 'n'; if (col0 && board[row][col-1]=='#') fname[3] = 'W'; else fname[3] = 'w'; fname[4] = '\0'; printf(" %s/w%s.%s",PIXPATH,fname,PIXEXT); break; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '0': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': default: printf("PANIC: error in input file!!!"); printf("Pos row: %i col: %i char: '%c'\n", row, col, board[row][col]); exit(1); } } } printf("pnmcat -tb ??.row >maze.%s\n",PIXEXT); printf("rm -f ??.row\n",PIXEXT); exit(0); }