Поиск в лабиринте - Курсовая работа

бесплатно 0
4.5 32
Реализация алгоритма поиска, его составляющие. Считывание матрицы лабиринта из файла, нахождение в нем свободных мест. Иерархия классов для работы в графическом режиме и вывода необходимого на экран. Дополнительные типы данных, используемые в программе.


Аннотация к работе
Курсовая работа по программированию Поиск в лабиринте Поиск в глубину: Алгоритм Реализация алгоритма поиска: Поиск в лабиринте реализован поиском в глубину (рекурсивно) Данная реализация представлена в программе классом tLabirint. Формат входного файла: 1 стока: размерность матрицы лабиринта 2 строка: координата Х начальной (стартовой) позиции 3 строка: координата Y начальной (стартовой) позиции 4 строка: координата Х конечной (финальной) позиции 5 строка: координата Y конечной (финальной) позиции Затем идет матрица лабиринта размерность n символов на n строк, где n - число из первой строки файла, размерность матрицы Причем символ «1» означает доступность клетки символ «0» означает препятствие Пример входного файла: 5 1 1 5 4 11010 01110 11100 00111 10000 void tLabirint::ReadMatrix() { FILE *f; char ch; int i,j,n; //Открываем файл f = fopen(input.txt, rt); // Считываем размерность fread(&ch,sizeof(ch), 1, f); // Переводим в число n = atoi(&ch); // Считываем перевод строки fread(&ch, sizeof(ch), 1, f); // Читаем стартовую позицию Х fread(&ch,sizeof(ch), 1, f); start.x = atoi(&ch); // Считываем перевод строки fread(&ch, sizeof(ch), 1, f); //Читаем стартовую позицию У fread(&ch,sizeof(ch), 1, f); start.y = atoi(&ch); // Считываем перевод строки fread(&ch, sizeof(ch), 1, f); //Читаем финальную позицию Х fread(&ch,sizeof(ch), 1, f); finish.x = atoi(&ch); // Считываем перевод строки fread(&ch, sizeof(ch), 1, f); // Читаем финальную позицию У fread(&ch,sizeof(ch), 1, f); finish.y = atoi(&ch); // Считываем перевод строки fread(&ch, sizeof(ch), 1, f); count_a=n; memset(a, 0, sizeof(a)); // Считываем матрицу лабиринта for(i=1;i0) && (check[k].y>0) && (check[k].xCircle(sx x*edge-edge / 2, sy y*edge-edge / 2, 3); //defaultmouseon; //printf(X-%d;Y-%d

, x, y); //getchar(); if((finish.x==x) && (finish.y==y)) flag=1; /**/ // Получаем координаты лабиринта, куда можно идти cnt=GetCommon(y, x, sm); for(i=1;i #include #include #include #include #include typedef struct _tCoords { int x; int y; } tCoords; typedef tCoords smezh[51]; const MAX_PATH=100; class tMyObj { protected: int x0, y0; public: tMyObj(){}; ~tMyObj(){}; tMyObj(int _x, int _y){x0=_x;y0=_y;}; }; class tMyLine:public tMyObj { int x1, y1; public: tMyLine(){}; ~tMyLine(){}; tMyLine(int _x, int _y, int _x1, int _y1):tMyObj(_x, _y){x1=_x1;y1=_y1;}; void Show(){line(x0, y0, x1, y1);}; void Hide(){int o = getcolor();int b = getbkcolor();setcolor(b);Show();setcolor(o);} }; class tMyCircle:public tMyObj { int rad; public: tMyCircle(){}; ~tMyCircle(){}; tMyCircle(int _x, int _y, int _rad):tMyObj(_x, _y){rad=_rad;}; void Show(){circle(x0, y0, rad);} }; class tMyRect:public tMyObj { int x1, y1; public: tMyRect(){}; ~tMyRect(){}; tMyRect(int _x, int _y, int _x1, int _y1):tMyObj(_x, _y){x1=_x1;y1=_y1;}; void Show(){rectangle(x0, y0, x1, y1);}; void Hide(){int o = getcolor();int b = getbkcolor();setcolor(b);Show();setcolor(o);} }; class tMyGUI { public: tMyGUI(); ~tMyGUI(); void Line(int x, int y, int x1, int y1); void Circle(int x, int y, int rad); void Rectangle(int x, int y, int x1, int y1); void Fill(int x, int y, int Color); }; void tMyGUI::Line(int x, int y, int x1, int y1) { tMyLine tl(x, y, x1, y1); tl.Show(); } void tMyGUI::Circle(int x, int y, int rad) { tMyCircle tc(x, y, rad); tc.Show(); } void tMyGUI::Rectangle(int x, int y, int x1, int y1) { tMyRect tr(x, y, x1, y1); tr.Show(); } void tMyGUI::Fill(int x, int y, int Color) { floodfill(x, y, Color); } tMyGUI::tMyGUI() { int gdriver = DETECT, gmode, errorcode; initgraph(&gdriver, &gmode, ); errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf(Graphics error: %s

, grapherrormsg(errorcode)); printf(Press any key to halt:); getch(); exit(1); /* return with error code */ } } tMyGUI::~tMyGUI() { closegraph(); } class tLabirint { int a[51][51]; // Матрица лабиринта tCoords path[MAX_PATH 1]; // Путь int color[51][51]; // Массив цветов.
Заказать написание новой работы



Дисциплины научных работ



Хотите, перезвоним вам?