1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
   | 'Generate starry sky    [STARS.BAS]  DIM level(3)           'magnitude levels  RANDOMIZE TIMER        'so that each sky is different  SCREEN 12              '640x480 pixels  m1 = 3                 'average number of mag 1 stars (default 3)  r = 8                  'star number ratio per magnitude (default 8)  totalstars = m1 * (1 + r + r * r + r * r * r)  '# of stars in the sky  level(1) = m1 / totalstars                'compute levels to make  level(2) = m1 * (1 + r) / totalstars      '4 different magnitudes  level(3) = m1 * (1 + r + r * r) / totalstars  DO                     'this is the loop that generates a new sky    CLS                  'clear screen/sky    FOR i = 1 TO totalstars      'generate stars one by one      xp = RND * 640             'x position on the screen      yp = RND * 480             'y position on the screen      magtst = RND               'generate a number to determine magnitude      mag = 4                    'start by assuming faintest star      IF magtst < level(3) THEN mag = 3  'then brighten if      IF magtst < level(2) THEN mag = 2  'generated random number is      IF magtst < level(1) THEN mag = 1  'within specified level      SELECT CASE mag            'now plot star according to magnitude        CASE 4          PSET (xp, yp), 8       'faintest star (try changing colour to 7?)        CASE 3          PSET (xp, yp), 15      'brightest star with a single point        CASE 2          CIRCLE (xp, yp), 1, 15 'increase app brightness by increasing size          PAINT (xp, yp), 15        CASE 1          CIRCLE (xp, yp), 1.5, 15  'brightest stars have largest area          PAINT (xp, yp), 15      END SELECT    NEXT i               'go back and plot all stars until finished    DO      a$ = INKEY$                            'wait for a keyboard input    LOOP WHILE a$ <> CHR$(27) AND a$ <> "q"  'ESC generates new sky  LOOP WHILE a$ <> "q"                       'q quits program END
   |