Slow down animation for compatibility with fast CPUs
[qbasicapps.git] / graphics / 3D / stars.bas
index 60a03dc..7feee8a 100755 (executable)
 \r
 DECLARE SUB setstar (x2!, y2!, z2!)\r
 DECLARE SUB galaxy ()\r
-DIM SHARED mitu\r
-DIM SHARED mituv\r
+Dim Shared mitu\r
+Dim Shared mituv\r
 \r
 \r
-RANDOMIZE TIMER\r
+Randomize Timer\r
 mituv = 2000\r
 mitu = mituv\r
 rns = 500\r
 wl = 0\r
 \r
-DIM SHARED px(1 TO mitu + 1000)\r
-DIM SHARED py(1 TO mitu + 1000)\r
-DIM SHARED pz(1 TO mitu + 1000)\r
+Dim Shared px(1 To mitu + 1000)\r
+Dim Shared py(1 To mitu + 1000)\r
+Dim Shared pz(1 To mitu + 1000)\r
 \r
-FOR a = 1 TO mitu\r
-pz(a) = RND * 500 + 20\r
-  n = RND * 100\r
-  px(a) = SIN(n) * 20\r
-  py(a) = COS(n) * 20\r
-NEXT a\r
+For a = 1 To mitu\r
+    pz(a) = Rnd * 500 + 20\r
+    n = Rnd * 100\r
+    px(a) = Sin(n) * 20\r
+    py(a) = Cos(n) * 20\r
+Next a\r
 \r
 \r
-SCREEN 13\r
+Screen 13\r
 \r
 \r
 frm = 10\r
 1\r
 fps = fps + 1\r
-IF tm$ <> TIME$ THEN\r
-'LOCATE 1, 1\r
-'PRINT fps\r
-IF fps > 20 THEN wl = wl + 2 ELSE wl = wl - 1\r
-IF wl < 0 THEN wl = 0\r
-fps = 0\r
-tm$ = TIME$\r
-END IF\r
+If tm$ <> Time$ Then\r
+    'LOCATE 1, 1\r
+    'PRINT fps\r
+    If fps > 20 Then wl = wl + 2 Else wl = wl - 1\r
+    If wl < 0 Then wl = 0\r
+    fps = 0\r
+    tm$ = Time$\r
+End If\r
 frm = frm + 1\r
-xp = SIN(frm / 21) * 3\r
-yp = SIN(frm / 18) * 3\r
-\r
-nrk = (3.1412) / 2 + SIN(frm / 35) / 100 + SIN(frm / 21) / 100\r
-rs1 = SIN(nrk)\r
-rc1 = COS(nrk)\r
-\r
-FOR a = 1 TO mitu\r
-x = px(a)\r
-y = py(a)\r
-z = pz(a)\r
-x1 = x / z * 160 + 160\r
-y1 = y / z * 100 + 100\r
-PSET (x1, y1), 0\r
-\r
-x5 = x * rs1 - y * rc1\r
-y5 = x * rc1 + y * rs1\r
-\r
-x = x5\r
-y = y5\r
-\r
-z = z - 3\r
-x = x + xp\r
-y = y + yp\r
-IF z < 10 THEN\r
-z = RND * 300 + 400\r
-x = RND * 800 - 400\r
-y = RND * 800 - 400\r
-END IF\r
-\r
-x1 = x / z * 160 + 160\r
-y1 = y / z * 100 + 100\r
-c = 3000 / z + 15\r
-IF c > 31 THEN c = 31\r
-PSET (x1, y1), c\r
-\r
-px(a) = x\r
-py(a) = y\r
-pz(a) = z\r
-NEXT a\r
-\r
-\r
-IF mituv - mitu > rns THEN galaxy: rns = RND * 800 + 100\r
-\r
-FOR a = 1 TO 2\r
-b = RND * (mitu - 10) + 1\r
-SWAP px(mitu), px(b)\r
-SWAP py(mitu), py(b)\r
-SWAP pz(mitu), pz(b)\r
-\r
-x = px(mitu)\r
-y = py(mitu)\r
-z = pz(mitu)\r
-x1 = x / z * 160 + 160\r
-y1 = y / z * 100 + 100\r
-PSET (x1, y1), 0\r
-mitu = mitu - 1\r
-NEXT a\r
+xp = Sin(frm / 21) * 3\r
+yp = Sin(frm / 18) * 3\r
+\r
+nrk = (3.1412) / 2 + Sin(frm / 35) / 100 + Sin(frm / 21) / 100\r
+rs1 = Sin(nrk)\r
+rc1 = Cos(nrk)\r
+\r
+For a = 1 To mitu\r
+    x = px(a)\r
+    y = py(a)\r
+    z = pz(a)\r
+    x1 = x / z * 160 + 160\r
+    y1 = y / z * 100 + 100\r
+    PSet (x1, y1), 0\r
+\r
+    x5 = x * rs1 - y * rc1\r
+    y5 = x * rc1 + y * rs1\r
+\r
+    x = x5\r
+    y = y5\r
+\r
+    z = z - 3\r
+    x = x + xp\r
+    y = y + yp\r
+    If z < 10 Then\r
+        z = Rnd * 300 + 400\r
+        x = Rnd * 800 - 400\r
+        y = Rnd * 800 - 400\r
+    End If\r
+\r
+    x1 = x / z * 160 + 160\r
+    y1 = y / z * 100 + 100\r
+    c = 3000 / z + 15\r
+    If c > 31 Then c = 31\r
+    PSet (x1, y1), c\r
+\r
+    px(a) = x\r
+    py(a) = y\r
+    pz(a) = z\r
+Next a\r
+\r
+\r
+If mituv - mitu > rns Then galaxy: rns = Rnd * 800 + 100\r
+\r
+For a = 1 To 2\r
+    b = Rnd * (mitu - 10) + 1\r
+    Swap px(mitu), px(b)\r
+    Swap py(mitu), py(b)\r
+    Swap pz(mitu), pz(b)\r
+\r
+    x = px(mitu)\r
+    y = py(mitu)\r
+    z = pz(mitu)\r
+    x1 = x / z * 160 + 160\r
+    y1 = y / z * 100 + 100\r
+    PSet (x1, y1), 0\r
+    mitu = mitu - 1\r
+Next a\r
 \r
 'LOCATE 2, 1\r
 'PRINT wl\r
-FOR a = 0 TO wl\r
-FOR b = 0 TO 1000\r
-c = c / 100\r
-NEXT b\r
-NEXT a\r
-\r
-IF INKEY$ <> "" THEN SYSTEM\r
-GOTO 1\r
-\r
-SUB galaxy\r
-\r
-xf = RND * 4 - 2\r
-yf = RND * 4 - 2\r
-xp = RND * 200 - 100\r
-yp = RND * 200 - 100\r
-\r
-FOR a = 1 TO RND * 15 + 10 STEP .04\r
-x = SIN(a) * a * a / 10\r
-y = COS(a) * a * a / 10\r
-setstar x + RND * a * a / 30 + xp, y + RND * a * a / 30 + yp, 700 + RND * a * a / 30 + (x * xf) + (y * yf)\r
-NEXT a\r
-\r
-'SOUND 1000, 1\r
-END SUB\r
-\r
-SUB setstar (x2, y2, z2)\r
-mitu = mitu + 1\r
-s = mitu\r
-\r
-px(s) = x2\r
-py(s) = y2\r
-pz(s) = z2\r
-END SUB\r
+For a = 0 To wl\r
+    For b = 0 To 1000\r
+        c = c / 100\r
+    Next b\r
+Next a\r
+\r
+If InKey$ <> "" Then System\r
+sound 0,1\r
+GoTo 1\r
+\r
+Sub galaxy\r
+\r
+    xf = Rnd * 4 - 2\r
+    yf = Rnd * 4 - 2\r
+    xp = Rnd * 200 - 100\r
+    yp = Rnd * 200 - 100\r
+\r
+    For a = 1 To Rnd * 15 + 10 Step .04\r
+        x = Sin(a) * a * a / 10\r
+        y = Cos(a) * a * a / 10\r
+        setstar x + Rnd * a * a / 30 + xp, y + Rnd * a * a / 30 + yp, 700 + Rnd * a * a / 30 + (x * xf) + (y * yf)\r
+    Next a\r
+\r
+    'SOUND 1000, 1\r
+End Sub\r
+\r
+Sub setstar (x2, y2, z2)\r
+    mitu = mitu + 1\r
+    s = mitu\r
+\r
+    px(s) = x2\r
+    py(s) = y2\r
+    pz(s) = z2\r
+End Sub\r
 \r