Dragon curve: Difference between revisions

Content added Content deleted
(→‎{{header|GW-BASIC}}: Doubled x-coords for better look in SCREEN 2. Structure: IF-THEN-ELSE used.)
Line 803: Line 803:
{{works with|BASICA}}
{{works with|BASICA}}
{{works with|QBasic}}
{{works with|QBasic}}
{{trans|MSX BASIC}}
{{trans|Commodore BASIC}}
<syntaxhighlight lang="qbasic">10 REM DRAGON CURVE
<syntaxhighlight lang="qbasic">10 REM Dragon curve
20 REM SIN, COS IN ARRAYS FOR PI/4 MULTIPL.
20 REM SIN, COS in arrays for PI/4 multipl.
30 DIM S(7),C(7)
30 DIM S(7), C(7)
40 QPI = ATN(1)
40 QPI = ATN(1)
50 FOR I = 0 TO 7
50 FOR I = 0 TO 7
60 S(I) = SIN(I*QPI)
60 S(I) = SIN(I * QPI)
70 C(I) = COS(I*QPI)
70 C(I) = COS(I * QPI)
80 NEXT I
80 NEXT I
90 LEVEL = 15
90 LEVEL = 15
100 INSIZE = 128 : REM 2^WHOLE_NUM (LOOKS BETTER)
100 INSIZE = 128: REM 2^WHOLE_NUM (looks better)
110 X = 112
110 X = 112
120 Y = 70
120 Y = 70
130 SQ = SQR(2)
130 SQ = SQR(2)
140 ROTQPI = 0 : ITER = 0 : RQ = 1
140 ROTQPI = 0: ITER = 0: RQ = 1
150 DIM R(LEVEL)
150 DIM R(LEVEL)
160 SCREEN 2 : CLS
160 SCREEN 2: CLS
170 GOSUB 190
170 GOSUB 190
180 END
180 END
190 REM DRAGON
190 REM ** Dragon
200 IF ROTQPI < 0 THEN ROTQPI = ROTQPI+8 : GOTO 220
200 IF ROTQPI < 0 THEN ROTQPI = ROTQPI + 8 ELSE IF ROTQPI > 7 THEN ROTQPI = ROTQPI - 8
210 IF ROTQPI > 7 THEN ROTQPI = ROTQPI-8
210 IF LEVEL > 1 THEN GOTO 280
220 IF LEVEL > 1 THEN GOTO 290
220 YN = S(ROTQPI) * INSIZE + Y
230 YN = S(ROTQPI)*INSIZE+Y
230 XN = C(ROTQPI) * INSIZE + X
240 LINE (2 * X, Y)-(2 * XN, YN): REM For SCREEN 2 doubled x-coords
240 XN = C(ROTQPI)*INSIZE+X
250 LINE (X,Y)-(XN,YN)
250 ITER = ITER + 1
260 ITER = ITER+1
260 X = XN: Y = YN
270 X = XN : Y = YN
270 RETURN
280 INSIZE = INSIZE * SQ / 2
280 RETURN
290 INSIZE = INSIZE*SQ/2
290 ROTQPI = ROTQPI + RQ
300 ROTQPI = ROTQPI+RQ
300 IF ROTQPI < 0 THEN ROTQPI = ROTQPI + 8 ELSE IF ROTQPI > 7 THEN ROTQPI = ROTQPI - 8
310 LEVEL = LEVEL - 1
310 IF ROTQPI < 0 THEN ROTQPI = ROTQPI+8 : GOTO 330
320 IF ROTQPI > 7 THEN ROTQPI = ROTQPI-8
320 R(LEVEL) = RQ: RQ = 1
330 LEVEL = LEVEL-1
330 GOSUB 190
340 R(LEVEL) = RQ : RQ = 1
340 ROTQPI = ROTQPI - R(LEVEL) * 2
350 IF ROTQPI < 0 THEN ROTQPI = ROTQPI + 8 ELSE IF ROTQPI > 7 THEN ROTQPI = ROTQPI - 8
350 GOSUB 190
360 ROTQPI = ROTQPI-R(LEVEL)*2
360 RQ = -1
370 GOSUB 190
370 IF ROTQPI < 0 THEN ROTQPI = ROTQPI+8 : GOTO 390
380 RQ = R(LEVEL)
380 IF ROTQPI > 7 THEN ROTQPI = ROTQPI-8
390 RQ = -1
390 ROTQPI = ROTQPI + RQ
400 IF ROTQPI < 0 THEN ROTQPI = ROTQPI + 8 ELSE IF ROTQPI > 7 THEN ROTQPI = ROTQPI - 8
400 GOSUB 190
410 RQ = R(LEVEL)
410 LEVEL = LEVEL + 1
420 ROTQPI = ROTQPI+RQ
420 INSIZE = INSIZE * SQ
430 RETURN</syntaxhighlight>
430 IF ROTQPI < 0 THEN ROTQPI = ROTQPI+8 : GOTO 450
440 IF ROTQPI > 7 THEN ROTQPI = ROTQPI-8
450 LEVEL = LEVEL+1
460 INSIZE = INSIZE*SQ
470 RETURN</syntaxhighlight>


==={{header|IS-BASIC}}===
==={{header|IS-BASIC}}===