//#include "stdafx.h" #include #include #include using namespace std; #include #include "mygrid.h" #include "myastar.h" #include "mymap.h" #include #define SORT 0 int Delay=0; //int Robot=8; //char IMG_Robot=char(1); //const int N=_NR*_NC; int NR,NC; //int map[5][2]; int rStart=-1; int cStart=-1; int rFinish=-1; int cFinish=-1; int grid[_NR][_NC]; #define K_QUIT 0 #define K_PLAY 1 #define K_CLEAR 2 int CheckKey() { char c=0; //while(true) { c = getch(); switch(c) { case 0x1B: c=K_QUIT; goto quit; case 32: c=K_PLAY; goto quit; case 'c': c=K_CLEAR; goto quit; case(77): //R if(cFinish+1 < NC && grid[rFinish][cFinish+1] != 1) {grid[rFinish][cFinish]=0;cFinish++;grid[rFinish][cFinish]=3;} break; case 80://D if(rFinish+1 < NR && grid[rFinish+1][cFinish] != 1) {grid[rFinish][cFinish]=0;rFinish++;grid[rFinish][cFinish]=3;} break; case 75://L if(cFinish-1 >=0 && grid[rFinish][cFinish-1] != 1) {grid[rFinish][cFinish]=0;cFinish--;grid[rFinish][cFinish]=3;} break; case 72://U if(rFinish-1 >=0 && grid[rFinish-1][cFinish] != 1) {grid[rFinish][cFinish]=0;rFinish--;grid[rFinish][cFinish]=3;} break; //cout << (int)c << endl; } // printMap(); } quit: return c; } void Grid_Clear() { for(int r=0; r < NR; r++) for(int c=0; c < NC; c++) if(ROBOT == grid[r][c]) grid[r][c]=0; } void getStart(int &rStart, int &cStart) { for(int r=0; r < NR; r++) for(int c=0; c < NC; c++) if(0 == grid[r][c]) { rStart=r;cStart=c; return; } } void getFinish(int &rFinish, int &cFinish) { for(int r=NR-1; r>=0; r--) for(int c=NC-1; c >=0; c--) if(0 == grid[r][c]) { rFinish=r;cFinish=c; return; } } void help(const char *ProgName) { cerr << ProgName; cerr << " - "; cerr << "A* algorithm - By Fischetti P." << endl; cerr << "Usage:"<< endl; cerr << " " << ProgName; cerr << " < MazeFile.txt" << endl; } int main(int argc, char *argv[]) { try { if ((argc > 1) && (('-' == argv[1][0]) || ('/' == argv[1][0])) && ('?' == argv[1][1])) { help(_strupr(&(argv[0][0]))); return 1; } /* map[0][0]=1;map[0][1]=219; map[1][0]=0;map[1][1]=32; map[2][0]=2;map[2][1]=int('S'); map[3][0]=3;map[3][1]=int('F'); map[4][0]=Robot;map[4][1]=1; */ int NM = Map_Load(map); int lstPath[N][2]; int lstPathSize=0; Grid_Load(grid,rStart, cStart, rFinish,cFinish, NR,NC); // cerr << "map size: " << NR << 'x' << NC << " Start: " << rStart << "," << cStart << " Finish: " << rFinish << "," << cFinish << endl<