Дано: "Heroes III".
Надо: нарисовать карту, состоящую из дуг 1/8 окружности.
Среда разработки: MS-DOS, Turbo C, Windows 95; Celeron 333.
Для этого надо нарисовать границу окружности, а потом составить карту из них.
Программа, рассчитывающая границу окружности:
Код
/*   Радиус   */
#include <math.h>
#include <stdio.h>
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
Получились такие заготовки карт:









