Дано: "Heroes III".
Надо: нарисовать карту, состоящую из дуг 1/8 окружности.
Среда разработки: MS-DOS, Turbo C, Windows 95; Celeron 333.
Для этого надо нарисовать границу окружности, а потом составить карту из них.
Программа, рассчитывающая границу окружности:
/* Радиус */
#include
#include
main ()
{
int a, b, c, d;
FILE *g;
/* a - радиус, для которого ведётся расчёт
b - максимальное значение, для которого считается квадратный корень
c - счётчик
d - рассчитанное значение границы окружности */
g = fopen ("1.txt", "w");
for (a = 1; a < 61; a++) /* внешний радиус 1/8 окружности */
{
b = a / sqrt (2) + 2; /* верхняя граница расчетов */
fprintf (g, "r = %i\n", a);
for (c = 0; c < b; c++)
{
if (c == a) break;
d = sqrt (a * a - c * c - .0001) + 1;
if (d < c) break;
if (d == a) continue;
fprintf (g, "%i - %i\n", c, d);
}
fprintf (g, "\n");
}
fclose (g);
}
В результате получается файл, содержащий рассчитанные границы окружностей различных радиусов.
Но окружность получается неровная. После ручной правки получается следующее:
r = 1
r = 2
r = 3
r = 4
3 - 3
r = 5
3 - 4
r = 6
4 - 5
r = 7
4 - 6
5 - 5
r = 8
4 - 7
5 - 7
6 - 6
r = 9
5 - 8
6 - 7
r = 10
5 - 9
6 - 9
7 - 8
Скачать заготовки карт 3 - 12: yadi.sk/d/E7Bi8tVh3Xp2e9
Скачать программу для расчёта радиусов: yadi.sk/d/0C1Ga-OX3Xp2zG
Скачать файл с рассчитанными радиусами: yadi.sk/i/rWN_PXeC3Xp39B
Получились такие заготовки карт:









