> 4. КОДУВАННЯ
Розглянемо функцію знаходження шляхи обходу:
const struct
{dx; dy;
} moves [] =// Масив варіантів ходу коня
{
{-1, -2},
{1, -2},
{-2, -1},
{2, -1},
{-2, 1},
{2, 1},
{-1, 2},
{1, 2}
}; seq ;//Масив, в який заноситься пара значень
for (size_t i = 0; i
{int x0 = x + moves [i]. dx; int y0 = y + moves [i]. dy; c = 0 ;//Лічильник ходів (size_t j = 0; j
{int x1 = x0 + moves [j]. dx; int y1 = y0 + moves [j]. dy;
if (x1> = 0 && x1 = 0 && y1
! board [x1] [y1])// Перевірка чи був кінь на цій клітці
+ + c;
}. insert (pair (c, i));
} (multimap :: iterator i = seq.begin (); i! = seq.end (); + + i)// Перехід на потрібну клітину
{int x0 = x + moves [i -> second]. dx; int y0 = y + moves [i -> second]. dy;
if (x0> = 0 && x0 = 0 && y0
! board [x0] [y0] && solve (x0, y0)) true;
}
[x] [y] = false;. pop_back (); false;
}
Розглянемо функцію побудови графічного інтерфейсу: display ()// Функція побудови графічного інтерфейсу
{(GL_COLOR_BUFFER_BIT); int step = 480/N; (GL_QUADS) ;//Створення квадратів (int i = 0; i
{((i + j)% 2) f (0.5, 0.5, 0.5); f (0, 0, 0); int x = i * step; int y = j * step; f (x, y); f (x + step, y); f (x + step, y + step); f (x, y + step);
} ();
glPointSize (3); (GL_POINTS);// Створення точок (позначення коня на дошці)
glColor3f (0, 1, 0); (int i = 0; i
{int x = i * step + step/2; int y = j * step + step/2; f (x, y);
} (); (1);
glBegin (GL_LINE_STRIP) ;//Створення ліній, що пов'язують точки
for (vector :: iterator i = solution.begin (); i! = solution.end (); + + i)
{int x = i -> x * step + step/2; int y = i -> y * step + step/2; f (x, y);
} (); ();
}
5. ТЕСТУВАННЯ
У даній програмі будемо проводити тестування графічного інтерфейсу:
Для початку протестуємо побудова самої дошки.
Створимо дошку розміром 8 * 8:
програма шлях інтерфейс алгоритм
В
Малюнок 3. Зображення шахової дошки. br/>
Протестуєм...