DECLARE SUB Pal (c%, r%, g%, B%) SCREEN 13 DEFINT A-Z FOR A = 0 TO 63 Pal A / 4, A, 0, 0 Pal A / 4 + 16, 63, A, 0 Pal A / 4 + 32, 63, 63, A NEXT Pal 49, 63, 63, 0 DIM Blk(5001) DIM XYArr(99, 99) DIM DarkZentrX(1 TO 130), DarkZentrY(1 TO 130), DarkZones, DarkZoneFar(1 TO 130) DIM LightZentrX(1 TO 130), LightZentrY(1 TO 130), LightZones, LightZoneFar(1 TO 130) RANDOMIZE TIMER FOR Radius = 1 TO 7 FOR Wi! = 0 TO 6.28 STEP .01 X = INT(SIN(Wi!) * Radius + 50) Y = INT(COS(Wi!) * Radius + 50) IF INT(RND * 50) + 1 > Radius THEN PSET (X, Y), 49 - INT(RND * Radius * 5) NEXT NEXT Bilder = 25 Fortschritt = 25 / Bilder * Oft FOR Mal = 1 TO 3 PSET (INT(RND * 94) + 4, INT(RND * 94) + 4), 0 NEXT DO X = INT(RND * 94) + 4 Y = INT(RND * 94) + 4 Wert = 0 FOR XX = -3 TO 3 FOR YY = -3 TO 3 Wert = Wert + POINT(X + XX, Y + YY) NEXT NEXT IF INT(RND * 45) > Wert \ 49 AND Wert \ 49 > 5 THEN DarkZones = DarkZones + 1 DarkZentrX(DarkZones) = X DarkZentrY(DarkZones) = Y END IF LOOP UNTIL DarkZones >= 3 DO X = INT(RND * 44) + 34 Y = INT(RND * 44) + 34 Wert = 0 FOR XX = -3 TO 3 FOR YY = -3 TO 3 Wert = Wert + POINT(X + XX, Y + YY) NEXT NEXT IF INT(RND * 45) > Wert \ 49 THEN DarkZones = DarkZones + 1 DarkZentrX(DarkZones) = X DarkZentrY(DarkZones) = Y END IF LOOP UNTIL DarkZones >= 6 DO X = INT(RND * 94) + 4 Y = INT(RND * 94) + 4 Wert = 0 IF INT(RND * 45) > 30 THEN LightZones = LightZones + 1 LightZentrX(LightZones) = X LightZentrY(LightZones) = Y END IF LOOP UNTIL LightZones >= 50 '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! FOR Oft = 1 TO Bilder LOCATE 15, 1: PRINT Oft; " of"; Bilder IF Oft <= 6 THEN FOR Radius = 1 TO 48 / 5 * Oft FOR Wi! = 0 TO 6.28 STEP .02 X = INT(SIN(Wi!) * Radius + 50) Y = INT(COS(Wi!) * Radius + 50) IF INT(RND * 50) + 1 > Radius THEN PSET (X, Y), 49 - INT(RND * Radius) NEXT NEXT END IF Radi = 48 + INT(RND * 11) - 5 IF Oft = 1 THEN Radi = 17 IF Oft = 2 THEN Radi = 27 FOR Radius = 1 TO Radi FOR Wi! = 0 TO 6.28 STEP .2 X = INT(SIN(Wi! + RND) * Radius + 50) Y = INT(COS(Wi! + RND) * Radius + 50) IF INT(RND * 50) + 1 > Oft * 5 THEN PSET (X, Y), 49 - INT(RND * Radius) NEXT NEXT FOR Mal = 1 TO 200 PSET (INT(RND * 94) + 4, INT(RND * 94) + 4), 0 NEXT FOR Mal = 1 TO 5 PSET (INT(RND * 94) + 4, INT(RND * 94) + 4), 0 NEXT Fortschritt = 25 / Bilder * Oft FOR Mal = 1 TO Fortschritt X = INT(RND * 94) + 4 Y = INT(RND * 94) + 4 Wert = 0 FOR XX = -3 TO 3 FOR YY = -3 TO 3 Wert = Wert + POINT(X + XX, Y + YY) NEXT NEXT IF INT(RND * 45) > Wert \ 49 THEN IF INT(RND * 3) + 1 = 1 THEN LightZones = LightZones - 1 IF DarkZones <= 128 THEN DarkZones = DarkZones + 1 DarkZentrX(DarkZones) = X DarkZentrY(DarkZones) = Y END IF NEXT FOR Mal = 1 TO DarkZones IF DarkZoneFar(Mal) < 5 THEN DarkZoneFar(Mal) = DarkZoneFar(Mal) + 1 + INT(RND * 2) FOR Radius = 1 TO DarkZoneFar(Mal) FOR Wi! = 0 TO 6.28 STEP .05 X = INT(SIN(Wi!) * Radius + DarkZentrX(Mal)) Y = INT(COS(Wi!) * Radius + DarkZentrY(Mal)) IF INT(RND * 10) + 1 > 9 THEN PSET (X, Y), 0 NEXT NEXT NEXT FOR Mal = 1 TO LightZones IF LightZoneFar(Mal) < 10 THEN LightZoneFar(Mal) = LightZoneFar(Mal) + 1 FOR Radius = 1 TO LightZoneFar(Mal) FOR Wi! = 0 TO 6.28 STEP .05 X = INT(SIN(Wi! + RND) * Radius + LightZentrX(Mal)) Y = INT(COS(Wi! + RND) * Radius + LightZentrY(Mal)) IF INT(RND * 10) + 1 > 9 AND INT(RND * 3) + 2 < Oft THEN PSET (X, Y), 35 NEXT NEXT NEXT FOR Mal = 1 TO Oft - 2 FOR Radius = 1 TO Oft FOR Wi! = 0 TO 6.28 STEP .3 X = INT(SIN(Wi! + RND * 1) * Radius + 50) Y = INT(COS(Wi! + RND * 1) * Radius + 50) IF INT(RND * 50) < 3 THEN PSET (X, Y), 0 NEXT NEXT NEXT FOR Radius = 55 - (Oft * 2) TO 70 STEP 1 FOR Wi! = 0 TO 6.28 STEP .01 X = INT(SIN(Wi! + RND) * Radius + 50) Y = INT(COS(Wi! + RND) * Radius + 50) IF INT(RND * 55) < Radius THEN PSET (X, Y), 0 NEXT NEXT LINE (0, 0)-(99, 99), 0, B LINE (1, 1)-(98, 98), 0, B LINE (2, 2)-(97, 97), 0, B FOR X = 1 TO 98 FOR Y = 1 TO 98 Wert = 0 FOR XX = -1 TO 1 FOR YY = -1 TO 1 Wert = Wert + POINT(X + XX, Y + YY) NEXT NEXT PSET (X + 100, Y), Wert \ 9 NEXT NEXT GET (100, 0)-(199, 99), Blk(0) PUT (0, 0), Blk(0), PSET FOR X = 1 TO 98 FOR Y = 1 TO 98 Wert = 0 FOR XX = -1 TO 1 FOR YY = -1 TO 1 Wert = Wert + POINT(X + XX, Y + YY) NEXT NEXT PSET (X + 100, Y), Wert \ 9 NEXT NEXT GET (100, 0)-(199, 99), Blk(0) PUT (0, 0), Blk(0), PSET DEF SEG = VARSEG(Blk(0)) BSAVE "Video." + RTRIM$(LTRIM$(STR$(Oft))), VARPTR(Blk(0)), 10002 DEF SEG NEXT Von = 3: Nach = Bilder UpOrDn = 1 DO FOR Oft = Von TO Nach STEP UpOrDn DEF SEG = VARSEG(Blk(0)) BLOAD "Video." + RTRIM$(LTRIM$(STR$(Oft))), VARPTR(Blk(0)) DEF SEG FOR X = 0 TO 200 STEP 100 FOR Y = 0 TO 100 STEP 100 PUT (X, Y), Blk(0), PSET NEXT NEXT Zeit! = TIMER DO Ink$ = INKEY$: IF Ink$ = CHR$(27) THEN EndThis = 1: EXIT FOR LOOP UNTIL TIMER - Zeit! >= .05 NEXT SWAP Von, Nach: UpOrDn = UpOrDn * -1 LOOP UNTIL EndThis SUB Pal (c%, r%, g%, B%) OUT &H3C7, c% OUT &H3C9, r% OUT &H3C9, g% OUT &H3C9, B% END SUB