' 3D starfield ' made by Svjatoslav Agejenko ' in 2003.03 ' H-Page: svjatoslav.eu ' E-Mail: svjatoslav@svjatoslav.eu DECLARE SUB setstar (x2!, y2!, z2!) DECLARE SUB galaxy () DIM SHARED mitu DIM SHARED mituv RANDOMIZE TIMER mituv = 2000 mitu = mituv rns = 500 wl = 0 DIM SHARED px(1 TO mitu + 1000) DIM SHARED py(1 TO mitu + 1000) DIM SHARED pz(1 TO mitu + 1000) FOR a = 1 TO mitu pz(a) = RND * 500 + 20 n = RND * 100 px(a) = SIN(n) * 20 py(a) = COS(n) * 20 NEXT a SCREEN 13 frm = 10 1 fps = fps + 1 IF tm$ <> TIME$ THEN 'LOCATE 1, 1 'PRINT fps IF fps > 20 THEN wl = wl + 2 ELSE wl = wl - 1 IF wl < 0 THEN wl = 0 fps = 0 tm$ = TIME$ END IF frm = frm + 1 xp = SIN(frm / 21) * 3 yp = SIN(frm / 18) * 3 nrk = (3.1412) / 2 + SIN(frm / 35) / 100 + SIN(frm / 21) / 100 rs1 = SIN(nrk) rc1 = COS(nrk) FOR a = 1 TO mitu x = px(a) y = py(a) z = pz(a) x1 = x / z * 160 + 160 y1 = y / z * 100 + 100 PSET (x1, y1), 0 x5 = x * rs1 - y * rc1 y5 = x * rc1 + y * rs1 x = x5 y = y5 z = z - 3 x = x + xp y = y + yp IF z < 10 THEN z = RND * 300 + 400 x = RND * 800 - 400 y = RND * 800 - 400 END IF x1 = x / z * 160 + 160 y1 = y / z * 100 + 100 c = 3000 / z + 15 IF c > 31 THEN c = 31 PSET (x1, y1), c px(a) = x py(a) = y pz(a) = z NEXT a IF mituv - mitu > rns THEN galaxy: rns = RND * 800 + 100 FOR a = 1 TO 2 b = RND * (mitu - 10) + 1 SWAP px(mitu), px(b) SWAP py(mitu), py(b) SWAP pz(mitu), pz(b) x = px(mitu) y = py(mitu) z = pz(mitu) x1 = x / z * 160 + 160 y1 = y / z * 100 + 100 PSET (x1, y1), 0 mitu = mitu - 1 NEXT a 'LOCATE 2, 1 'PRINT wl FOR a = 0 TO wl FOR b = 0 TO 1000 c = c / 100 NEXT b NEXT a IF INKEY$ <> "" THEN SYSTEM GOTO 1 SUB galaxy xf = RND * 4 - 2 yf = RND * 4 - 2 xp = RND * 200 - 100 yp = RND * 200 - 100 FOR a = 1 TO RND * 15 + 10 STEP .04 x = SIN(a) * a * a / 10 y = COS(a) * a * a / 10 setstar x + RND * a * a / 30 + xp, y + RND * a * a / 30 + yp, 700 + RND * a * a / 30 + (x * xf) + (y * yf) NEXT a 'SOUND 1000, 1 END SUB SUB setstar (x2, y2, z2) mitu = mitu + 1 s = mitu px(s) = x2 py(s) = y2 pz(s) = z2 END SUB