DECLARE SUB dostars (dir!) CLS SCREEN 13 DIM SHARED mstar mstar = 40 RANDOMIZE TIMER TYPE stardat xpos AS INTEGER ypos AS INTEGER dis AS INTEGER col AS INTEGER END TYPE DIM SHARED stars(1 TO mstar) AS stardat GOSUB setupstars DO dostars 2 LOOP setupstars: FOR a = 1 TO mstar dis = INT(RND * 4) + 1 stars(a).dis = dis IF dis = 1 THEN stars(a).col = 19 IF dis = 2 THEN stars(a).col = 23 IF dis = 3 THEN stars(a).col = 28 IF dis = 4 THEN stars(a).col = 31 stars(a).ypos = INT(RND * 190) + 1 stars(a).xpos = INT(RND * 360) + 1 NEXT a RETURN SUB dostars (dir) IF dir = 1 THEN GOTO direct1 IF dir = 2 THEN GOTO direct2 IF dir = 3 THEN GOTO direct3 IF dir = 4 THEN GOTO direct4 IF dir = 5 THEN GOTO direct5 IF dir = 6 THEN GOTO direct6 IF dir = 7 THEN GOTO direct7 IF dir = 8 THEN GOTO direct8 direct1: FOR d = 1 TO mstar FOR a = 1 TO stars(d).dis stars(d).xpos = stars(d).xpos + 1 IF stars(d).xpos = 321 THEN stars(d).xpos = 0 PSET (1, stars(d).ypos + 1), 0 END IF PSET (stars(d).xpos, stars(d).ypos), stars(d).col PSET (stars(d).xpos - 1, stars(d).ypos), 0 NEXT a NEXT d WAIT &H3DA, 8 EXIT SUB direct2: FOR d = 1 TO mstar FOR a = 1 TO stars(d).dis stars(d).xpos = stars(d).xpos - 1 IF stars(d).xpos = 0 THEN stars(d).xpos = 320 PSET (1, stars(d).ypos), 0 END IF PSET (stars(d).xpos, stars(d).ypos), stars(d).col PSET (stars(d).xpos + 1, stars(d).ypos), 0 NEXT a NEXT d WAIT &H3DA, 8 EXIT SUB direct3: FOR d = 1 TO mstar FOR a = 1 TO stars(d).dis stars(d).ypos = stars(d).ypos + 1 IF stars(d).ypos = 191 THEN stars(d).ypos = 0 PSET (stars(d).xpos, 190), 0 END IF PSET (stars(d).xpos, stars(d).ypos), stars(d).col PSET (stars(d).xpos, stars(d).ypos - 1), 0 NEXT a NEXT d WAIT &H3DA, 8 EXIT SUB direct4: FOR d = 1 TO mstar FOR a = 1 TO stars(d).dis stars(d).ypos = stars(d).ypos - 1 IF stars(d).ypos = 0 THEN stars(d).ypos = 190 PSET (stars(d).xpos, 1), 0 END IF PSET (stars(d).xpos, stars(d).ypos), stars(d).col PSET (stars(d).xpos, stars(d).ypos + 1), 0 NEXT a NEXT d WAIT &H3DA, 8 EXIT SUB direct5: FOR d = 1 TO mstar FOR a = 1 TO stars(d).dis stars(d).xpos = stars(d).xpos - 1 stars(d).ypos = stars(d).ypos - 1 IF stars(d).ypos = 0 THEN stars(d).ypos = 190 PSET (stars(d).xpos + 1, 1), 0 END IF IF stars(d).xpos = 0 THEN stars(d).xpos = 320 PSET (1, stars(d).ypos + 1), 0 END IF PSET (stars(d).xpos, stars(d).ypos), stars(d).col PSET (stars(d).xpos + 1, stars(d).ypos + 1), 0 NEXT a NEXT d WAIT &H3DA, 8 EXIT SUB direct6: FOR d = 1 TO mstar FOR a = 1 TO stars(d).dis stars(d).xpos = stars(d).xpos + 1 stars(d).ypos = stars(d).ypos + 1 IF stars(d).ypos = 191 THEN stars(d).ypos = 0 PSET (stars(d).xpos - 1, 190), 0 END IF IF stars(d).xpos = 321 THEN stars(d).xpos = 0 PSET (1, stars(d).ypos), 0 END IF PSET (stars(d).xpos, stars(d).ypos), stars(d).col PSET (stars(d).xpos - 1, stars(d).ypos - 1), 0 NEXT a NEXT d WAIT &H3DA, 8 EXIT SUB direct7: FOR d = 1 TO mstar FOR a = 1 TO stars(d).dis stars(d).xpos = stars(d).xpos + 1 stars(d).ypos = stars(d).ypos - 1 IF stars(d).ypos = 0 THEN stars(d).ypos = 190 PSET (stars(d).xpos - 1, 1), 0 END IF IF stars(d).xpos = 321 THEN stars(d).xpos = 0 PSET (1, stars(d).ypos + 1), 0 END IF PSET (stars(d).xpos, stars(d).ypos), stars(d).col PSET (stars(d).xpos - 1, stars(d).ypos + 1), 0 NEXT a NEXT d WAIT &H3DA, 8 EXIT SUB direct8: FOR d = 1 TO mstar FOR a = 1 TO stars(d).dis stars(d).xpos = stars(d).xpos - 1 stars(d).ypos = stars(d).ypos + 1 IF stars(d).ypos = 191 THEN stars(d).ypos = 0 PSET (stars(d).xpos + 1, 190), 0 END IF IF stars(d).xpos = 0 THEN stars(d).xpos = 320 PSET (1, stars(d).ypos - 1), 0 END IF PSET (stars(d).xpos, stars(d).ypos), stars(d).col PSET (stars(d).xpos + 1, stars(d).ypos - 1), 0 NEXT a NEXT d WAIT &H3DA, 8 END SUB