mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-12-28 09:30:41 +00:00
94 lines
2.4 KiB
QBasic
94 lines
2.4 KiB
QBasic
' cls()
|
|
10 HGR
|
|
' ::_::
|
|
'for i=0,1600 do
|
|
20 FOR I=0 TO 1600
|
|
'if(i<15)pal(i,({0,128,130,2,136,8,142,137,9,10,135,7})[i+1],1)
|
|
30 REM
|
|
'x=rnd(128)
|
|
40 X=RND(1)*128
|
|
'y=rnd(128)
|
|
50 Y=RND(1)*128
|
|
'a=atan2(x-64,y-64)+.17
|
|
'60 A=ATN(X-20,Y-20)+.17
|
|
'60 IF Y-64>0 THEN A=ATN((X-64)/(Y-64)):GOTO 68
|
|
'61 IF Y-64=0 THEN A=1.57*SGN(X-64):GOTO 68
|
|
'62 A=ATN((X-64)/(Y-64))+3.14*SGN(X-64)
|
|
' PICO-8 uses TURNS instead of RADIANS so this is equivelant to roughly 1 radian
|
|
'68 A=A+1
|
|
60 IF X-64=0 AND Y-64=0 THEN GOTO 40
|
|
' X>0 case, plain ATN, Quadrants I and IV
|
|
64 IF X-64>0 THEN A=ATN((Y-64)/(X-64)):GOTO 68
|
|
' X=0 then pi/2 or -pi/2 depending on Y
|
|
65 IF X-64=0 THEN A=1.57*SGN(Y-64):GOTO 68
|
|
' X<0 and Y>=0, Quadrant II
|
|
67 IF Y-64>=0 THEN A=ATN((Y-64)/(X-64))+3.14:GOTO 68
|
|
' X<0 and Y<0 Quadrant III
|
|
67 A=ATN((Y-64)/(X-64))-3.14
|
|
68 A=A+1
|
|
'69 PRINT A
|
|
'd=rnd(7)
|
|
70 D=RND(1)*7
|
|
'pset(x+cos(a)*d,y+sin(a)*d/3-cos(a)*d/4,max(0,pget(x,y)+.87-rnd()))
|
|
' 1+.87-.99 = .88
|
|
' 1+.87-0.0 = 1.87
|
|
'80 C=SCRN(X/3.3,Y/3.3)+1.37-RND(1)
|
|
80 GOSUB 1100
|
|
81 C=C+0.87-RND(1)
|
|
82 IF C<0 THEN C=0
|
|
83 IF C>7 THEN C=7
|
|
84 HCOLOR=C
|
|
85 XX=(X+COS(A)*D)
|
|
87 YY=(Y+SIN(A)*D/3-COS(A)*D/4)
|
|
88 IF XX<0 OR XX>240 GOTO 100
|
|
89 IF YY<0 OR YY>192 GOTO 100
|
|
90 HPLOT XX,YY
|
|
'end
|
|
100 NEXT I
|
|
' circfill(64,64,5,11)
|
|
110 HCOLOR=7
|
|
115 HPLOT 61,60 TO 69,60:HPLOT 60,61 TO 70,61:HPLOT 60,62 TO 70,62
|
|
117 HPLOT 60,63 TO 70,63:HPLOT 60,64 TO 70,64:HPLOT 60,65 TO 70,65
|
|
119 HPLOT 60,66 TO 70,66:HPLOT 60,67 TO 70,67:HPLOT 61,68 TO 69,68
|
|
'125 INPUT A$
|
|
130 GOTO 20
|
|
'flip()goto _
|
|
1100 REM GET HCOLOR
|
|
1110 REM PARAMETERS: X Y
|
|
1120 REM RETURNS: C
|
|
1130 REM
|
|
1140 HP = 0:HX = X + 1:HY=Y
|
|
1150 ON (HX < 280) GOSUB 1300
|
|
1160 PR = HP:HP = 0:HX = HX - 2
|
|
1170 ON (HX > = 0) GOSUB 1300
|
|
1180 PL = HP:HX = HX + 1: GOSUB 1300
|
|
1190 ODD = HX - INT (HX / 2) * 2
|
|
1200 C = HH * 4
|
|
1210 IF NOT ((PL = PR) AND (PL < > HP)) THEN C = C + HP * 3: RETURN
|
|
1220 IF ODD THEN HP = NOT HP
|
|
1230 C = C + HP + 1
|
|
1240 RETURN
|
|
1250 REM
|
|
1260 REM GET PIXEL
|
|
1270 REM PARAMETERS: HX HY
|
|
1280 REM RETURNS: HH HP
|
|
1290 REM
|
|
1300 HH = INT (HX / 7)
|
|
1310 HV = INT (HY / 8)
|
|
1320 VO = PEEK (37)
|
|
1330 HO = PEEK (36)
|
|
1340 VTAB HV + 1: HTAB 1
|
|
1350 HA = PEEK (41) * 256
|
|
1360 HA = HA + PEEK (40) + HH
|
|
1370 VTAB VO + 1: HTAB HO + 1
|
|
1380 HA = HA + 8192 - 1024
|
|
1390 HP = PEEK (230) / 32
|
|
1400 IF HP = 2 THEN HA = HA + 8192
|
|
1410 HA = HA + (HY - HV * 8) * 1024
|
|
1420 HB = HX - HH * 7
|
|
1430 HV = PEEK (HA)
|
|
1440 HH = INT (HV / 128)
|
|
1450 HV = INT (HV / (2 ^ HB))
|
|
1460 HP = HV - INT (HV / 2) * 2
|
|
1470 RETURN
|