Построить мозаику из 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д