Построить мозаику из n правильных n угольников - QBasic

Узнай цену своей работы

Формулировка задачи:

Построить мозаику из правильных n угольников заданного размера, закрасив их разными цветами или применив разные типы штриховок.
n угольник без размеров

Решение задачи: «Построить мозаику из n правильных n угольников»

textual
Листинг программы
CONST Pi = 3.141592653589793#
DECLARE SUB NUgoln (x%, y%, R%, cv%)
DIM SHARED St AS INTEGER, Stu AS SINGLE, R AS INTEGER, n AS INTEGER
 
SCREEN 12
  LOCATE 2, 10: INPUT "R opisannoi okrujnosti  : ", R
  LOCATE 3, 10: INPUT "Tip mnogougolnika [1-3] : ", NTp%
  LOCATE 20, 10: PRINT "- Lubaya knopka dlya vihoda -"
CLS 1
IF NTp% < 1 OR NTp% > 3 OR R < 1 THEN END
SELECT CASE NTp%
  CASE 1: n = 3: Stu = Pi / 6: Stu2 = Stu + Pi
  CASE 2: n = 4: Stu = Pi / 4
  CASE 3: n = 6
END SELECT
  St = R * 2 * SIN(Pi / n)
  Dv = St / (2 * TAN(Pi / n))
  Dv2 = St / 2 * TAN(Pi / n)
SELECT CASE NTp%
  CASE 1: PlusX1 = St: PlusY1 = Dv2: PlusX2 = St / 2: PlusY2 = -Dv
  CASE 2: PlusX1 = St: PlusY1 = St
  CASE 3: PlusX1 = R * 1.5: PlusY1 = Dv * 2: PlusX2 = 0: PlusY2 = Dv
END SELECT
 
y = 0
DO
x = (St AND 1) * PlusX2  ' Смещаем старт позицию для треуг. и шестиуг.
St = St + 1
  DO
   '  Строим многоугольник в нуле
   NUgoln INT(x), INT(y), R, RND * 14 + 1
   
   '  Если шестиугольник
   IF NTp% <> 2 THEN
     savey = y         ' Cохраним высоту
     y = y + PlusY2    ' Шаг по Y
     x = x + PlusX1    ' Шаг по X
       IF NTp% = 1 THEN SWAP Stu, Stu2: x = x - PlusX2
     NUgoln INT(x), INT(y), R, RND * 14 + 1
       IF NTp% = 1 THEN SWAP Stu, Stu2: x = x - PlusX2
     y = savey
   END IF
   x = x + PlusX1    ' Шагаем направо на длину многоугольника
   IF INKEY$ <> "" THEN END
  LOOP UNTIL x > 640
y = y + PlusY1
LOOP UNTIL y > 480
 
SUB NUgoln (x%, y%, R%, cv%)
    xo% = INT(COS(Stu) * R%) + x%
    yo% = INT(SIN(Stu) * R%) + y%
    FOR i = 1 TO n
       xn% = INT(COS((i * 2 * Pi / n) + Stu) * R%) + x%
       yn% = INT(SIN((i * 2 * Pi / n) + Stu) * R%) + y%
       LINE (xo%, yo%)-(xn%, yn%), cv%
       xo% = xn%: yo% = yn%
    NEXT
    PAINT (x%, y%), cv%, cv%
END SUB

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5
Похожие ответы