Необходимо, как воздух!!!HELP!!!
Лабиринт...При каждом запуске - один и тот же!!!А я не отказался бы от разного... (При каждой загрузке - новый лабиринт...)
srand ( time(NULL) ); int n = rand() % 2 Как нить так? Простите, но надо срочно!!! Помогите!!! Напишите плиз прогу, помогающую с этой бедой!!! Буду очень благодарен!!! С комментариями - ваще красаво!!!
Код | #include "..\headers.h"
#define LSIZE 10 #define HWND_NAME "Lab 08"
HANDLE hConsole; int matrix[LSIZE][LSIZE] = { { 0, 0, 0, 0, 0,-1,-1,-1,-1,-1}, {-1,-1,-1,-1, 0,-1, 0, 0, 0,-1}, {-1,-1,-1,-1, 0,-1,-1,-1, 0,-1}, {-1, 0, 0, 0, 0, 0, 0,-1, 0,-1}, {-1, 0,-1, 0,-1,-1, 0, 0, 0,-1}, {-1, 0,-1, 0,-1,-1, 0,-1,-1,-1}, {-1, 0,-1, 0, 0, 0, 0, 0,-1,-1}, {-1, 0,-1,-1, 0,-1,-1, 0,-1,-1}, {-1, 0, 0, 0, 0, 0, 0, 0, 0,-1}, {-1,-1,-1,-1,-1,-1,-1,-1, 0,-1}};
/////////////////////////////////////////////////////////////////////////////// // HWND GetConsoleHWND() { SetConsoleTitle(HWND_NAME); HWND hwndConsoleWindow; hwndConsoleWindow = FindWindow(NULL, HWND_NAME); if (hwndConsoleWindow == 0) { printf("Error Find Window"); exit(0); } return hwndConsoleWindow; }
/////////////////////////////////////////////////////////////////////////////// // void gotoxy(int x, int y) { COORD coord = {x, y}; SetConsoleCursorPosition(hConsole, coord); }
/////////////////////////////////////////////////////////////////////////////// // void DrawLab(bool sec = false) { int i, j; for (i=0; i<LSIZE; i++) { for (j=0; j<LSIZE; j++) { gotoxy(2*j, i);
if (matrix[i][j] == -1) printf("°°"); else if (matrix[i][j] == -2 && sec) printf("±±"); else if (matrix[i][j] == 0 && sec) printf("єє"); else if (!sec) printf("%2i", matrix[i][j]); } printf("\n"); } printf("\n"); }
/////////////////////////////////////////////////////////////////////////////// // void Detour(int in, int jn, int ie, int je) { int i, j, value; value = 1; matrix[in][jn] = value;
bool job = true;
while (job) { for (i=0; i<LSIZE; i++) for (j=0; j<LSIZE; j++) if (matrix[i][j] == value) { if (matrix[i-1][j] == 0) matrix[i-1][j] = value + 1; if (matrix[i+1][j] == 0) matrix[i+1][j] = value + 1; if (matrix[i][j-1] == 0) matrix[i][j-1] = value + 1; if (matrix[i][j+1] == 0) matrix[i][j+1] = value + 1; if (i == ie && j == je) job = false; } value++; }
DrawLab(); value--;
i = ie; j = je; matrix[i][j] = 0; while (i != in || j != jn) { value--; if (i-1 < LSIZE && matrix[i-1][j] == value) { matrix[i-1][j] = 0; i--; } if (i+1 < LSIZE && matrix[i+1][j] == value) { matrix[i+1][j] = 0; i++; } if (j-1 < LSIZE && matrix[i][j-1] == value) { matrix[i][j-1] = 0; j--; } if (j+1 < LSIZE && matrix[i][j+1] == value) { matrix[i][j+1] = 0; j++; } }
for (i=0; i<LSIZE; i++) for (j=0; j<LSIZE; j++) if (matrix[i][j] > 0) matrix[i][j] = -2; DrawLab(true); }
/////////////////////////////////////////////////////////////////////////////// // void main() { hConsole = GetConsoleHWND(); Detour(0, 0, 9, 8); _getch(); }
|
Еще раз спасибо за помощь!!! |